總覽
資料庫遷移服務支援從來源資料庫一次性或持續遷移至 Cloud SQL 目的地資料庫。
MySQL 支援的來源資料庫如下: <
- Amazon RDS 5.6、5.7、8.0、8.4
- 自行管理的 MySQL (地端部署或完全由您掌控的 Cloud VM) 5.5、5.6、5.7、8.0、8.4
- MySQL 適用的 Cloud SQL 5.6、5.7、8.0、8.4
- Amazon Aurora 5.6、5.7、8.0、8.4
- Microsoft Azure Database for MySQL 5.7、8.0、8.4
針對 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、8.0.42、8.0.43。
如要設定來源資料庫,請完成下列步驟:
- 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 SLAVEEXECUTESELECTSHOW VIEWREPLICATION CLIENTRELOADTRIGGER- (僅適用於從 Amazon RDS 和 Amazon Aurora 遷移)
LOCK TABLES
MySQL 8.0 以上版本:為獲得最佳效能,請確保您未將
BACKUP_ADMIN權限授予這個帳戶。類型 2
所設使用者帳戶必須具備下列權限:
REPLICATION SLAVEEXECUTE
類型 3
所設使用者帳戶必須具備下列權限:
SELECTSHOW VIEWTRIGGER- (僅適用於從 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
Microsoft Azure Database for MySQL
Microsoft Azure Database for MySQL 預設會啟用二進位記錄功能。您不必啟用這項功能,詳情請參閱 Microsoft 說明文件。
設定下列必要參數:
將
binlog_expire_logs_seconds設為足以支援資料庫遷移作業的期間。詳情請參閱 Microsoft 說明文件中的「在 Azure Database for PostgreSQL 中設定伺服器參數」和「
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,請選取「無」。
- 如果