注意:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它會使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值替代為您雲端環境特定的值。
使用複製將 MySQL 的 Google Cloud Platform CloudSQL 移轉至 Oracle Cloud Infrastructure MySQL Heatwave
簡介
本教學課程說明如何即時將 Google Cloud Platform CloudSQL for MySQL 移轉至 Oracle Cloud Infrastructure (OCI) MySQL Heatwave Database Service。在本文的協助下,我們能夠瞭解如何在兩個不同的雲端提供者之間使用 MySQL 複寫,以作為順利移轉至 OCI Heatwave 的文件。在本自學課程中,我們將使用下列產品:-
- MySQL 的 GCP CloudSQL
- MySQL 線上交易處理 (OLTP) 的 Heatwave
- OCI 物件儲存
- OCI 運算作為堡壘主機
- MySQL 殼層
目標
將 MySQL 的 Google Cloud Platform CloudSQL 連線至 MySQL Heatwave Database Service,然後開始將內送複製啟動至 OCI 資料庫系統。我們將提供 Google Cloud Platform 與 MySQL 之間連線能力的高層次概要,但 Google Cloud Platform CloudSQL 與 MySQL Heatwave 之間的詳細網路可能已列於正式文件中。
架構
以下是解決方案的高階架構範例。
點線代表資料流程,例如從 GCP 的 Cloud SQL for MySQL 到最初資料集的物件儲存。物件儲存中提供資料之後,我們就會進一步使用 OCI MySQL Heatwave 資料庫系統提供的複製通道。
必要條件
在本教學課程中,我們將使用輸入複寫。在內送複製的協助下,我們使用 MySQL Heatwave Database Service 中設定的複製通道,並且我們可以將交易從某個位置傳送至另一個位置。我們的來源可能不同,例如企業內部部署環境、Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform 等。本教學課程將焦點放在 MySQL 的 Google Cloud Platform Cloud SQL,目標是 MySQL Heatwave Database Service。
若要深入瞭解 MySQL 輸入複製此處的簡介。此教學課程也提供來源組態的詳細描述、建立複寫使用者、建立複寫通道及其限制。
我們正在將整個移轉流程分割成下列高階步驟。
- 存取現有的 Google Cloud Platform 的 MySQL 雲端 SQL
- 準備 Google Cloud Platform 的 MySQL 雲端 SQL
- 使用 MySQL Shell 對 OCI 進行堡壘主機
- Google Cloud Platform Cloud SQL for MySQL 與 OCI Heatwave 資料庫系統之間的網路考量
- OCI 上物件儲存的儲存桶組態
- 將資料匯出至 OCI 物件儲存
- 在 OCI 上建立新資料庫系統
- 在 OCI 上建立複製通道
工作 1:存取現有的 Google Cloud Platform Cloud SQL for MySQL
我們使用的範例資料庫是由 Google Cloud Platform 的 Cloud SQL 代管,目的為 MySQL。現有的 MySQL 執行處理由 Google Cloud Platform 允許的公用子網路代管,因此我們正在使用它作為來源資料庫。假設 MySQL 的 Google Cloud Platform CloudSQL 正在執行 MySQL 版本 8.0 的企業版。
我們知道公用 IP 之後,就可以將 IP 位址加入白名單,並可輕鬆與 MySQL 從屬端連線。您也可以使用 MySQL shell 或 gcloud
公用程式來連線到資料庫。只要在 Google Cloud Platform Cloud SQL for MySQL 的「網路」區段中新增內容,即可將公用 IP 加入白名單,然後按一下儲存變更。
注意:這裡也新增了其他 IP,我們將在之後的各節中討論這些 IP。
我們可以連線之後,就可以查詢 Google Cloud Platform CloudSQL for MySQL 實例中的現有資料庫。基於我們的遷移目的,我們只將焦點放在範例資料庫 Sakila。
工作 2:準備用於 MySQL 的 Google Cloud Platform Cloud SQL
由於我們使用內送複製,因此必須在來源伺服器上執行兩個步驟。我們必須建立用於複製的使用者,同時必須確定我們的來源伺服器已啟用 GTID。有了 GTID (全域交易識別碼),就可以在來源伺服器上確認每個交易並進行追蹤。接著,也會將相同的交易套用到目標複本。
-
使用下列命令建立複製使用者並指定角色。
mysql> create user repl@'%' IDENTIFIED BY 'yourreplpassword' REQUIRE SSL; mysql> grant replication slave on *.* to repl@'%'; mysql> select user from mysql.user;;
-
確定已啟用 GTID。預設會啟用 GTID,但是如果未啟用,您可以加以啟用。
mysql>show global variables like 'gtid%';
作業 3:使用 MySQL Shell 在 OCI 上部署堡壘主機
有了 Oracle Cloud Infrastructure,就無法直接從網際網路存取 MySQL 資料庫系統端點。由於安全性經過增強,因此系統會在已設定 VCN 的專用端點協助下部署專用端點。因此,我們需要使用運算執行處理 VPN、堡壘主機或網路負載平衡器來連線 OCI MySQL Heatwave 資料庫服務,以存取專用端點。
您可以選擇上述任一選項。在我們的情況下,我們將使用運算執行處理作為 MySQL Heatwave Database Service 的堡壘主機。如需瞭解如何使用其他選項,請參閱這個網頁。
使用運算執行處理時,我們需要在 VCN 的公用子網路中部署運算,此子網路專用子網路代管 MySQL Heatwave 資料庫服務。在設定運算執行處理時,您不需要煩惱運算資源組態,因為只有在安裝 MySQL Shell 或 MySQL 從屬端時,才能使用該運算資源組態來連線到 MySQL 的 Google Cloud Platform Cloud SQL。
若要瞭解如何建立運算執行處理,請參閱這個網頁。
如下圖所示,我們在 VCN 的公用子網路中建立運算執行處理,將代管 MySQL Heatwave 資料庫服務。此堡壘主機伺服器作為 OCI 與 Google Cloud Platform 之間的中間體,我們可以存取這兩個 MySQL 執行處理。若要連線至 MySQL 資料庫執行處理,可以使用 MySQL shell 或 MySQL 從屬端。
執行下列命令來安裝 Mysql shell。
`sudo yum install mysql-shell`
如需詳細資訊,您也可以參閱文件。
作業 4:確認 MySQL 與 OCI MySQL Heatwave Database Service 之雲端 SQL 之間的網路考量
重要的是要確保來源與目標伺服器之間已順利建立通訊。
在 Google Cloud Platform 主控台中,我們需要確保 Bastion 執行處理的公用 IP 也已加入白名單中。您可以使用上述的相同程序與 MySQL Client 連線資料庫。
在 OCI 主控台上,必須在相同 VCN 內代管於專用子網路之 MySQLVCN 公用子網路和 MySQL Heatwave Database Service 的 Bastion 運算執行處理之間建立通訊。我們必須允許流量,並在專用子網路中開啟輸入規則並允許連線。
作業 5:在 OCI 上設定物件儲存的儲存桶
我們必須在 OCI 上設定物件儲存,以儲存從 Google Cloud Platform CloudSQL for MySQL 進行的初始資料傾印。此為一次性活動,此資料將用來在 MySQL Heatwave 資料庫服務上建立資料庫。
如需有關在 OCI 上建立儲存桶的資訊,請參閱建立儲存桶。
建立上述儲存桶之後,我們需要建立物件儲存的儲存桶與堡壘主機執行處理之間的連結。基於此目的,我們將使用 MySQL Shell 所使用的 oci 組態檔。
-
首先,讓我們從 OCI 主控台為使用者產生組態檔。
-
選取上述使用者詳細資訊之後,請尋找 API 金鑰選項。
-
按一下新增 API 金鑰並產生指紋,如下所示。
注意:請仔細閱讀相關指示,因為我們需要將內容貼到 Bastion 執行處理中應有的 `~/.oci/config` 檔案中。此外,也請務必複製或產生在此步驟中建立的私密金鑰。
-
如果找不到 OCI 組態檔,您可以在堡壘主機系統上建立 OCI 組態檔。您可以在這裡查詢有關其建立作業的資訊。
-
設定完成後,您就可以在電腦上看到類似的東西。
注意:
key_file
參數在建立 API 金鑰時,必須使用在 OCI 主控台上產生的私密金鑰位置更新。
作業 6:將資料匯出至 OCI 物件儲存
我們會使用堡壘主機伺服器上的 MySQL Shell 公用程式,從 Google Cloud Platform 的 MySQL 雲端 SQL 匯出資料。MySQL shell 公用程式是一個非常強大的工具,可幫助一次匯出整個執行處理並提供各種選項。
在此練習中,我們將從 Google Cloud Platform 的 CloudSQL for Mysql 資料庫匯出綱要至我們的 OCI 物件儲存。
讓我們先從堡壘主機運算連線至 MySQL 執行處理。
util.dumpSchemas(["sakila"], "", { osBucketName: "MysqlBucket", osNamespace: "orasenatdpltintegration01", ocimds: true, ociParManifest: true, threads: 8, compatibility: ["force_innodb", "skip_invalid_accounts", "strip_definers", "strip_restricted_grants", "strip_tablespaces"], dryRun: "true"})
-
sakila - 作為複寫之一部分的資料庫名稱。
-
mysqlbucket - OCI 物件儲存的名稱。
-
osNamespace - 您在 OCI 上的租用戶名稱。
-
Dryrun - 這會設為 true,以協助檢查綱要和相容性問題 (若有的話)。
-
ociParmanifest - 可使用 PAR 從物件儲存載入作業。
其餘選項可根據您的需求使用,如需詳細資訊,請參閱這個網頁。
執行乾之後,請檢查輸出並解決問題。如果沒有任何相容性問題,請在不使用 dryRun 的情況下執行,如下所示:-
它會提供匯出活動的詳細資訊,並提供持續時間。由於它是樣本資料庫,約 45k 筆記錄可快速完成。
處理作業成功之後,您的儲存桶中就會包含屬於您物件儲存的資料。
作業 7:在 OCI 上建立新資料庫系統
如需如何設定 MySQL 資料庫系統的更多詳細資訊,請參閱建立資料庫系統。
因此,我們唯一需要牢記的事項就是已經有物件儲存體中的資料,因此請讓我們來設定資料庫系統。您可以稍後載入資料,但此選項會節省大量時間。若要使用此選項,我們需要建立 PAR 要求。
請確定您已儲存此處產生的 URL,因為以下將使用此 URL。
指定 PAR URL 之後,就會自動使用 Sakila 資料庫建立 MySQL 資料庫系統。
若要驗證,請執行下列指令。
因此,我們在目標資料庫系統中擁有來源資料庫。現在,我們將在來源與目標之間建立複寫。
作業 8:在 OCI 上建立複製通道
複製通道可用來將您的來源資料庫系統連線至目標資料庫系統。所有的交易都會在這些管道的協助下複製。建立這些管道相當簡單,因為我們只需要提供少量的來源和目標詳細資訊。建議您一律使用加密連線,因此,建立使用者時,我們會在稍早的步驟中指定關鍵字 SSL。
由於複寫來源可能不同,因此我們也會允許不同公有雲提供者不同的通道篩選。如需詳細資訊,請參閱這裡。
下方影像顯示在 OCI 上建立複寫通道時提供的不同選項。我們必須提供來源主機名稱或公用 IP 位址以及連接埠號碼。我們將向先前建立的「補貨」使用者提供認證。
我們也指定了為複寫所建立的目標資料庫系統,並且透過複寫篩選條件,提供選項供您視需要從下拉式功能表選擇複寫篩選條件。
如果來源系統上的匯出未進一步載入,則複製通道應啟用並完成。不過,可能會因為 GTID 不相符而造成負載不一致,且應採取必要的動作。複製通道有不同的階段,詳情請參閱這個網頁。
如需有關進行內送複製組態時可能遭遇之最常見錯誤訊息的詳細資訊,請參閱疑難排解指南。
在 Google Cloud Platform 來源插入虛擬資料,如下圖所示。
查詢 MySQL Heatwave Database Service 上的範例資料庫。
在主控台中,我們可以看到來源與目標之間的延遲是零,而且複製和確認交易。因此,我們可將複寫通道用於災害復原和移轉。根據正確的計畫與應用程式停止工作時間,我們可以執行切換活動,並使用 MySQL Heatwave Database 服務,這是您針對 OLTP 交易與分析工作負載的一站式解決方案。
接下來的步驟
在本教學課程中,我們看到 OCI MySQL Heatwave Database Service 提供一個使用內送複製的相當簡單機制。它支援多個來源,甚至提供這些來源的複寫通道篩選。您可以使用內送複製將資料集帶到 Oracle Cloud,並使用其熱能方案。不僅如此,還引進了 MySQL Heatwave Lakehouse ,您可以以多種格式將大量的資料載入到數 TB。如需有關 MySQL Heatwave Database Service 的詳細資訊,以及提供 In-Memory Query Accelerator 如何將查詢效能最大化。
確認書
- 作者 - Amal Sharma (主要雲端架構師)
其他學習資源
探索 docs.oracle.com/learn 的其他實驗室,或者存取更多 Oracle Learning YouTube 頻道上的免費學習內容。此外,請瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning 檔案總管。
如需產品文件,請造訪 Oracle Help Center 。
Migrate Google Cloud Platform CloudSQL for MySQL to Oracle Cloud Infrastructure MySQL Heatwave using Replication
F87172-01
September 2023
Copyright © 2023, Oracle and/or its affiliates.