Резервное копирование баз данных MySQL в Bareos
Roman Bogachev
VMware Specialist | Drone Pilot | Traveler
Выполняем бэкапы баз данных MySQL в систему резервного копирования Bareos
Резервное копирование баз данных MySQL осуществляется по тому же принципу, как мы настраивали резервное копирование образов виртуальных серверов из Ceph RBD
Шаг 1. Добавим скрип резервного копирования баз данных Создаём папки mkdir -p /root/database_backup /root/scripts
Добавим скрипты для бэкапа базы данных и очищения по завершении работы. Скрипты можно использовать свои. В моем примере рассмотрен вариант ежедневного резервного копирование баз данных с сохранением последних 5 копий на сервере.
db_backup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/sh DATE=`date "+%Y_%m_%d" ` LOGIN="root" PASSWORD="YOUR_PASSWORD" SQL_PATH="/root/database_backup/" MYSQLDUMP="mysqldump" databases=(my_database your_database system_db) for database in "${databases[@]} " do echo "MySQL backup database: ${database} " $MYSQLDUMP -q -u$LOGIN -p$PASSWORD $database > ${SQL_PATH} ${database} .sql gzip -9 -c ${SQL_PATH} ${database} .sql > ${SQL_PATH} ${database} _${DATE} .sql.gz done
db_remove.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/sh SQL_PATH="/root/database_backup/" databases=(my_database your_database system_db) for database in "${databases[@]} " do echo "MySQL remove database: ${database} " rm ${SQL_PATH} ${database} .sql done find ${SQL_PATH} -type f -mtime +5 -exec rm -f {} \;
Шаг 2. Добавим новый набор файлов (Fileset) 1 2 3 4 5 6 7 8 9 10 11 12 13 FileSet { Name = "DB_MyServer" Include { Options { Signature = MD5 Compression = LZ4 noatime = yes } File = /root/database_backup/my_database.sql.gz File = /root/database_backup/your_database.sql.gz File = /root/database_backup/system_db.sql.gz } }
Шаг 3. Добавим задание (Job) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Job { Name = "DB_MyServer" Type = Backup Client = "msk-stg.bogachev.biz" Schedule = "DailyDB" Storage = "BackupStorage" FileSet = "DB_MyServer" Messages = Telegram Pool = DailyDB Priority = 10 Write Bootstrap = "/var/lib/bareos/%c.bsr" ClientRunBeforeJob = "/root/scripts/db_backup.sh" ClientRunAfterJob = "/root/scripts/db_remove.sh" }
По итогу выполняется скрипт db_backup.sh
который выполняет резервное копирование баз данных с сохранением их в .sql
файл, который забирает Bareos , а также выполняет архивирование файлов и помещает в директорию database_backup
. По завершении копирования выполняется скрипт db_remove.sh
, который удаляет .sql
файлы и производит очистку архивов старше 5 дней в директории database_backup
.