使用資料庫遷移服務建立目的地執行個體時,該執行個體不會降級,也不會以唯讀模式執行,但在遷移過程中執行特定作業可能會導致遷移錯誤。遷移至新的目的地執行個體時,請注意下列作業事項:
- 避免對遷移資料執行寫入作業:請勿在目的地執行個體中,對遷移作業包含的資料表或資料庫執行寫入作業 (例如
INSERT、UPDATE、DELETE或 DDL 結構定義變更)。這類作業可能會導致與來源資料發生複製衝突。 - 管理資料庫使用者:您隨時可以使用標準
psql指令,或透過 Google Cloud 控制台中的 Cloud SQL 建立及管理資料庫使用者。詳情請參閱 Cloud SQL 說明文件中的「管理使用者」。 - 備份和唯讀副本:在持續複製期間,自動備份和時間點復原 (PITR) 功能會暫停,且在遷移工作升級前,您無法從目的地執行個體建立 Cloud SQL 唯讀副本。
詳情請參閱「已知限制」。
建立遷移工作的步驟包括:
- 定義遷移工作的設定。
- 定義來源設定,並選取要遷移的資料庫。
- 定義目的地 Cloud SQL 資料庫執行個體的設定,並建立執行個體。
- 設定來源與目的地資料庫執行個體之間的連線。
- 測試遷移工作,確保您為工作提供的連線資訊有效。
如要建立遷移工作,將資料遷移至新的目的地執行個體,請按照下列步驟操作:
控制台
定義遷移工作設定
- 前往 Google Cloud 控制台的「Migration jobs」(遷移工作) 頁面。
- 按一下「建立遷移工作」。
遷移工作設定精靈頁面隨即開啟。 這個精靈包含多個面板,可引導您完成各項設定步驟。
您隨時可以點選「儲存並結束」,暫停建立遷移工作。您輸入的所有資料都會儲存為草稿遷移工作。您可以稍後再完成遷移工作草稿。
- 在「開始使用」頁面中輸入下列資訊:
- 遷移工作名稱
這是遷移工作的人類可讀名稱。這個值會顯示在 Google Cloud 控制台中。
- 遷移工作 ID
這是遷移工作的機器可讀 ID。 您可以使用這個值,透過資料庫遷移服務 Google Cloud CLI 指令或 API 執行遷移工作。
- 從「Source database engine」(來源資料庫引擎) 清單中選取「PostgreSQL」。
「Destination database engine」(目的地資料庫引擎) 欄位會自動填入「PostgreSQL 適用的 Cloud SQL」,且無法變更。
- 選取儲存遷移工作的區域。
資料庫遷移服務是完全區域性的產品,也就是說,與遷移作業相關的所有實體 (來源和目的地連線設定檔、遷移工作、目的地資料庫) 都必須儲存在單一區域。請根據需要資料的服務 (例如 Compute Engine 執行個體或 App Engine 應用程式,以及其他服務) 所在位置選取區域。選定目的地區域後,即無法變更。
- 指定遷移工作類型:「單次」或「連續」。
- 查看系統為環境產生的必要條件。請確認來源資料庫設定正確無誤。詳情請參閱「設定來源資料庫」。
- 遷移工作名稱
- 按一下 [儲存並繼續]。
指定來源連線設定檔的相關資訊
在「Define a source」(定義來源) 頁面中,執行下列步驟:
- 從「Source connection profile」(來源連線設定檔) 下拉式選單中,選取來源資料庫的連線設定檔 (或按一下「Create a connection profile」(建立連線設定檔),請參閱「建立來源連線設定檔」)。
- 在「Customize parallelism configurations」(自訂平行處理設定) 區段中,按一下「Show parallelism configurations」(顯示平行處理設定)。
資料轉儲平行處理的速度,與來源資料庫的負載量有關。可用的設定如下:
- 最佳 (建議):平衡效能,來源資料庫負載最佳。
- 最大:提供最快的轉儲速度,但可能會增加來源資料庫的負載。
- 最低:在來源資料庫上使用最少的運算資源,但傾印處理量可能較低。
如果選擇調整平行處理設定,請務必提高來源資料庫的
max_replication_slots、max_wal_senders和max_worker_processes參數。建立遷移工作後,您可以執行遷移工作測試,驗證設定是否正確。 - 按一下 [儲存並繼續]。
設定並建立目的地 Cloud SQL 執行個體
- 在「Define a destination」(定義目的地) 頁面的「Type of destination instance」(目的地執行個體類型) 下拉式選單中,選取「New instance」(新執行個體)。定義所有相關設定:
- 在「Destination instance ID」(目的地執行個體 ID) 欄位中,提供 Cloud SQL 執行個體的 ID,或使用自動生成的 ID。
請勿在 ID 中加入敏感或個人識別資訊。執行個體名稱不必包含專案 ID。系統會在適當情況下 (例如在記錄檔中) 自動執行這項操作。
- 在「Password」(密碼) 欄位中,輸入目的地 Cloud SQL 執行個體的英數字元密碼。這是執行個體中
postgres管理員帳戶的密碼。您可以手動輸入密碼,也可以按一下「Generate」(產生),讓資料庫遷移服務自動建立密碼。
- 從「Database version」(資料庫版本) 下拉式選單中,選擇目的地執行個體的資料庫版本。
進一步瞭解跨版本遷移支援。
- 選取目的地執行個體的 PostgreSQL 適用的 Cloud SQL 版本。有兩種選項:PostgreSQL 適用的 Cloud SQL Enterprise 版本和 PostgreSQL 適用的 Cloud SQL Enterprise Plus 版本。
PostgreSQL 適用的 Cloud SQL 版本提供不同的功能、可用機型和定價。請務必參閱 Cloud SQL 說明文件,選擇符合需求的版本。詳情請參閱「PostgreSQL 適用的 Cloud SQL 版本簡介」。
- 「Region」(區域) 選單會顯示您在「Get started」(開始使用) 頁面中選取的區域。
如要將執行個體設為高可用性,請選取「多可用區 (可用性高)」。您可以同時選取主要和次要可用區。 在建立執行個體期間使用次要可用區時,須符合下列條件:
- 主要可用區預設為「Any」(不限),次要可用區預設為「Any (different from primary)」(不限 (與主要可用區不同))。
- 如果同時指定主要和次要可用區,兩者必須不同。
- 在「連線」部分,選擇是否要為目的地執行個體新增公開或私人 IP 位址。您可以將執行個體設為同時具備這兩種 IP 位址,但至少須具備其中一種,才能進行遷移。請在下方選取一個適用選項:
- 如要使用虛擬私有雲對接或反向 SSH 通道進行遷移,請選取
「私人 IP」
。
如要啟用私人 IP 連線,請務必符合所有額外的網路需求。
展開這個部分,即可查看完整的私人 IP 規定。
- 已啟用 Service Networking API。您可以使用 Google Cloud 控制台啟用 Service Networking API。
- 您具備
servicenetworking.services.addPeeringIAM 權限。 - 您已為專案設定私人服務存取權,因此必須具備
compute.networkAdminIAM 角色。 - 專案中至少有一個非舊版虛擬私有雲網路,或 /vpc/docs/shared-vpc 網路。
- 如果您使用的是共用虛擬私有雲網路,則還需要執行下列操作:
- 為主專案啟用 Service Networking API。
- 將使用者新增至主專案。
- 在主專案中,將 compute.networkAdmin IAM 角色授予使用者。
- 選取要對接的相關聯虛擬私有雲網路。如要透過虛擬私有雲對接連線至遷移來源,請選擇執行個體所在的虛擬私有雲。
- 如果所選虛擬私有雲從未設定代管服務網路,您可以選擇 IP 範圍,然後按一下「連線」,或使用系統自動選取的 IP 範圍,然後按一下「分配並連線」。
- 如要使用 IP 許可清單透過網際網路遷移,
請選取
「Public IP」(公開 IP)。
(選用) 在「公開 IP」下方,按一下「授權網路」欄位,然後授權網路或 Proxy 連線至 Cloud SQL 執行個體。網路僅會透過您提供的位址獲得授權。請參閱 Cloud SQL 說明文件中的「設定公開 IP」一節。
您會在後續步驟中設定遷移工作連線。 如要進一步瞭解可用的網路方法,請參閱「設定連線」。
- 如要使用虛擬私有雲對接或反向 SSH 通道進行遷移,請選取
「私人 IP」
。
- 在「Destination instance ID」(目的地執行個體 ID) 欄位中,提供 Cloud SQL 執行個體的 ID,或使用自動生成的 ID。
- 選取 Cloud SQL 執行個體的機型。進一步瞭解 PostgreSQL 機器類型。
- PostgreSQL 適用的 Cloud SQL Enterprise Plus 版本:如要在目的地資料庫使用資料快取功能,請勾選「Enable data cache」(啟用資料快取) 核取方塊。
資料快取是 PostgreSQL 適用的 Cloud SQL Enterprise Plus 版本執行個體提供的選用功能,可為目的地資料庫新增高速本機固態硬碟。這項功能可能會增加 Cloud SQL 費用。 如要進一步瞭解資料快取,請參閱 Cloud SQL 說明文件中的「資料快取總覽」。
- 指定 Cloud SQL 執行個體的儲存空間類型。您可以選擇固態硬碟 (SSD) 或傳統硬碟 (HDD)。
- 指定 Cloud SQL 執行個體的儲存空間容量 (以 GB 為單位)。
請確認執行個體有足夠的儲存空間,可處理來源資料庫中的資料。您隨時可以提高容量,但無法降低。
(選用) 設定目的地執行個體的資料加密選項或資源標籤。
展開這個部分即可查看選用步驟。
按一下「顯示選用設定」,然後:
指定是否要管理從來源遷移至目的地的資料加密。根據預設,您的資料會以 Google Cloud代管的金鑰加密。如要自行管理加密作業,您可以使用客戶自行管理的加密金鑰 (CMEK)。方法如下:
- 勾選「使用客戶自行管理的加密金鑰 (CMEK)」核取方塊。
- 從「Select a customer-managed key」(選取客戶自行管理的金鑰) 選單中,選取 CMEK。
如果找不到金鑰,請按一下「輸入金鑰資源名稱」,提供要使用的金鑰資源名稱。金鑰資源名稱範例:
projects/my-project-name/locations/my-location/keyRings/my-keyring/cryptoKeys/my-key。- 新增要套用至資料庫伺服器的必要旗標。 如果可以,請確保建立的目的地 Cloud SQL 執行個體上的資料庫旗標與來源資料庫上的旗標相同。進一步瞭解 PostgreSQL 支援的資料庫旗標。
- 新增 Cloud SQL 執行個體專屬的標籤。
標籤可以協助您管理執行個體。舉例來說,您可以按照成本中心或環境將標籤分門別類。帳單中也會顯示標籤,讓您瞭解標籤的成本分布情形。
- 按一下「建立目的地並繼續」。 資料庫遷移服務正在建立 Cloud SQL 目的地執行個體。這項程序應該會在幾分鐘內完成。
設定來源與目的地資料庫執行個體之間的連線
從「Connectivity method」(連線方式) 下拉式選單中,選取網路連線方式。這個方法會定義新建立的 Cloud SQL 執行個體如何連線至來源資料庫。目前遷移至新執行個體的網路連線方法包括 IP 許可清單、反向 SSH 通道和虛擬私有雲對接。
| 如要使用... | 具體做法 |
|---|---|
| IP 許可清單網路連線方式 | 您必須指定目的地執行個體的傳出 IP 位址。如果您建立的 Cloud SQL 執行個體是高可用性執行個體,請一併加入主要和次要執行個體的傳出 IP 位址。 |
| 反向 SSH 通道網路連線方式 | 您必須選取要託管通道的 Compute Engine VM 執行個體。 指定執行個體後,Google 會提供指令碼,用於執行在來源和目的地資料庫之間設定通道的步驟。您必須在 Google Cloud CLI 中執行指令碼。 請從可連線至來源資料庫和 Google Cloud的機器執行指令。 |
| 虛擬私有雲對接網路連線方式 | 您必須選取來源資料庫所在的虛擬私有雲網路。Cloud SQL 執行個體會更新,連線至這個網路。 |
選取並設定網路連線後,按一下「Configure and continue」(設定並繼續)。
設定遷移資料庫
您可以從來源執行個體遷移所有資料庫,也可以只選擇特定資料庫。目的地執行個體不得包含與所選遷移資料庫同名的資料庫。如果資料庫遷移服務遇到資料庫名稱衝突,系統會在遷移前捨棄目的地中的衝突資料庫。
- 在「Databases to migrate」(要遷移的資料庫) 清單中,選取下列其中一個選項:
- 所有資料庫:選取來源中的所有資料庫。
- 「Specific databases」(特定資料庫):可從來源的所有資料庫中選取特定資料庫。
如要遷移特定資料庫,可以篩選顯示的清單,並選取要透過資料庫遷移服務遷移至目的地的資料庫。
如果清單未顯示,且出現資料庫探索錯誤,請按一下「重新載入」。如果資料庫探索失敗,工作會遷移所有資料庫。您可以繼續建立遷移工作,稍後再修正連線錯誤。
- 按一下 [儲存並繼續]。
測試、建立及執行遷移工作
在這個最後步驟中,請查看遷移工作設定、來源、目的地和連線方式的摘要,然後測試遷移工作設定是否有效。如果遇到任何問題,可以修改遷移工作的設定。部分設定無法編輯。
-
在「測試及建立遷移工作」頁面,點選「測試工作」。
如果測試失敗,您可以在流程的適當部分解決問題,然後返回重新測試。如要瞭解如何排解遷移工作測試失敗的問題,請參閱「診斷 PostgreSQL 問題」。
-
遷移工作測試完成後,按一下「Create and start job」(建立並啟動工作),即可建立遷移工作並立即啟動;或者,您也可以按一下「Create job」(建立工作),建立遷移工作但不立即啟動。
如果工作在建立時未啟動,可以前往「Migration jobs」(遷移工作) 頁面,然後按一下「START」(啟動) 啟動工作。無論遷移工作何時開始,貴機構都必須為目的地執行個體的存在付費。
遷移作業正在進行中。啟動遷移工作後,資料庫遷移服務會開始執行初始完整轉儲和複製作業。詳情請參閱「已知限制」。
- 請繼續查看遷移工作。
Google Cloud CLI
建立目的地連線設定檔。
使用 Google Cloud CLI 遷移至新的目的地執行個體時,您可以在單一動作中建立目的地執行個體和連線設定檔。
執行下列指令 (點選連結即可展開):gcloud database-migration connection-profiles create postgresql這個範例使用選用的
--no-async旗標,因此所有作業都會同步執行。這表示某些指令可能需要一段時間才能完成。您可以略過--no-async旗標,以非同步方式執行指令。如果這麼做,您必須使用gcloud database-migration operations describe指令,確認作業是否成功。使用下列任何指令資料前,請先替換以下項目:
- 將 DEST_CONN_ID 替換為目的地連線設定檔 ID。
- 將 REGION 替換為要儲存連線設定檔的區域。這個區域應與目的地執行個體區域相同。
- DEST_INSTANCE:預先建立的目的地 Cloud SQL 執行個體 ID。
- DEST_USER:目的地資料庫的遷移使用者名稱。
- DEST_PASSWORD:目的地資料庫中遷移使用者的密碼。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \ --region=REGION \ --cloudsql-instance=DEST_INSTANCE \ --username=DEST_USER \ --password=DEST_PASSWORD \ --role=DESTINATION \ --no-async
Windows (PowerShell)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ` --region=REGION ` --cloudsql-instance=DEST_INSTANCE ` --username=DEST_USER ` --password=DEST_PASSWORD ` --role=DESTINATION ` --no-async
Windows (cmd.exe)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^ --region=REGION ^ --cloudsql-instance=DEST_INSTANCE ^ --username=DEST_USER ^ --password=DEST_PASSWORD ^ --role=DESTINATION ^ --no-async
您應該會收到類似以下的回應:
Waiting for connection profile [CONNECTION_PROFILE_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
建立遷移工作。
如果您使用虛擬私有雲對等互連或反向 SSH 通道連線能力,請務必新增必要旗標,例如--peer-vpc或--vm、--vm-ip、--vm-port、--vpc。詳情請參閱「設定連線」和「Google Cloud CLI 範例」。
執行下列指令 (點選連結即可展開):gcloud database-migration migration-jobs create這個範例使用選用的
--no-async旗標,因此所有作業都會同步執行。這表示某些指令可能需要一段時間才能完成。您可以略過--no-async旗標,以非同步方式執行指令。如果這麼做,您必須使用gcloud database-migration operations describe指令,確認作業是否成功。使用下列任何指令資料前,請先替換以下項目:
- MIGRATION_JOB_ID:遷移工作的機器可讀 ID。您可以使用這個值,透過資料庫遷移服務 Google Cloud CLI 指令或 API 執行遷移工作。
- REGION:要儲存遷移工作的區域 ID。
- MIGRATION_JOB_NAME:遷移工作的人類可讀名稱。這個值會顯示在 Google Cloud 控制台的資料庫遷移服務中。
- SOURCE_CONNECTION_PROFILE_ID:來源連線設定檔的機器可讀 ID。詳情請參閱「建立來源連線設定檔」。
- DESTINATION_CONNECTION_PROFILE_ID 替換為目的地連線設定檔的機器可讀 ID。
選用:資料庫遷移服務預設會遷移來源中的所有資料庫。如要只遷移特定資料庫,請使用
--databases-filter旗標,並以半形逗號分隔的清單指定 ID。例如:
--databases-filter=my-business-database,my-other-database您之後可以使用
gcloud database-migration migration-jobs update指令,編輯使用--databases-filter旗標建立的遷移工作。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ create MIGRATION_JOB_ID \ --no-async \ --region=REGION \ --display-name=MIGRATION_JOB_NAME \ --source=SOURCE_CONNECTION_PROFILE_ID \ --destination=DESTINATION_CONNECTION_PROFILE_ID \ --type=CONTINUOUS
Windows (PowerShell)
gcloud database-migration migration-jobs ` create MIGRATION_JOB_ID ` --no-async ` --region=REGION ` --display-name=MIGRATION_JOB_NAME ` --source=SOURCE_CONNECTION_PROFILE_ID ` --destination=DESTINATION_CONNECTION_PROFILE_ID ` --type=CONTINUOUS
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ create MIGRATION_JOB_ID ^ --no-async ^ --region=REGION ^ --display-name=MIGRATION_JOB_NAME ^ --source=SOURCE_CONNECTION_PROFILE_ID ^ --destination=DESTINATION_CONNECTION_PROFILE_ID ^ --type=CONTINUOUS
您應該會收到類似以下的回應:
Waiting for migration job [MIGRATION_JOB_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created migration job MIGRATION_JOB_ID [OPERATION_ID]