Назад | Перейти на главную страницу

Linux server - резервная производственная база данных

Я создал сценарий для резервного копирования производственной базы данных. Мой первоначальный подход заключался в создании резервной копии самого каталога 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