Резервное копирование баз данных MySQL в Bareos

Резервное копирование баз данных 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"
# MYSQLDUMP="mysqldump --single-transaction --quick"

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

# удаляем все бэкапы старше 5 дней
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.