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

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání
Bez shrnutí editace
Bez shrnutí editace
Řádek 3: Řádek 3:
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.


<pre>#!/bin/bash
<source lang="bash">#!/bin/bash


DB_USER=username
DB_USER=username
Řádek 11: Řádek 11:


mkdir ${TEMP_DIR}
mkdir ${TEMP_DIR}
cd ${TEMP_DIR}</pre>
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.
<pre>DB_PARAM="--skip-opt --add-drop-table --quick --set-charset --complete-insert"</pre>
<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=scheme_name
DB_SCHEME_NAME=scheme_name
echo ${DB_SCHEME_NAME}
echo ${DB_SCHEME_NAME}
Řádek 24: Řádek 24:
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</pre>
unlink ${TEMP_DIR}/${DB_SCHEME_NAME}.sql</source>


Předešlou část lze vložit do skriptu opakovaně pro různé schémata.
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.
Lze také provádět selektivní zálohu jen některých tabulek pomocí parametru --tables.
<source lang="bash">
<pre>
DB_SCHEME_NAME=scheme_name
DB_SCHEME_NAME=scheme_name
DB_TABLE_NAME=table_name
DB_TABLE_NAME=table_name
Řádek 36: Řádek 36:
echo komprese
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
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>
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
</pre>
</source>


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


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


/opt/bin/backup_db.sh >/opt/log/backup_db.log 2>/opt/log/backup_db.err</pre>
/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í.
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
<source lang="bash"># záloha databáze v denně 4:00
0 4 * * * root /opt/bin/backup_db.sh</pre>
0 4 * * * root /opt/bin/backup_db.sh</source>


[[Kategorie:Linux]]
[[Kategorie:Linux]]

Verze z 5. 2. 2011, 10:49

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