You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Aurora MySQL导出复制数据遇权限及Reader实例问题求助

Aurora MySQL导出数据用于外部复制的解决方案

为什么mysqldump --master-data=1会报错?

Aurora MySQL不允许给普通用户授予SUPER权限,而--master-data=1会自动执行FLUSH TABLES WITH READ LOCK和SHOW MASTER STATUS,这些操作需要RELOAD和REPLICATION CLIENT权限,普通用户没有这些权限,所以触发1045权限错误。

关于Aurora的「Add a reader」选项

AWS Aurora里的「Add a reader」创建的就是官方文档提到的只读副本,只是控制台命名不同。Reader节点会实时同步主实例数据,你看到的「replica latency」就是复制延迟的证明——它本质就是只读副本,并非“具备只读权限的主实例”,只是Aurora的集群架构让它看起来和主实例形态相似。

正确的导出步骤(用于启动外部复制)

方法1:通过Reader节点导出

  1. 暂停Reader节点的复制
    登录AWS控制台,找到你的Aurora集群,选中Reader实例,进入「Actions」→「Stop replication」,让节点暂停同步主实例,保持当前数据状态。
  2. 执行mysqldump并获取复制位点
    直接在Reader节点上执行导出(无需加锁,因为节点本身只读):
    mysqldump -h <reader节点端点> -u <用户名> -p --single-transaction --databases <要导出的数据库名> > dump.sql
    
    接着连接Reader节点,执行SHOW MASTER STATUS;,记录返回的File(binlog文件名)和Position(偏移量)——Aurora的binlog文件名格式一般是aurora-binlog.000001这类。
  3. 恢复Reader节点复制(可选)
    如果还需要这个Reader节点继续同步主实例,回到控制台选「Actions」→「Start replication」即可。

方法2:直接在主实例上导出(无需Reader节点)

通过开启一致性快照事务绕过锁的限制:

  1. 开启事务并记录复制位点
    连接主实例,执行以下SQL,不要关闭这个连接:
    START TRANSACTION WITH CONSISTENT SNAPSHOT;
    SHOW MASTER STATUS;
    
    把File和Position的值记下来。
  2. 执行mysqldump
    在另一个终端运行导出命令:
    mysqldump -h <主实例端点> -u <用户名> -p --single-transaction --databases <要导出的数据库名> > dump.sql
    
  3. 提交事务释放资源
    回到之前的SQL连接,执行COMMIT;。

启动外部实例的复制

  1. 导入dump文件
    在目标MySQL实例上运行:
    mysql -h <目标实例端点> -u <用户名> -p < dump.sql
    
  2. 配置复制参数
    连接目标实例,执行:
    CHANGE MASTER TO
      MASTER_HOST='<Aurora主实例端点>',
      MASTER_USER='<复制专用用户名>',
      MASTER_PASSWORD='<密码>',
      MASTER_LOG_FILE='<刚才记录的binlog文件名>',
      MASTER_LOG_POS=<刚才记录的偏移量>;
    
  3. 启动复制
    根据MySQL版本执行:
    -- MySQL 5.7及以下
    START SLAVE;
    -- MySQL 8.0及以上
    START REPLICA;
    
  4. 检查复制状态
    -- MySQL 5.7及以下
    SHOW SLAVE STATUS\G;
    -- MySQL 8.0及以上
    SHOW REPLICA STATUS\G;
    

关键注意事项

  • 提前在Aurora主实例创建复制专用用户,授予REPLICATION SLAVE权限:
    CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
    FLUSH PRIVILEGES;
    
  • 确保Aurora集群已开启binlog:在集群参数组中设置log_bin=1,如果参数是静态的,需要重启集群生效。
  • 如果目标实例也是Aurora集群,优先用AWS官方的跨区域/跨账号复制功能,比手动导出更稳定高效。

内容的提问来源于stack exchange,提问作者Andrei Stoica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:55:15