Mysql
從 EC2 主伺服器複製到 RDS 從伺服器 - 連接到主伺服器
我正在將我公司的數據庫從 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
從我對主題的Google搜尋中,我相信這是一個網路/防火牆問題。我檢查了我的 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 協議
- 停止複製到 RDS 從站
- 作為 root@localhost 在 EC2 上執行:
SET GLOBAL old_passwords = 0;
- 開始復製到 RDS 從站
選項 #2:降低 EC2 的安全性
- 停止複製到 RDS 從站
- 作為 root@localhost 執行:
SET GLOBAL secure_auth = OFF;
- 開始復製到 RDS 從站
有關更多資訊,請閱讀old_passwords和secure_auth MySQL 文件。
試一試 !!!
更新 2017-07-20 16:32 EDT
這些方法都不適用於 MySQL 5.7,因為這兩個選項都已棄用。