本頁面提供總覽,說明如何將線上交易處理 (OLTP) 資料庫從 MySQL 遷移到 Spanner。遷移至 Spanner 的程序可能因資料大小、停機時間規定、應用程式程式碼複雜度、資料分割結構定義、自訂函式,以及容錯移轉和複製策略等因素而異。
Spanner 遷移作業可細分為下列步驟:
- 評估遷移作業。
- 遷移結構定義,並翻譯任何 SQL 查詢。
- 遷移應用程式,除了 MySQL 之外,還會使用 Spanner。
- 載入範例資料,並將成效最佳化。
- 遷移資料。
- 驗證遷移作業。
- 設定轉換和備援機制。
評估遷移作業
評估從來源 MySQL 資料庫遷移至 Spanner 的作業時,需要評估您的業務、技術、營運和財務需求。詳情請參閱「評估遷移作業」一文。
遷移結構定義
您可以使用 Spanner 遷移工具,將現有結構定義轉換為 Spanner 結構定義。
詳情請參閱「從 MySQL 遷移結構定義總覽」。
遷移應用程式以使用 Spanner
Spanner 提供了一組包含各種語言的用戶端程式庫,以及使用 Spanner 特定 API 呼叫、SQL 查詢和資料修改語言 (DML) 陳述式讀取或寫入資料的功能。使用 API 呼叫對於某些查詢 (例如直接依鍵值讀取列) 可能更迅速,因為不需要翻譯 SQL 陳述式。
Spanner 為 Java 應用程式提供 JDBC 驅動程式。
在遷移程序中,Spanner 無法使用的功能必須在應用程式中實施。舉例來說,驗證資料值並更新相關資料表的觸發條件,必須在應用程式中使用讀取或寫入交易來實施,以讀取現有的列、驗證限制條件,然後將更新過的列寫入兩個資料表。
Spanner 提供讀寫和唯讀交易,確保資料的外部一致性。此外,讀取交易可以套用時間戳記邊界,讓您讀取在以下方式中指定的一致性資料版本:
- 過去的精確時間 (最多 1 小時以前)。
- 在未來 (讀取將被封鎖,直至到達該時刻為止)。
- 傳回到過去某一時間的一致性資料檢視 (具有可接受的有限過時性),不需檢查另一複本上是否有較新的資料。這樣可以獲得效能益處,但代價是資料可能過時。
將範例資料載入 Spanner
您可以在將完整資料遷移至 Spanner 之前載入範例資料,測試結構定義、查詢和應用程式。
您可以使用 BigQuery 反向 ETL 工作流程和 Google Cloud CLI,將少量 CSV 格式的資料載入 Spanner。
詳情請參閱「載入範例資料」。
如要將資料從 MySQL 轉移到 Spanner,您也可以將 MySQL 資料庫匯出為可攜式檔案格式 (例如 XML),然後使用 Dataflow 將該資料匯入 Spanner。
將資料遷移至 Spanner
最佳化 Spanner 結構定義並載入範例資料後,即可將資料移至空白的生產環境大小 Spanner 資料庫。
詳情請參閱「從 MySQL 即時遷移資料」。
驗證資料遷移
當資料流入 Spanner 資料庫時,您可以定期執行比較 Spanner 資料和 MySQL 資料,以確認資料是一致的。您可以查詢兩個資料來源,並比較結果,以驗證一致性。
您可以使用 Dataflow,利用彙整轉換對大型資料集進行詳細的比較。這項轉換會使用兩個具有鍵值的資料集,並依據鍵值匹配各值。接下來可以比較被匹配的值是否相等。您可以定期執行此一驗證,直到一致性等級符合您的公司需求。
詳情請參閱「驗證資料遷移作業」。
設定轉換和備援機制
您可以使用反向複製功能,為 MySQL 設定切換和回復作業。轉換和回溯是指您有應急計畫,如果 Spanner 發生問題,可以還原至來源 MySQL 資料庫。
如果 Spanner 發生無法預料的問題,需要回溯至原始 MySQL 資料庫,且希望服務中斷時間盡可能縮短,反向複製功能就非常實用。反向複製功能可將寫入 Spanner 的資料複製回來源 MySQL 資料庫,以便進行回溯。
反向複製流程包含下列步驟,由 Spanner to SourceDB
Dataflow 範本執行:
使用 Spanner 變更串流讀取 Spanner 中的變更。
篩選轉移的變更。
轉換 Spanner 資料,使其與來源資料庫結構定義相容。
確認來源資料庫是否已包含指定主鍵的最新資料。
將資料寫入來源資料庫。
後續步驟
- 結構定義設計最佳做法。
- 最佳化 Spanner 結構定義。
- 瞭解如何將 Dataflow 用於更複雜的情況。