Автоматическое резервное копирование базы данных Mysql на сервер Amazon s3 с использованием скрипта и crontab - proUbuntu
0 голосов
от
редактировать

Я новичок в этой концепции, поэтому кто-то может подсказать мне код скрипта и правильное использование crontab при резервном копировании базы данных на сервер amazon s3 в нужное время. Я пролистал разные ссылки, но ни одна из них не объяснила, как происходит резервное копирование. И я использую Ubuntu 14.04lts.

Ответы [ 2 ]

0 голосов
от
редактировать

Предполагая, что вы установили aws-cli (и у машины есть роль IAM с разрешением на загрузку на S3) и mysqldump на машине, на которой вы хотите запустить задание cron, я делаю это так:

mysqldump --defaults-file="path_to_config_file_with_password" -u db_user -h db_hostname db_name_you_need_backup | gzip -9 > db_name.sql.gz;
now=$(date +"%m_%d_%Y")
aws s3 cp db_name.sql.gz s3://bucket_name/dbs/db_name_$now.sql.gz
0 голосов
от
редактировать

Некоторые основы

хроны

Пользователь может использовать утилиту crontab для редактирования своего crontab. Демон cron будет использовать все crontabs и запускать команды с заданным интервалом. Запись в crontab в основном выглядит так:

* * * * * /path/to/some/command

MySQL Backup

Резервное копирование базы данных MySQL может быть достигнуто различными способами; в зависимости от механизма базы данных и количества данных могут применяться различные инструменты и варианты. Основным способом резервного копирования базы данных будет использование mysqldump:

# mysqldump -u USERNAME -pPASSWORD -h HOSTNAME -P PORTNUMBER DATABASENAME > DATABASENAME.sql

Как сделать резервную копию MySQL с помощью Cron

Чтобы создавать резервные копии каждый вечер субботы в 22:00, используйте эти два инструмента вместе (и дополнительно перенесите их в s3), чтобы сформировать запись в crontab, подобную этой:

00 10 * * 1 /usr/bin/mysqldump -u USERNAME -pPASSWORD -h HOSTNAME -P PORTNUMBER DATABASENAME > DATABASENAME_$(date '+%F').sql && aws s3 cp DATABASENAME_$(date '+%F').sql s3://BUCKETNAME/db_backups/DATABASENAME_$(date '+%F').sql
...