Система резервного копирования и восстановления данных для MySql
mysql_utils shell script!
Система написана на shell скрипте bash. Для создания резервных копий используется mysqldump. Для создания архивов используется bz2.
Установка
- cd ~
- cd mysql_utils
Настройка
Для debian систем настройка будет выполнена автоматически. Для остальных необходимо создать файл.
- # nano /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = master-password socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = master-password socket = /var/run/mysqld/mysqld.sock basedir = /usr
Сохранение всех баз
По умолчанию упаковывается bzip2 c параметром –compress=bzip2
# cd ~ # cd mysql_utils # bash backup.sh --compress=bzip2 --exclude="mysql"
Запуск справки по скрипту
# bash backup.sh --help
usage: backup.sh options
This script buckup all databases.
Usage: backup.sh <[options]>
Options:
-e= | --exclude= Exclude databases
--exclude-tables= Exclude tables
-c= | --compress= Compress with gzip or bzip2
-v | --verbose Add verbose into output
-l | --lifetime= Lifetime for dump files
--config= Config file of Debian format
--dir= Backup directory
-h | --help This text
Examples:
backup.sh --verbose --compress=
backup.sh --verbose --compress=zgip
backup.sh --verbose --compress=bzip2
backup.sh --verbose --compress= --exclude="mysql"
backup.sh --verbose --compress= --exclude="mysql" --lifetime="3 day ago"
backup.sh --verbose --config="/etc/mysql/debian.cnf" --exclude="mysql" --lifetime="1 day ago"
backup.sh --verbose --dir="/var/backups/mysql" --config="/etc/mysql/debian.cnf" --exclude="mysql" --lifetime="1 day ago"
backup.sh --verbose --dir="/home/backups/mysql" --exclude="mysql" --lifetime="1 day ago"
backup.sh --verbose --dir="/home/backups/mysql" --exclude="mysql" --exclude-tables="tbl_template" --lifetime="1 day ago"
Восстановление баз за указанную дату
По умолчанию запакован c параметром –compress=bzip2
# cd /var/backups/mysql/[some date] # bash ~/mysql_utils/restore.sh
Восстановление выбранной БД
По умолчанию запакован c параметром –compress=bzip2
# cd /var/backups/mysql/[some date]/[some db name] # bash ~/mysql_utils/restore_db.sh
Установка заданий в cron
nano /etc/default/db_backup
START=yes
nano /etc/cron.daily/db_backup
#!/bin/sh
. /etc/default/db_backup
if [ "$START" = "yes" ]; then
logger "Start databases backup system..."
/bin/bash /root/scripts/mysql_utils/backup.sh --exclude="some_exclude_database"
fi
Проверка работы скрипта
# tail -f /var/log/syslog
May 23 12:25:34 db1 logger: BACKUP: ** Dump tecdoc.2013.ALI_COORD
May 23 12:25:35 db1 logger: BACKUP: ** set perm on tecdoc.2013/AL
May 23 12:25:35 db1 logger: BACKUP: ** bzip2 tecdoc.2013/ALI_COOR
May 23 12:25:35 db1 logger: BACKUP: ** Dump tecdoc.2013.ARTICLES
May 23 12:25:43 db1 logger: BACKUP: ** set perm on tecdoc.2013/AR
May 23 12:25:43 db1 logger: BACKUP: ** bzip2 tecdoc.2013/ARTICLES
May 23 12:25:43 db1 logger: BACKUP: ** Dump tecdoc.2013.ARTICLES_
May 23 12:25:43 db1 logger: BACKUP: ** set perm on tecdoc.2013/AR
May 23 12:25:43 db1 logger: BACKUP: ** bzip2 tecdoc.2013/ARTICLES
May 23 12:25:43 db1 logger: BACKUP: ** Dump tecdoc.2013.ARTICLE_C