如何使用自訂開始時間遷移 Amazon RDS for MySQL 資料庫執行個體?
我想使用自訂開始時間將 Amazon Relational Database Service (Amazon RDS) for MySQL 資料庫執行個體遷移到另一個 MySQL 資料庫執行個體。該如何進行?
簡短描述
若要將資料從 Amazon RDS for MySQL 遷移到另一個 MySQL 資料庫執行個體,您可以使用以下方法之一:
- 以 Binlog 為基礎的複寫
**注意:**如果您使用的是 MySQL 8.0.17 版,則引擎可能不會在當機復原期間列印最後一個 binlog 檔案位置和檔案名稱。因此,您將無法使用 binlog 複寫方法來遷移資料。檢查 MySQL 網站是否存在此已知問題。 - AWS DMS
解決方案
Binlog 複寫
先決條件:
- Binlog 複寫使用在來源上產生的 binlog 檔案來持續記錄變更。將 binlog_format parameter 設定為您選擇的二進位記錄格式 (ROW、STATEMENT 或 MIXED)。
- 將 binlog 保留時間參數增加到比當前值更大的值。這樣,尚未傳送的 binlog 仍會保留在來源 Amazon RDS for MySQL 執行個體上。
- 確保 Amazon RDS for MySQL 執行個體可從目標主機存取。
若要使用 binlog 複寫將資料從 Amazon RDS for MySQL 遷移到另一個 MySQL 資料庫執行個體,請執行以下操作:
1. 使用自訂開始時間 (或時間點值) 從來源 Amazon RDS 資料庫執行個體執行 point-in-time 恢復。
2. 建立 point-in-time 恢復 RDS 執行個體的備份。
例如,您可以使用 mysqldump 來執行此任務:
mysqldump -h rdsendpoint -u username -p dbname > backupfile.sql
3. 查看 point-in-time 恢復 RDS 執行個體的錯誤日誌檔案,記錄上次套用的 binlog 檔案和位置的相關資訊。
以下是一個日誌檔案訊息範例:
[Note] InnoDB: Last MySQL binlog file position 0 456, file name mysql-bin-changelog.152707
**注意:**您需要存取記錄 binlog 檔案和任何後續 binlog 檔案,以進行複寫。您只能使用這些檔案執行從來源 RDS 執行個體的複寫。RDS MySQL 中的最大 binlog 保留期只能設定為 7 天,預設值為 "NULL"。(如需詳細資訊,請參閱 mysql.rds_set_configuration。) 因此,將這些 binlog 檔案保留在來源執行個體上以在後續步驟中完成。
4. 在來源 Amazon RDS for MySQL 執行個體上設定複寫使用者並向該使用者授予必要的權限:
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@'%';
5. 登入 MySQL-target 將備份檔案傳輸到目標內部部署伺服器。建立一個新資料庫,並使用 dumpfile 將資料庫還原到新的外部資料庫執行個體:
$ mysql -h hostname -u username -p dbname < backupfile.sql
6. 停止目標 MySQL 引擎:
$ service mysqld stop
7.修改 my.cnf 檔案參數,以指向您的唯一伺服器 ID 和您要複寫的資料庫。
例如:
server_id=2 replicate-do-db=testdb
如果您要複寫多個資料庫,您可以多次使用 replicate-do-db 選項,並在單獨的行中指定這些資料庫,如下所示:
replicate-do-db=<db_name_1> replicate-do-db=<db_name_2> replicate-do-db=<db_name_N>
如需有關使用資料庫名稱建立複寫篩選條件的詳細資訊,請參閱 MySQL 網站上的 replicate-do-db。
8. 儲存檔案並在目標 MySQL 資料庫執行個體上重新啟動 MySQL 資料庫引擎。
例如,如果您使用的是 Linux 系統,則可以使用以下語法:
service mysqld restart
9. 建立與來源 RDS for MySQL 資料庫執行個體的連線。
例如:
mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.152707', master_log_pos= 456;
**master_host:**來源 Amazon RDS for MySQL 執行個體的端點。
**master_user:**複寫使用者的名稱 (在步驟 4 中建立)。
**master_password:**複寫使用者的密碼。
**master_log_file:**步驟 3 中記錄的 binlog 檔案名稱。(在第 3 步中,範例輸出指示 binlog 檔案名稱為 "mysql-bin-changelog.152707"。)
**master_log_pos:**第 3 步記錄的 binlog 位置。(在第 3 步中,範例輸出指示 binlog 檔案位置為 "456"。)
10. 登入目標 RDS for MySQL 資料庫執行個體,並使用以下命令開始複寫:
mysql> start slave;
11. 確認複寫在來源 RDS for MySQL 資料庫執行個體和目標 MySQL 資料庫執行個體之間同步:
mysql> show slave status\G
AWS DMS
在使用 AWS Database Migration Service (AWS DMS) 設定複寫之前,請檢查以下資資源:
- 若要備份 point-in-time 恢復的執行個體,請參閱 binlog 複寫部分中的步驟 1-5。最好是遵循這些步驟,因為自訂開始時間可以是備份保留期內的任何 (過去) 時間點。從目標資料庫執行個體還原備份後,記錄在資料庫恢復過程中產生的檢查點記錄序號 (LSN)。您需要參考該 LSN 來設定變更資料擷取 (CDC) 開始時間。若要取得檢查點 LSN,請在 point-in-time 恢復操作完成後立即查看還原的 RDS MySQL 執行個體的錯誤日誌檔案。例如:
[Note] InnoDB: Log scan progressed past the checkpoint lsn 44326835524
-
若要從自訂起點啟動 CDC,使用者可以執行 show master status 命令以返回 binlog 檔案名稱、位置和其他幾個值。 如需有關從自訂起點啟動 CDC 的詳細資訊,請參閱從 CDC 起點開始執行複寫。
-
若要了解將 MySQL 資料庫設定為 AWS DMS 複寫來源的先決條件,請參閱使用與 MySQL 相容的資料庫作為 AWS DMS 的來源。
-
若要了解將 MySQL 資料庫設定為 AWS DMS 複寫目標的先決條件,請參閱使用與 MySQL 相容的資料庫作為 AWS Database Migration Service 的目標。
相關內容
- 已提問 1 年前lg...
- 已提問 9 個月前lg...
- 已提問 2 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 3 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 9 個月前