如何使用Cron选项卡每晚进行MySQL数据库备份并将其放在Amazon s3中?

问题描述

| 我在Rackspace中有一台服务器,并且我已经在每天晚上运行一个cron作业来处理某些事情……(某些与帐户相关的操作,该操作会在每个深夜发送给我电子邮件)。我的应用程序在grails上很麻烦。现在我想在每个午夜备份MysqL数据库(称为myfleet),并将该文件放入Amezon S3中。我怎样才能做到这一点?我需要写任何Java或Groovy文件来处理吗?还是可以从Linux盒本身完成?我已经在Amezon S3中获得了帐户(存储桶名称为FleetBucket)     

解决方法

        应该很简单: -使用mysqldump备份数据库
mysqldump -u [uname] -p[pass] myfleet | gzip -9 > myfleet.sql.gz  
-使用命令行客户端(例如http://s3tools.org/s3cmd将您的转储文件上传到S3:
s3cmd put myfleet.sql.gz s3://<bucketname>/myfleet.sql.gz
只需将其添加到您的cron作业中即可(如果您希望保留多个版本,则可能要对转储文件使用某种编号方案)。     ,        您还可以使用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
的输入参数,会告诉AWS CLI工具使用STDIN作为输入。     ,        
mysqldump --host=$HOST --user=$USER --password=$PASSWORD $DB_NAME --routines --single-transaction | gzip -9 | aws s3 cp - s3://bucket/database/filename.sql.gz
将直接将文件存储到s3。     ,        如果源数据库位于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。