我正在将我公司的数据库从 EC2 实例迁移到 RDS 实例。我已经迁移了数据快照,现在正在尝试设置复制以获取自快照以来添加的数据。
我正在按照此链接中的说明进行操作:
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.NonRDSRepl.html
当我打电话时mysql.rds_start_replication
,SHOW SLAVE STATUS\G
显示以下内容:
Slave_IO_State: Connecting to master
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
Seconds_Behind_Master: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
从我对主题的谷歌搜索中,我相信这是一个网络/防火墙问题。我检查了我的 RDS 有一个安全组,允许与源机器(私有 IP 和弹性 IP)的所有网络流量,并且源机器有一个安全组,允许使用 RDS 实例 IP 地址的所有网络流量。
主服务器有一个设置了复制权限的用户。
我敢肯定,我在这里缺少一些简单的东西。
我试过flush hosts
在主服务器上运行。
如何使复制成功进行?
一些附加信息:
- 主服务器版本为 5.5.33
- 从服务器是5.6.13版本
- 主服务器使用 old_passwords=1
- 从服务器使用 old_passwords=0
我已经尝试SESSION old_passwords=0
在主服务器上进行设置,使用新的长哈希格式创建一个新的复制用户,但仍然无法启动复制。
我得到的错误是:
Last_IO_Errno: 2049
这似乎与身份验证协议有关。
我是否需要在 my.cnf 文件中使用 old_passwords=0 完全重启 MySQL 主服务器?
由于您
my.cnf
在 EC2 上进行控制,因此您有两个选项,都不需要重新启动 mysql选项 #1:更改 EC2 的 old_password 协议
SET GLOBAL old_passwords = 0;
选项 #2:降低 EC2 的安全性
SET GLOBAL secure_auth = OFF;
有关更多信息,请阅读old_passwords和secure_auth MySQL 文档。
试试看 !!!
更新 2017-07-20 16:32 EDT
这些方法都不适用于 MySQL 5.7,因为这两个选项都已弃用。