Я создал сценарий для резервного копирования производственной базы данных. Мой первоначальный подход заключался в создании резервной копии самого каталога mysql (/ var / lib / mysql), но другие пользователи не одобряли его.
Сценарий очень прост, если знания сценария оболочки очень базовые.
#!/bin/bash
# backup file
backupFile="backup_$(date +%d%m%Y_%H%M).sql"
# create the backup file using mysqldump
/usr/bin/mysqldump -uuser -ppass db > /home/user/db_backups/$backupFile
# copy the backup file to the remote server
rsync -e ssh -varuzP /home/user/db_backups/ user@remoteserver:/home/user/backup/mysql
Прежде всего, хотелось бы узнать ваше мнение о сценарии. Во-вторых, я хотел бы также знать, проверяет ли rsync каким-либо образом возможное повреждение файла во время передачи между производственным сервером и удаленным сервером резервного копирования.
Заранее спасибо за помощь, С уважением!
Следует избегать mysqldump с большой базой данных по соображениям производительности и целостности. Вы можете настроить реплику и сделать резервную копию на ведомом устройстве.
Поискав в Интернете, вы найдете множество статей о резервном копировании mysql.
По крайней мере, ваш сценарий прост и понятен.
Один из способов проверить, в порядке ли rsync, - это сравнить md5sums.
LOCALCOPY=`md5sum /home/user/db_backups/$backupFile`
REMOTECOPY=`ssh user@remoteserver md5sum /home/user/backup/mysql/$backupfile`
if [ $LOCALCOPY == $REMOTECOPY ]; then echo "Checksum OK"; else echo "Checksum ERROR. Eep."; fi
Или что-то в этом роде, на самом деле не проверял.
Сценарий мне нравится, но вы можете подумать о настройке циклической системы, в которой старые резервные копии перезаписываются (тем самым используя все преимущества rsync). Что касается проверки коррупции, я считаю, что rsync сделает это автоматически, если вы используете --checksum
вариант.
Если вы не планируете наблюдать за выводом или передавать его в файл, я бы не советовал использовать --verbose
вариант. Кроме того, нет необходимости в -a
и -r
все вместе:
-a, --archive
Это эквивалентно -rlptgoD.
См. Также вопрос о StackOverflow: Обеспечение целостности данных mysqldump <-> rsync