Задача: два 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"