Mysql

從 EC2 主伺服器複製到 RDS 從伺服器 - 連接到主伺服器

  • February 3, 2021

我正在將我公司的數據庫從 EC2 實例遷移到 RDS 實例。我已經遷移了數據快照,現在正在嘗試設置複製以獲取自快照以來添加的數據。

我正在按照此連結中的說明進行操作:

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.NonRDSRepl.html

當我打電話時mysql.rds_start_replicationSHOW 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在主伺服器上執行。

如何使復製成功進行?

一些附加資訊:

  1. 主伺服器版本為 5.5.33
  2. 從伺服器是5.6.13版本
  3. 主伺服器使用 old_passwords=1
  4. 從伺服器使用 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 協議

  1. 停止複製到 RDS 從站
  2. 作為 root@localhost 在 EC2 上執行:SET GLOBAL old_passwords = 0;
  3. 開始復製到 RDS 從站

選項 #2:降低 EC2 的安全性

  1. 停止複製到 RDS 從站
  2. 作為 root@localhost 執行:SET GLOBAL secure_auth = OFF;
  3. 開始復製到 RDS 從站

有關更多資訊,請閱讀old_passwordssecure_auth MySQL 文件。

試一試 !!!

更新 2017-07-20 16:32 EDT

這些方法都不適用於 MySQL 5.7,因為這兩個選項都已棄用。

引用自:https://dba.stackexchange.com/questions/63056