2016-09-07 164 views
0

我试图从AWS RDS自动获取MySQL备份。我认为使用AWS命令行会很有帮助,我可以在EC2 Red Hat上使用crontab来自动触发事件。通过AWS命令行从AWS RDS导出MySQL转储

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

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

谢谢!

+0

可能重复的[MySQL定期备份MySQL数据](http:// stackoverflow。COM /问题/ 38916163/PHP的常规备份的MySQL的数据) – e4c5

回答

2

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

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

    类型:MySQL /极光

    协议:TCP

    端口范围:3306

    来源:自定义EC2_SECURITY_GROUP_ID

    实施例(来源:定制sg_451caa43)

  2. 连接到EC2实例与SSH:

    [MacBook-Pro: user]$ ssh -i keypair.pem [email protected]_IP

  3. 在EC2实例中安装的MySQL的客户端:

    [[email protected]]$ sudo yum install mysql

  4. 尝试mysqldump的命令

[[email protected]]$ mysqldump -h RDS_ENPOINT -u MASTER_USER_DATABASE -p DATABASE_NAME > backup.sql

[[email protected]]$ mysqldump -h db_test.cdsludsd.us-west-2.rds.amazonaws.com -u admin -p my_database > backup_my_database.sql 
  • 创建计划作业。
  • 3
    • 在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" [email protected]; 
          else 
           rm $filepath; 
          fi 
          echo "finished upload."` 
      

    都设置在cron在半小时的距离!

    希望它有帮助:)