IBM Cloud Docs
移轉至 Databases for MySQL

移轉至 Databases for MySQL

有兩個選項可將資料從現有 MySQL 資料庫移轉至 IBM Cloud® Databases for MySQL。 我們建議兩個選項: mysqldumpmydumper。 最適合您的工具取決於特定條件,包括網路連線、資料集大小及中間綱目需求。

開始之前

在開始資料移轉之前,您需要在本端安裝 MySQL ,以便您具有 mysqlmysqldump 工具。

MySQL 工作台 也提供圖形工具來使用 MySQL 伺服器及資料庫。 雖然並非嚴格需要, Cloud Databases CLI 也可讓您輕鬆連接及還原至新的 Databases for MySQL 部署。

mysqldump

依預設,這個原生 MySQL 用戶端公用程式會安裝,且可以執行邏輯備份、重新產生表格結構及資料,而不複製實際資料檔。 mysqldump 會傾出一個以上 MySQL 資料庫,以進行備份或傳送至另一個 MySQL 伺服器。 如需相關資訊,請參閱 mysqldump 文件

在下列條件下,適合使用 mysqldump :

  • 資料集小於 10 GB。
  • 移轉時間並不重要,且重試移轉的成本較低。
  • 您不需要執行任何中間綱目或資料轉換。

如果符合下列任何條件,我們不建議 mysqldump:

  • 您的資料集大於 10 GB。
  • 來源與目標資料庫之間的網路連線不穩定或緩慢。

使用 mysqldump 工具來遵循下列步驟:

在來源資料庫上執行 mysqldump ,以建立可用來重建資料庫的 SQL 檔案。 使用 CLI 移轉 mysql 至少需要下列引數:

  • 主機名稱 (-h 旗標)
  • 埠號 (-P 旗標)
  • 使用者名稱 (-u 旗標)
  • -- ssl-mode = VERIFY_IDENTITY (用戶端需要加密連線,並對其憑證中的伺服器 CA 憑證及伺服器主機名稱執行驗證)
  • -- ssl-ca (憑證管理中心 (CA) 檔案的路徑名稱,可在使用者介面中「 概觀 」頁面的「端點 CLI」標籤內找到。)
  • 資料庫名稱
  • 結果檔案 (-r 旗標)

您的 CLI 指令看起來如下

mysqldump -h <host_name> -P <port_number> -u <user_name> --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p <database_name> -r dump.sql

若要產生 mysqldump 工作的日誌檔,以在執行時追蹤錯誤,請使用類似下列指令:

mysqldump -h <host_name> -P <port_number> -u <user_name> --log-error=error.log --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p ibmclouddb -r dump.sql

匯入時可以執行相同的動作,例如

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql > import_logfile.log

For more information on using MySQL Replication with Global Transaction Identifiers (GTIDs), see the 使用 GTID 進行失效接手和橫向擴充 in the MySQL Reference Manual.

mysql 指令有許多選項; 請參閱正式文件指令參考手冊 ,以取得其功能的更完整視圖。

還原 mysqldump 的輸出

然後, mysqldump 產生的輸出可以上傳至新的 Databases for MySQL 部署。 因為輸出是 SQL ,所以可以直接透過 mysql 指令傳送至資料庫。 建議以 admin 使用者身分執行匯入。

如需使用 mysql以管理者身分進行連接的詳細資料,請參閱 使用 mysql連接 文件。 若要使用 mysql 指令進行連接,您需要管理使用者的連線字串及 TLS 憑證,這兩者都可以在使用者介面中找到。 憑證需要從 base64 解碼,並儲存為任意本端檔案。 若要將先前建立的 dump.sql 匯入至名為 example-mysql的資料庫部署,可以使用 -f dump.sql 作為參數來呼叫 mysql 指令。 此參數指示 mysql 讀取並執行檔案中的 SQL 陳述式。

使用 mysql連接 文件中所述, Cloud Databases CLI 外掛程式可簡化連接。 可以使用如下指令來執行前一個 mysql 匯入:

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql

如果未指定任何使用者,指令會自動使用管理使用者,並以互動方式提示輸入密碼。 TLS 憑證會自動擷取並使用。

當還原處理程序正在執行時,會發出一些訊息,指出正在對資料庫部署進行變更。

mydumper

