Как сделать резервную копию базы данных MySQL и поместить ее в Amazon s3 каждую ночь с помощью вкладки Cron? - PullRequest
2 голосов
/ 30 мая 2011

У меня есть один сервер в Rackspace, и я уже выполняю задание cron каждый день, чтобы что-то обработать ... (некоторая операция, связанная с учетной записью - которая будет отправлять мне электронную почту каждую полночь).мое приложение в Groovy на Grails.теперь я хочу делать резервную копию базы данных mysql (называемой myfleet) каждую ночь и помещать этот файл в Amezon S3.Как я могу это сделать?мне нужно написать какой-либо файл Java или Groovy для обработки этого?или это можно сделать из самой коробки Linux?У меня уже есть аккаунт в Amezon S3 (имя корзины - fleetBucket)

Ответы [ 4 ]

2 голосов
/ 30 мая 2011

Должно быть довольно просто:
- резервное копирование базы данных с помощью mysqldump

mysqldump -u [uname] -p[pass] myfleet | gzip -9 > myfleet.sql.gz  

- загрузка файла дампа в S3 с помощью клиента командной строки (например, http://s3tools.org/s3cmd:
s3cmd put myfleet.sql.gz s3://<bucketname>/myfleet.sql.gz

Просто добавьте это в вашу работу cron (вы можете использовать какую-то схему нумерации для файлов дампа, если вы хотите сохранить несколько версий).

1 голос
/ 31 августа 2018
mysqldump --host=$HOST --user=$USER --password=$PASSWORD $DB_NAME --routines --single-transaction | gzip -9 | aws s3 cp - s3://bucket/database/filename.sql.gz

будет напрямую сохранять файл в s3.

1 голос
/ 04 апреля 2018

Вы также можете использовать STDOUT и AWS CLI , чтобы передать вывод вашего mysqldump прямо на S3:

mysqldump -h [db_hostname] -u [db_user] -p[db_passwd] [databasename] | aws s3 cp - s3://[s3_bucketname]/[mysqldump_filename]

Например:

mysqldump -h localhost -u db_user -ppassword test-database | aws s3 cp - s3://database-mysqldump-bucket/test-database-dump.sql

Команда mysqldump выводит в STDOUT по умолчанию.Использование - в качестве входного аргумента для aws s3 cp указывает инструменту CLI AWS использовать STDIN для ввода.

0 голосов
/ 02 мая 2019

Если исходная БД находится на AWS и имеет тип Aurora.Mysql, вы можете выполнить резервное копирование непосредственно на S3 с помощью команды, подобной

SELECT * FROM employees INTO OUTFILE S3 's3-us-west-2://aurora-select-into-s3-pdx/sample_employee_data';

Подробнее см. https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.SaveIntoS3.html.

...