我对这个概念还不熟悉,所以有人能指导我脚本代码细节和在所需时间将数据库备份到 amazon s3 服务器时 crontab 的正确用法吗?我浏览了不同的链接,但没有一个能解释备份是如何进行的。我使用的是 ubuntu 14.04lts。
答案1
一些基础知识
计划任务
用户可以利用 crontab 实用程序来编辑自己的 crontab。cron 守护程序将使用所有 crontab 并以定义的间隔运行命令。crontab 条目基本上如下所示:
* * * * * /path/to/some/command
mysql 备份
mysql 数据库的备份可以通过多种方法实现;根据数据库引擎和数据量,可以使用不同的工具和变体。备份数据库的最基本方法是使用mysqldump
:
# mysqldump -u USERNAME -pPASSWORD -h HOSTNAME -P PORTNUMBER DATABASENAME > DATABASENAME.sql
如何使用 Cron 备份 MySQL
为了在每个星期六晚上 10 点进行备份,请将这两个工具一起使用(并将其另外传输到 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
答案2
假设您已经在要运行 cron 作业的机器中安装了 aws-cli(并且该机器具有具有上传到 S3 权限的 IAM 角色)和 mysqldump,这是我执行的方式:
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