您可以直接對 MySQL 資料庫執行 mysqldump 公用程式,並使用所需選項。不過,如果您匯出資料是為了匯入 Cloud SQL 資料庫,請使用 mysqldump 公用程式,並加上下列旗標:
--databases明確指定要匯出的資料庫清單。這份清單不得包含系統資料庫 (sys、mysql、performance_schema和information_schema)。--hex-blob如果資料庫包含任何二進位欄位,就必須使用這個旗標,確保二進位欄位正確匯入。--single-transaction在執行前啟動交易。這項功能可讓 mysqldump 讀取目前狀態的資料庫,而非鎖定整個資料庫,因此可確保資料 dump 的一致性。--routines如要納入預存程序和函式,使用
mysqldump8 以上版本匯出 MySQL 資料庫 (版本早於 8) 時:--column-statistics=0這個旗標會從資料庫匯出作業中移除 COLUMN_STATISTICS 資料表,避免發生
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)錯誤。詳情請參閱「診斷問題」。
此外,建議您使用下列旗標:
--no-autocommit--default-character-set=utf8mb4--master-data
在可連上 MySQL 伺服器的機器上,執行下列指令:
mysqldump \
-h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
--databases [DBS] \
--hex-blob \
--no-autocommit \
--default-character-set=utf8mb4 \
--master-data=1 \
--single-transaction \
--routines \
| gzip \
| gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz
如果遷移來源是 MySQL 適用的關聯式資料庫服務 (RDS):
- 不支援
master-data屬性。 - 如果來源資料庫伺服器支援 GTID,請使用
--set-gtid-purged=on屬性,否則請勿使用。 - 如果您使用手動傾印遷移資料,請啟用 GTID 執行遷移作業。
這個指令可能如下列範例:
mysqldump \
-h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
--databases [DBS] \
--hex-blob \
--no-autocommit \
--default-character-set=utf8mb4 \
--set-gtid-purged=on \
--single-transaction \
--routines \
| gzip \
| gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz
此外,您也應設定 RDS 執行個體,延長二進位記錄的保留時間。 這個指令可能如下列範例:
# Sets the retention period to one week.
call mysql.rds_set_configuration('binlog retention hours', 168);
將 [PROPERTIES_IN_BRACKETS] 替換成下列值:
| 屬性 | 值 |
| [SOURCE_ADDR] | 來源資料庫伺服器的 IPv4 位址或主機名稱。 |
| [SOURCE_PORT] | 來源資料庫伺服器的通訊埠。 |
| [USERNAME] | MySQL 使用者帳戶。 |
| [DBS] | 來源資料庫伺服器上要納入傾印的資料庫清單 (以空格分隔)。使用 SHOW DATABASES MySQL 指令列出資料庫。 |
| [BUCKET_NAME] | 使用者在 Cloud Storage 中建立的 bucket,用於儲存 dump 檔案 (例如 replica-bucket)。 |
| [DUMP_FILENAME] | 傾印檔案的檔案名稱,結尾為 .gz 副檔名 (例如 source-database.sql.gz)。 |
後續步驟
如需完整的逐步遷移導覽,請參閱「 開始使用 MySQL 適用的 Cloud SQL 遷移作業」。