Periodické zálohování databáze: Porovnání verzí

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání
(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
Řá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.


Řádek 17: Řádek 19:


<pre>
<pre>
DB_SCHEME_NAME=db_scheme
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
Řádek 24: Řádek 26:
unlink ${TEMP_DIR}/${DB_SCHEME_NAME}.sql</pre>
unlink ${TEMP_DIR}/${DB_SCHEME_NAME}.sql</pre>


Předešlou část lze vložit do skriptu opakovaně pro různé schmata a
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.
<pre>
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</pre>


Nakonec lze odstranit dočasný adresář.
Nakonec lze odstranit dočasný adresář.
Řádek 31: Řádek 43:
rmdir /tmp/backup
rmdir /tmp/backup
</pre>
</pre>

==Periodické spouštění==

Periodické spouštění lze pak provést pomocí vložení volacího skriptu do adresáře /etc/cron.daily/
<pre>
#!/bin/sh

/opt/bin/backup_db.sh >/opt/log/backup_db.log 2>/opt/log/backup_db.err</pre>

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í.
<pre># záloha databáze v denně 4:00
0 4 * * * root /opt/bin/backup_db.sh</pre>

Verze z 31. 1. 2010, 10:20

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