如何使用二進位日誌將 Amazon RDS for MySQL 作用中資料庫執行個體複製到內部部署待命執行個體?

2 分的閱讀內容
0

我想將 Amazon Relational Database Service (Amazon RDS) for MySQL 資料庫執行個體複製到內部部署伺服器。

簡短說明

若要將資料從 Amazon RDS for MySQL 遷移至內部部署資料庫伺服器,請先在 AWS 上建立僅供讀取複本。然後,將複製目標從 Amazon RDS for MySQL 僅供讀取複本切換至內部部署伺服器。

如果您使用基於 GTID 的複製,請參閱使用外部來源執行個體設定二進位日誌檔案位置複寫

解決方法

1.    確認您要複製的資料庫執行個體已開啟自動備份。在此範例中,資料庫執行個體為 RDS-active
注意: 最短備份保留期為一天。

2.    使用相同組態為資料庫執行個體建立僅供讀取複本。在此範例中,僅供讀取複本為 RDS-standby

3.    登入 RDS-standby 資料庫執行個體,並確認該複本與 RDS-active 同步:

mysql> show slave status \G

注意: seconds_behind_master 必須為 0,這表明沒有複本延遲。

4.    在 RDS-standby停止複寫

mysql> call mysql.rds_stop_replication;

5.    記錄複本中的資料,然後記下 -log_file-log_position 參數:

mysql> show slave status \G

注意: -log_fileRelay_Master_Log_File 的值,而 -log_positionExec_Master_Log_Pos 的值。

6.    結束終端,並使用 mysqldump (或類似的公用程式) 來建立將複製到目標伺服器的 RDS-standby 備份。在此範例中,目標內部部署伺服器是 MySQL-target

$ mysqldump -h hostname -u username -p dbname > backup_file_name.sql

7.    建立備份後,登入 MySQL-target,並將備份檔案傳輸至目標內部部署伺服器。

8.    建立新資料庫,然後使用 dumpfile 將資料庫還原至新的外部資料庫執行個體:

$ mysql -h hostname -u username -p dbname < backup_file_name.sql

9.    登入 RDS-active 資料庫執行個體,設定複寫使用者,然後將必要的權限授予該使用者。請務必將 repl_user 取代為您自己的複寫使用者名稱。

mysql> create user repl_user@'%' identified by 'repl_user';
   mysql>grant replication slave, replication client on *.* to repl_user@'%';
   mysql>show grants for repl_user@'%';

注意: 如需詳細資訊,請參閱 Aurora 與 MySQL 之間或 Aurora 與其他 Aurora 資料庫叢集之間的複寫 (二進位日誌複寫)

10.    登入目標資料庫執行個體,然後停止 MySQL 伺服器。

11.    修改 my.cnf 檔案參數,將其指向您的獨有伺服器 ID 以及要從資料庫執行個體複製的資料庫名稱。例如,server_id=2replicate-do-db=test

12.    儲存檔案。

13.    在 MySQL-target 上重新啟動 MySQL 伺服器。

14.    建立與 RDS-active 資料庫執行個體的連線。若要執行此操作,請對 MySQL-target 執行下列命令:

mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.000001', master_log_pos= 107;

15.    確認 MySQL-target 可以連線至 RDS-active

注意: 如果您使用 Amazon Elastic Compute Cloud (Amazon EC2) 作為外部 MySQL 執行個體,則請允許來自安全群組或 RDS-active 資料庫執行個體安全群組中 IP 地址的連線。如果您使用外部 MySQL 伺服器,請執行 telnet 以測試連線能力。如需詳細資訊,請參閱如何解決連線至 Amazon RDS 資料庫執行個體時發生的問題?

RDS-EndpointRDS-active 資料庫執行個體的端點。使用者名稱和密碼與您在步驟 9 中建立的使用者名稱和密碼相同。MASTER_LOG_FILEMASTER_LOG_POS 是步驟 5 中記下的值。

16.    登入 MySQL-target,並開始複寫:

mysql> start slave;

檢查複寫在 RDS-activeMySQL-target 之間是否同步:

mysql> Show slave status\G

17.    在 master 後面的秒數等於零之後,您即可刪除 RDS-standby 資料庫執行個體。

相關資訊

如何使用 AWS DMS 遷移至 Amazon RDS 或 Aurora MySQL-Compatible Edition 資料庫執行個體?

使用複寫從 MySQL 資料庫執行個體匯出資料