總覽
資料庫遷移服務支援從來源資料庫到 Cloud SQL 目的地資料庫的一次性和持續遷移作業。
MySQL 支援的來源資料庫包括:
- Amazon RDS 5.6、5.7、8.0
- 自行管理的 MySQL (位於地端部署系統或任何雲端 VM 中,且由您完全控管) 5.5、5.6、5.7、8.0
- MySQL 適用的 Cloud SQL 5.6、5.7、8.0、8.4
- Amazon Aurora 5.6、5.7、8.0
- Microsoft Azure Database for MySQL 5.7、8.0
針對 MySQL 8.0 來源,資料庫移轉服務也支援以下子版本:8.0.18、8.0.26、8.0.27、8.0.28、8.0.30、8.0.31、8.0.32、8.0.33、8.0.34、8.0.35、8.0.36、8.0.37、8.0.39、8.0.40、8.0.41。
如要設定來源資料庫,請完成下列步驟:
- Cloud SQL 來源:如果您要從使用私人 IP 連線的 Cloud SQL 執行個體,遷移至使用非 RFC 1918 位址的 IP 範圍的 Cloud SQL 執行個體,請將非 RFC 1918 範圍新增至來源 Cloud SQL 執行個體的網路設定。請參閱 Cloud SQL 說明文件中的「設定授權網路」一節。
- 從來源資料庫將資料遷移至目的地資料庫之前,請務必在完整傾印階段停止所有資料定義語言 (DDL) 寫入作業。您可以使用 指令碼來確認 DDL 作業已停止。遷移作業進入 CDC 階段後,您可以繼續執行 DDL 作業。
- 請確認來源資料庫不含有使用者透過 DEFINER 子句定義的中繼資料。請參閱 這篇文章,瞭解如何建立並執行含有 DEFINER 子句中繼資料的 MySQL 遷移工作。
- 如果來源資料庫包含物件,而這些物件會參照
mysql
、performance_schema
、information_schema
、ndbinfo
或sys
系統結構定義中的資料表,請確認複本資料庫也包含這些系統結構定義表。如果副本資料庫沒有這些資料表,遷移工作可能會失敗,並顯示
Unknown table in system schema
錯誤。 - server-id 選項必須設為 1 以上的值。詳情請參閱「複製作業和二進位檔記錄選項及變數」。
- 將
GTID_MODE
設為ON
或OFF
,即可設定全域交易 ID (GTID) 記錄。系統不支援ON_PERMISSIVE
的GTID_MODE
值。您應使用的值取決於遷移需求:
如要進一步瞭解GTID_MODE
,請參閱「 全域交易 ID 系統變數」一文。 -
請務必將用來連結來源資料庫的使用者帳戶設為接受從任何位置建立的連線 (host =
%
)。您可以在後續步驟中設定只有這名使用者具備存取權。為降低資料庫在其他方面受到影響的可能性,建議您另外建立帳戶來執行這項作業。
遷移和傾印作業的組合有四種:
- 類型 1:持續遷移和受管理的傾印
- 類型 2:持續遷移和手動傾印
- 類型 3:一次性遷移和受管理的傾印
- 類型 4:一次性遷移和手動傾印
下方分頁中列出各類型遷移作業和傾印作業的權限。
類型 1
所設使用者帳戶必須具備下列權限:
REPLICATION SLAVE
EXECUTE
SELECT
SHOW VIEW
REPLICATION CLIENT
RELOAD
TRIGGER
- (僅適用於從 Amazon RDS 和 Amazon Aurora 遷移的資料)
LOCK TABLES
MySQL 8.0 以上版本:為確保最佳效能,請勿將
BACKUP_ADMIN
權限授予此帳戶。類型 2
所設使用者帳戶必須具備下列權限:
REPLICATION SLAVE
EXECUTE
類型 3
所設使用者帳戶必須具備下列權限:
SELECT
SHOW VIEW
TRIGGER
- (僅適用於從 Amazon RDS 和 Amazon Aurora 遷移的資料)
LOCK TABLES
- (僅適用於從設有
GTID_MODE = ON
設定的來源遷移)RELOAD
MySQL 8.0 以上版本:為確保最佳效能,請勿將
BACKUP_ADMIN
權限授予此帳戶。類型 4
不需要任何權限。
- 設定二進位記錄檔前,請確認您已完成下列事項:
- 在來源資料庫中啟用二進位檔記錄。
- 使用以資料列為基礎的二進位記錄。
- 保留二進位檔記錄一段足夠長的時間,以支援資料庫遷移作業。一般來說,一週就足夠了。
如要設定二進位記錄,請展開來源的部分:
自行託管的 MySQL
視 MySQL 版本而定,指定足夠的時間讓複製作業完成:
- MySQL 5.5 - 5.7:
expire_logs_days
- MySQL 8.0:
expire_logs_days
、binlog_expire_logs_seconds
適用於 MySQL 的 Microsoft Azure 資料庫
適用於 MySQL 的 Microsoft Azure 資料庫預設會啟用二進位檔記錄。您不必啟用這項功能。詳情請參閱 Microsoft 說明文件。
設定下列必要參數:
將
binlog_expire_logs_seconds
設為足以支援資料庫遷移作業的時間長度。詳情請參閱「在 Azure Database for PostgreSQL 中設定伺服器參數」和 Microsoft 說明文件中的
binlog_expire_logs_seconds
參數。- 重新啟動伺服器,讓變更生效。
Amazon RDS
針對 Amazon RDS,您可以在參數群組中設定行式設定,方法是設定
binlog retention hours
參數。這個參數用於指定 Amazon RDS 應保留二進位記錄檔案多久。如要在 Amazon RDS 中設定二進位記錄的保留期限,請使用
mysql.rds_set_configuration
預存程序,並指定足夠的時間讓複製作業完成。例如:call mysql.rds_set_configuration('binlog retention hours',168);
Amazon Aurora
如為 Amazon Aurora,請按照下列步驟操作:
- 為 MySQL 資料庫啟用二進位檔記錄功能。
- 設定二進位記錄保留期限:
mysql> call mysql.rds_set_configuration('binlog retention hours', 168);
- 重新啟動伺服器,讓所做的變更生效。
- 所有資料表 (系統資料庫中的資料表除外) 均使用 InnoDB 儲存引擎。
- 用於連線至來源資料庫的使用者帳戶密碼長度不得超過 32 個字元。這是 MySQL 複製作業的特定問題。
僅適用於 Microsoft Azure Database for MySQL 來源:請檢查
require_secure_transport
設定的值。根據預設,Microsoft Azure 資料庫會要求所有傳入連線都使用 SSL/TLS 加密機制。根據
require_secure_transport
值,建立來源連線設定檔時,請使用下列其中一個加密設定:- 如果
require_secure_transport
設為on
,請選取「Basic」、「TLS」或「mTLS」。 - 如果
require_secure_transport
設為off
,請選取「None」。
- 如果