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

Создание резервной копии с помощью mysqldump и размещение ее на другом сервере (Bash)

Я использую задание cron для ежечасного резервного копирования, и теперь я хочу по умолчанию сбросить эти резервные копии на другой сервер.

Мой сценарий следующий:

mysqldump -u db_user -p db_password db_name| gzip > /current/path/for/backups/backup_$(date).sql.gz

Что я могу сделать, чтобы изменить текущий путь на новый путь на другом сервере?

Вы можете создать общую папку в месте назначения и смонтировать ее на сервере mysql, а затем указать путь назначения в сценарии к этой смонтированной папке. Это должно сработать. В качестве альтернативы вы можете инициировать scp-соединение для копирования содержимого на целевой сервер.

Как я обычно это делаю: bakup, копирование на другой сервер, а затем удаление из источника

mysqldump -u db_user -p db_password db_name| gzip > /current/path/for/backups/backup_$(date).sql.gz;

#Searching, moving to other server and deleting backup files from source.
cd /current/path/for/backups/backup_$(date).sql.gz;
for f in *.gz
do
    scp -pr $f hostnameofotherserver:/destination/path/mysql/backup
    wait
    echo "Removing $f..."
    rm -f $f
done

Для справки на Настройка ключа SSH (каждый раз без пароля)

http://blog.secaserver.com/2011/07/mysql-daily-backup-and-transfer-to-other-server/

https://www.digitalocean.com/community/tutorials/how-to-create-an-off-site-backup-of-your-site-with-rsync-on-centos-6

Если вы не хотите хранить файл на своем локальном компьютере, вы можете попробовать что-то вроде этого:

mysqldump -u db_user -p db_password db_name| ssh user@example.com "cat > /path/to/dump.sql"

Чтобы сжать файл перед передачей (ssh также попытается сжать свой трафик):

mysqldump -u db_user -p db_password db_name| gzip  | ssh user@example.com "cat > /path/to/dump.sql.gz"

Возможно, в вашей удаленной системе cat автоматически распакует поток, если вы направите его в файл с именем .gz. В этом случае просто используйте другой суффикс.