Periodické zálohování databáze
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