繁体   English   中英

通过 AWS 命令行从 AWS RDS 导出 MySQL 转储

[英]Export MySQL dump from AWS RDS via AWS Command Line

我正在尝试从 AWS RDS 自动获取 MySQL 备份。 我认为使用 AWS 命令行会很有用,我可以在 EC2 Red Hat 上使用 crontab 来自动触发事件。

现在的问题是:我如何连接到 RDS,备份 MySQL,将它放在 EC2 上或复制到 S3 并让它每晚运行。

我是 AWS 命令行的新手。 请随意放弃建议和代码片段。

谢谢!

  • 在EC2实例上,创建一个cron.sh文件,并将其放在内容下方。

    mysqldump -h RDS_ENPOINT -u MASTER_USER_DATABASE -p DATABASE_NAME > /backup/bkp.$(date +%Y%m%d).sql

  • 创建其他文件move_to_s3.sh并放在内容下方

      #!/bin/bash echo "starting upload to s3 ..." TODAY=$(date +%Y%m%d); month=$(date +"%m"); year=$(date +"%Y"); bucket="mybkp" file="$year/$month/bkp.$TODAY.tar" filepath="/backup/bkp.$TODAY.tar" resource="/${bucket}/${file}" contentType="application/x-compressed-tar" dateValue=`date -R` stringToSign="PUT\\n\\n${contentType}\\n${dateValue}\\n${resource}" s3Key=AKIAI7BE3RKNSsdfsdfASF s3Secret=sdfksdfkJsdfgd76sdfkljhdfsdfsdfsdf signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`; RESPONSE=$(curl -w "%{http_code}" -s -X PUT -T "${filepath}" \\ -H "Host: ${bucket}.s3.amazonaws.com" \\ -H "Date: ${dateValue}" \\ -H "Content-Type: ${contentType}" \\ -H "Authorization: AWS ${s3Key}:${signature}" \\ https://${bucket}.s3.amazonaws.com/${file} -o /dev/null $1); echo $RESPONSE; if [ $RESPONSE -ne 200 ] ; then echo "There was an issue in transfering DB dbbackup file to S3. Noticed Error Code: $RESPONSE" | mail -s "Issue on transfer to S3" test@gmail.com; else rm $filepath; fi echo "finished upload."` 

半小时内将两者都设置为cron!

希望能帮助到你 :)

您可以使用mysqldump直接从EC2进行备份。

  1. 编辑RDS实例的安全组入站规则

    类型:Mysql / Aurora

    协议:TCP

    端口范围:3306

    来源:自定义EC2_SECURITY_GROUP_ID

    示例(来源:自定义sg_451caa43)

  2. 使用SSH连接到EC2实例:

    [MacBook-Pro: user]$ ssh -i keypair.pem ec2-user@PUBLIC_IP

  3. 在EC2实例中安装mysql-client:

    [ec2-user@ip-170-10-20-30]$ sudo yum install mysql

  4. 尝试mysqldump命令

[ec2-user@ip-170-10-20-30]$ mysqldump -h RDS_ENPOINT -u MASTER_USER_DATABASE -p DATABASE_NAME > backup.sql

[ec2-user@ip-170-10-20-30]$ mysqldump -h db_test.cdsludsd.us-west-2.rds.amazonaws.com -u admin -p my_database > backup_my_database.sql
  1. 创建cron作业。

我们应该避免分两步导出和上传到 s3。

对于更大的DB,我建议使用下面的命令直接上传文件到S3,不占用本地空间

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

例如

mysqldump -h $HOST -u $USER -p $PASSWORD $DB_NAME --routines --single-transaction | gzip | aws s3 cp - s3://bucket/exportfile.sql.gz

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM