【问题标题】:Export MySQL dump from AWS RDS via AWS Command Line通过 AWS 命令​​行从 AWS RDS 导出 MySQL 转储
【发布时间】:2017-01-14 16:23:51
【问题描述】:

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

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

我是 AWS 命令​​行的新手。请随意放弃建议和代码sn-ps。

谢谢!

【问题讨论】:

标签: mysql amazon-web-services amazon-s3 amazon-ec2 amazon-rds


【解决方案1】:
  • 在 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 中!

希望对你有帮助:)

【讨论】:

    【解决方案2】:

    您可以使用 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 作业。

    【讨论】:

    • 这是否足够快?我在一个数据库上有大约 100GB 的数据,我有大约 5 个这样的数据库,你认为这需要多长时间?
    猜你喜欢
    • 2021-08-04
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多