Задача: два 8.0.22 MySQL Community Server в среде Oracle Linux Server release 7.9, настроена Master-Slave репликация. ВАЖНО ЗНАТЬ, что репликация это не резервное копирование, необходимо настроить на слейве резервирование всех баз. В среде с небольшими базами данных и наличием технологического окна для резервирования можно воспользоваться mysqldump.
Скрипт:
- автоматически вычисляет список баз данных, резервирует их, кроме указанных в исключении
- удаляет бэкапы старше 28 дней
- ведет лог и сохраняет в лог список установленных пакетов
#!/bin/bash
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/srv/sqlbackup/$TIMESTAMP"
MYSQL_USER="backupuser"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="PASSW0RD"
MYSQLDUMP=/usr/bin/mysqldump
HOST=127.0.0.1
/bin/find '/srv/sqlbackup/' -type d -ctime +28 -exec rm -rf {} \;
/bin/mkdir -p "$BACKUP_DIR"
/usr/bin/rpm -qa >> "$BACKUP_DIR"/rpm-list.txt
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev \
"(Database|information_schema|performance_schema)"`
for db in $databases;
do
$MYSQLDUMP --force --routines --triggers --opt -h $HOST --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
