Probíhá hledání...

Hromadné zálohování vybraných MySQL nebo MariaDB databází

Ukážeme si jak zálohovat databázi MySQL nebo MariaDB, které jsou na stejném serveru, pomocí vlastního bash scriptu a nastavení cronu.

Zálohy databáze

Předpokládejme, že máme tři databáze na našem serveru a to například s názvem db-hukot-site, db-hukot-blog, db-hukot-app (nemusíte vytvářet tyto databáze).

1. Přihlaste se k databázi MySQL nebo MariaDB a vytvořte uživatelskou databázidb_user_backupspro zpracování záloh.

GRANT LOCK TABLES, SELECT ON *.*, SHOW VIEW ON *.*, REPLICATION CLIENT ON *.* TO 'db_user_backups'@'%' IDENTIFIED BY '{COMPLEX-PASSWORD}';
Spusťte - aby jste se ujistili že DB server je nakonfigurován tak, aby správně obnovil uložené procedury:SET GLOBAL log_bin_trust_function_creators = 1;
2. Nastavte strukturu a soubory záložního adresáře# vytvořte backup adresář a logovací soubor
sudo mkdir /backups && cd /backups
sudo touch .env db-backup.sh db-backup.log
sudo chmod -R 775 /backups
sudo chmod -R g+s /backups
sudo chmod +x db-backup.sh

echo "export MYSQL_USER=db_user_backups" > /backups/.env
echo "export MYSQL_PASS={COMPLEX-PASSWORD}" >> /backups/.env

3. Otevřte db-backup.shnano /backups/db-backup.sh
a vložte níže uvedený kód, poté soubor uložte (Ctrl + X -> R -> stiskněte klávesu Enter).DB_NAMES=( 'db-hukot-site' 'db-hukot-blog' 'db-hukot-app' ) #replace with your own database name(s)
BKUP_NAMES=()
BKUP_DIR="/backups"

# get total number of directories
total_dbs=${#DB_NAMES[@]}

# create backup file names
for (( i=0; i<${total_dbs}; i++ )); do
BKUP_NAMES[$i]="`date +%Y%m%d%H%M`-backup-$${DB_NAMES[$i]}.sql.gz"
done

# get backup users credentials
source $BKUP_DIR/.env

# create backups
for (( i=0; i<${total_dbs}; i++ )); do
# NOTE: --routines flag makes sure stored procedures are also backed up
mysqldump --routines -u ${MYSQL_USER} -p${MYSQL_PASS} | gzip > ${BKUP_DIR}/${BKUP_NAMES[$i]}
done
Výše uvedený kód je pole s názvem databáze, které chcete zálohovat.

Nastavení Cronjob

Nastavte cronjob tak, aby každý den o půlnoci spustil skript zálohování a uložil výsledek/výstup do logu zálohování.

1. otevřete crontabcrontab -e
2. Po otevření crontab přidejte:0 0 * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
Poznámka: Příkazem níže můžete nastavit cronjob, aby se pro testování spustil každou minutu.* * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
Nebo každých 5 minut (popřípadě nahraďte 5 počtem minut, které chcete)*/5 * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log

Komentáře

Pro odeslání komentáře je nutno být přihlášen