mydumper 及其配對邏輯備份工具 myloader 使用多執行緒作業功能來執行資料移轉,類似於 mysqldump; 不過, mydumper 提供許多改進,例如平行備份、一致讀取,以及更容易管理輸出。 平行化可在匯入及匯出處理程序期間提供更好的效能,而輸出則因為個別表格傾出至個別檔案而更容易管理。

mydumper 適合在下列條件下使用:

  • 資料集大於 10 GB。
  • 來源與目標資料庫之間的網路連線快速且穩定。
  • 您需要執行中間綱目或資料轉換。

如果符合下列任何條件,我們不建議使用 mydumper:

  • 您的資料集小於 10 GB。
  • 來源與目標資料庫之間的網路連線不穩定或非常緩慢。

在開始使用 mydumper 來移轉資料之前,請先參閱 mydumper 專案 ,以取得安裝及必要開發人員環境的詳細資料及逐步指示。

接下來,請參閱 如何使用 mydumper 頁面,以取得使用 mydumper 和 myloader 工具來執行完整資料移轉的相關資訊。

調整 InnoDB 可配置變數

您可以配置下列 MySQL InnoDB 選項,以根據機器容量及資料庫工作量來調整效能。

innodb_buffer_pool_size_percentage

  • 說明: innodb_buffer_pool_size_percentage value 參數定義資料庫儲存器的專用記憶體數量。
  • 預設值: 50
  • 上限: 100
  • 最小值:10
  • 需要重新啟動: True

當資料庫本身使用給定的記憶體數量時,如果 innodb_buffer_pool_size_percentage value 參數配置太高,則資料庫記憶體需求 + innodb_buffer_pool_size_percentage 可能會變得高於可用的記憶體限制,導致記憶體不足 (OOM)。

innodb_buffer_pool_size_percentage 參數值根據資料庫大小而有所不同。 預設值為 50%,對於所有大小的資料庫而言都是安全的。 視需要配置值; 如果您遇到 OOM ,則該值設定太高,您應該降低它。

innodb_flush_log_at_trx_commit

  • 說明: 控制確定作業的嚴格 ACID 相符性與更高效能之間的平衡

  • 預設值: 2

預設值 2 並不完全符合 ACID 標準 (完整 ACID 標準需要預設值 1) ,但效能更高且仍然安全。

  • 最大值: 2
  • 最小值:0
  • Requires restart: False

如需相關資訊,請參閱 MySQL innodb_flush_log_at_trx_commit 文件

innodb_log_buffer_size

  • 說明 :InnoDB 用來寫入磁碟上日誌檔的緩衝區大小 (以位元組為單位)。
  • 預設值: 32 MiB
  • 最大值: 4294967295
  • 最小值: 1048576
  • 需要重新啟動: True

如需相關資訊,請參閱 MySQL innodb_log_buffer_size 文件

innodb_log_file_size

  • 說明 :InnoDB 日誌檔大小 (以位元組為單位)。
  • 預設值: 64 MB
  • 最大值: 274877906900
  • 最小值: 4194304
  • 需要重新啟動: True

如需相關資訊,請參閱 MySQL innodb_log_file_size 文件

innodb_lru_scan_depth

  • 說明: 這個參數會影響 InnoDB 緩衝池之清除作業的演算法和啟發式。
  • 預設值: 1024
  • 最大值: 無最大值
  • 最小值: 100
  • 需要重新啟動: True

如需相關資訊,請參閱 MySQL innodb_lru_scan_depth 文件

innodb_read_io_threads

  • 說明 :InnoDB 中讀取作業的 I/O 執行緒數目。
  • 預設值: 4
  • 上限: 64
  • min: 1
  • 需要重新啟動: True

如需相關資訊,請參閱 MySQL innodb_read_io_threads 文件

innodb_write_io_threads

  • 說明 :InnoDB 中讀取作業的 I/O 執行緒數目。
  • 預設值: 4
  • 上限: 64
  • min: 1
  • 需要重新啟動: True

如需相關資訊,請參閱 MySQL innodb_write_io_threads 文件

net_read_timeout

  • 說明: 中斷讀取之前等待連線中更多資料的秒數。
  • 預設值: 30
  • 最大值:
  • min: 1
  • 需要重新啟動: True

如需相關資訊,請參閱 MySQL net_read_timeout 文件

net_write_timeout

  • 說明: 在中斷寫入之前等待區塊寫入連線的秒數。
  • 預設值: 60
  • 最大值:
  • min: 1
  • 需要重新啟動: True

如需相關資訊,請參閱 net_write_timeout 說明文件