Periodické zálohování databáze: Porovnání verzí
(Založena nová stránka: Pro pravidelné zálohování lze vytvořit zálohovací skript, který lze pak periodicky spouštět pomocí Crona. <pre>#!/bin/bash DB_USER=username DB_PASS=password TE…) |
Bez shrnutí editace |
||
(Nejsou zobrazeny 3 mezilehlé verze od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
==Zálohovací skript== |
|||
Pro pravidelné zálohování lze vytvořit zálohovací skript, který lze pak periodicky spouštět pomocí Crona. |
Pro pravidelné zálohování lze vytvořit zálohovací skript, který lze pak periodicky spouštět pomocí Crona. |
||
< |
<source lang="bash">#!/bin/bash |
||
DB_USER=username |
DB_USER=username |
||
Řádek 9: | Řádek 11: | ||
mkdir ${TEMP_DIR} |
mkdir ${TEMP_DIR} |
||
cd ${TEMP_DIR}</ |
cd ${TEMP_DIR}</source> |
||
Lze si vytvářet různé proměnné pro upřesnění parametrů programu mysqldump a volit tak např. complete nebo extended insert. |
Lze si vytvářet různé proměnné pro upřesnění parametrů programu mysqldump a volit tak např. complete nebo extended insert. |
||
< |
<source lang="bash">DB_PARAM="--skip-opt --add-drop-table --quick --set-charset --complete-insert"</source> |
||
Dále lze pro každé schema databáze provádět zálohu do komprimovaného souboru. Do jmen souborů je vkládáno časové razitko ve formě aktuálního data. |
Dále lze pro každé schema databáze provádět zálohu do komprimovaného souboru. Do jmen souborů je vkládáno časové razitko ve formě aktuálního data. |
||
<source lang="bash"> |
|||
<pre> |
|||
DB_SCHEME_NAME= |
DB_SCHEME_NAME=scheme_name |
||
echo ${DB_SCHEME_NAME} |
echo ${DB_SCHEME_NAME} |
||
mysqldump --user=${DB_USER} --password=${DB_PASS} ${DB_SCHEME_NAME} ${DB_PARAM} > ${DB_SCHEME_NAME}.sql |
mysqldump --user=${DB_USER} --password=${DB_PASS} ${DB_SCHEME_NAME} ${DB_PARAM} > ${DB_SCHEME_NAME}.sql |
||
echo komprese |
echo komprese |
||
tar -c -z ${DB_SCHEME_NAME}.sql > ${TARGET_DIR}/${DB_SCHEME_NAME}/${DB_SCHEME_NAME}_$(date +"%Y-%m-%d").tar.gz |
tar -c -z ${DB_SCHEME_NAME}.sql > ${TARGET_DIR}/${DB_SCHEME_NAME}/${DB_SCHEME_NAME}_$(date +"%Y-%m-%d").tar.gz |
||
unlink ${TEMP_DIR}/${DB_SCHEME_NAME}.sql</ |
unlink ${TEMP_DIR}/${DB_SCHEME_NAME}.sql</source> |
||
Předešlou část lze vložit do skriptu opakovaně pro různé |
Předešlou část lze vložit do skriptu opakovaně pro různé schémata. |
||
Lze také provádět selektivní zálohu jen některých tabulek pomocí parametru --tables. |
|||
<source lang="bash"> |
|||
DB_SCHEME_NAME=scheme_name |
|||
DB_TABLE_NAME=table_name |
|||
echo ${DB_SCHEME_NAME}_${DB_TABLE_NAME} |
|||
mysqldump --user=${DB_USER} --password=${DB_PASS} --databases ${DB_SCHEME_NAME} --tables ${DB_TABLE_NAME} ${DB_PARAM} > ${DB_SCHEME_NAME}_${TABLE_NAME}.sql |
|||
echo komprese |
|||
tar -c -z ${DB_SCHEME_NAME}_${DB_TABLE_NAME}.sql > ${TARGET_DIR}/${DB_SCHEME_NAME}/${DB_SCHEME_NAME}_${DB_TABLE_NAME}_db_$(date +"%Y-%m-%d").tar.gz |
|||
unlink ${TEMP_DIR}/${DB_SCHEME_NAME}.sql</source> |
|||
Nakonec lze odstranit dočasný adresář. |
Nakonec lze odstranit dočasný adresář. |
||
<source lang="bash"> |
|||
<pre> |
|||
echo hotovo |
echo hotovo |
||
rmdir /tmp/backup |
rmdir /tmp/backup |
||
</ |
</source> |
||
==Periodické spouštění== |
|||
Periodické spouštění lze pak provést pomocí vložení volacího skriptu do adresáře /etc/cron.daily/ |
|||
<source lang="bash"> |
|||
#!/bin/sh |
|||
/opt/bin/backup_db.sh >/opt/log/backup_db.log 2>/opt/log/backup_db.err</source> |
|||
Případně také do adresáře /etc/cron.d vložit soubor pojmenovaný např. backup a nastavit si tak lépe čas spouštění. |
|||
<source lang="bash"># záloha databáze v denně 4:00 |
|||
0 4 * * * root /opt/bin/backup_db.sh</source> |
|||
==Související== |
|||
* [[Zálohování MySQL pomocí Subversion]] |
|||
[[Kategorie:Linux]] |
Aktuální verze z 23. 2. 2013, 11:41
Zálohovací skript
Pro pravidelné zálohování lze vytvořit zálohovací skript, který lze pak periodicky spouštět pomocí Crona.
#!/bin/bash
DB_USER=username
DB_PASS=password
TEMP_DIR=/tmp/backup
TARGET_DIR=/var/backup
mkdir ${TEMP_DIR}
cd ${TEMP_DIR}
Lze si vytvářet různé proměnné pro upřesnění parametrů programu mysqldump a volit tak např. complete nebo extended insert.
DB_PARAM="--skip-opt --add-drop-table --quick --set-charset --complete-insert"
Dále lze pro každé schema databáze provádět zálohu do komprimovaného souboru. Do jmen souborů je vkládáno časové razitko ve formě aktuálního data.
DB_SCHEME_NAME=scheme_name
echo ${DB_SCHEME_NAME}
mysqldump --user=${DB_USER} --password=${DB_PASS} ${DB_SCHEME_NAME} ${DB_PARAM} > ${DB_SCHEME_NAME}.sql
echo komprese
tar -c -z ${DB_SCHEME_NAME}.sql > ${TARGET_DIR}/${DB_SCHEME_NAME}/${DB_SCHEME_NAME}_$(date +"%Y-%m-%d").tar.gz
unlink ${TEMP_DIR}/${DB_SCHEME_NAME}.sql
Předešlou část lze vložit do skriptu opakovaně pro různé schémata.
Lze také provádět selektivní zálohu jen některých tabulek pomocí parametru --tables.
DB_SCHEME_NAME=scheme_name
DB_TABLE_NAME=table_name
echo ${DB_SCHEME_NAME}_${DB_TABLE_NAME}
mysqldump --user=${DB_USER} --password=${DB_PASS} --databases ${DB_SCHEME_NAME} --tables ${DB_TABLE_NAME} ${DB_PARAM} > ${DB_SCHEME_NAME}_${TABLE_NAME}.sql
echo komprese
tar -c -z ${DB_SCHEME_NAME}_${DB_TABLE_NAME}.sql > ${TARGET_DIR}/${DB_SCHEME_NAME}/${DB_SCHEME_NAME}_${DB_TABLE_NAME}_db_$(date +"%Y-%m-%d").tar.gz
unlink ${TEMP_DIR}/${DB_SCHEME_NAME}.sql
Nakonec lze odstranit dočasný adresář.
echo hotovo
rmdir /tmp/backup
Periodické spouštění
Periodické spouštění lze pak provést pomocí vložení volacího skriptu do adresáře /etc/cron.daily/
#!/bin/sh
/opt/bin/backup_db.sh >/opt/log/backup_db.log 2>/opt/log/backup_db.err
Případně také do adresáře /etc/cron.d vložit soubor pojmenovaný např. backup a nastavit si tak lépe čas spouštění.
# záloha databáze v denně 4:00
0 4 * * * root /opt/bin/backup_db.sh