遷移至現有目的地執行個體時,如果是標準遷移作業,資料庫遷移服務會將目的地執行個體降級,設為外部副本。降級執行個體不會將 PostgreSQL 適用的 Cloud SQL 設為唯讀模式,但在遷移過程中執行特定作業,可能會導致遷移錯誤。遷移至現有的目的地執行個體時,請注意下列操作事項:
- 執行個體降級:如果是標準遷移作業,資料庫遷移服務會將目的地執行個體降級,設為來源資料庫的副本。快速遷移作業不需要也不會降級目的地執行個體。
- 避免對遷移資料執行寫入作業:請勿在目的地執行個體中,對遷移作業包含的資料表或資料庫執行寫入作業 (例如
INSERT、UPDATE、DELETE或 DDL 結構定義變更)。這類作業可能會導致與來源資料發生複製衝突。 - 管理資料庫使用者:您隨時可以使用標準
psql指令,或透過 Google Cloud 控制台中的 Cloud SQL 建立及管理資料庫使用者。詳情請參閱 Cloud SQL 說明文件中的「管理使用者」一文。 - 備份和唯讀副本:在連續複製期間,自動備份和時間點復原 (PITR) 功能會暫停,且在升級遷移工作前,您無法從目的地執行個體建立 Cloud SQL 唯讀副本。
詳情請參閱「現有執行個體的已知限制」。
資料庫遷移服務會執行遷移工作,將資料從來源資料庫執行個體遷移到目的地資料庫執行個體。為現有目的地執行個體建立遷移工作,包括:
- 定義遷移工作設定
- 定義來源設定並選取要遷移的資料庫
- 選取現有的目的地資料庫執行個體
- 將現有執行個體降級,設為來源資料庫的副本 (僅限標準遷移作業)
- 設定來源與目的地資料庫執行個體之間的連線
- 測試遷移工作,確保您為工作提供的連線資訊有效
事前準備
建立遷移工作,將資料遷移至現有的目的地資料庫執行個體前,請務必完成下列事項:
- 確認這項遷移類型支援您的情境。 舉例來說,如要遷移至在資料庫遷移服務以外建立的資料庫,Cloud SQL 目的地執行個體必須為空白,或僅包含系統設定資料。詳情請參閱「已知限制」。
建立目的地資料庫執行個體。 請參閱 Cloud SQL 說明文件中的「建立執行個體」。
- 準備來源資料庫執行個體。請參閱下列頁面:
如要建立遷移工作,將資料遷移至現有的目的地執行個體,請按照下列步驟操作:
控制台
定義遷移工作設定
- 前往 Google Cloud 控制台的「Migration jobs」(遷移工作) 頁面。
- 按一下「建立遷移工作」。
遷移工作設定精靈頁面隨即開啟。 這個精靈包含多個面板,可引導您完成各項設定步驟。
您隨時可以點選「儲存並結束」,暫停建立遷移工作。您輸入的所有資料都會儲存為草稿遷移工作。您可以稍後再完成遷移工作草稿。
- 在「開始使用」頁面中輸入下列資訊:
- 遷移工作名稱
這是遷移工作的人類可讀名稱。這個值會顯示在 Google Cloud 控制台中。
- 遷移工作 ID
這是遷移工作的機器可讀 ID。 您可以使用這個值,透過資料庫遷移服務 Google Cloud CLI 指令或 API 執行遷移工作。
- 從「Source database engine」(來源資料庫引擎) 清單中選取「PostgreSQL」。
系統會自動填入「Destination database engine」(目的地資料庫引擎) 欄位,且無法變更。
- 選取儲存遷移工作的區域。
資料庫遷移服務是完全區域性的產品,也就是說,與遷移作業相關的所有實體 (來源和目的地連線設定檔、遷移工作、目的地資料庫) 都必須儲存在單一區域。請根據需要資料的服務 (例如 Compute Engine 執行個體、App Engine 應用程式和其他服務) 所在位置選取區域。選定目的地區域後,即無法變更。
- 指定遷移工作類型:「單次」 (僅限快照) 或「連續」(快照 + 持續變更)。
- 遷移工作名稱
- 按一下 [儲存並繼續]。
指定來源連線設定檔的相關資訊
在「Define a source」(定義來源) 頁面中,執行下列步驟:
- 在「Source connection profile」(來源連線設定檔) 下拉式選單中,選取來源資料庫的連線設定檔。
- 在「Customize data dump configurations」(自訂資料轉儲設定) 部分,按一下「Show data dump configurations」(顯示資料轉儲設定)。
資料轉儲平行處理的速度,與來源資料庫的負載量有關:
- 最佳 (建議):平衡效能,來源資料庫負載最佳。
- 最大:提供最快的轉儲速度,但可能會增加來源資料庫的負載。
- 最低:在來源資料庫上使用最少的運算資源,但傾印處理量可能較低。
如果選擇調整資料轉儲平行處理設定,請務必提高來源資料庫的
max_replication_slots、max_wal_senders和max_worker_processes參數。 - 按一下 [儲存並繼續]。
選取目的地 Cloud SQL 執行個體
- 在「Type of destination instance」(目的地執行個體類型) 選單中,選取「Existing instance」(現有執行個體)。
- 在「Select destination instance」(選取目的地執行個體) 部分,選取目的地執行個體。
-
查看「Instance details」(執行個體詳細資料) 區段中的資訊,然後按一下「Select and continue」(選取並繼續)。
如要在標準遷移作業中遷移至現有的目的地資料庫,資料庫遷移服務會降級目標執行個體,並將其設為副本。在確認視窗中輸入目的地執行個體 ID,表示可以安全執行降級作業。
- 按一下「確認並繼續」。
設定來源與目的地資料庫執行個體之間的連線
從「Connectivity method」(連線方式) 下拉式選單中,選取網路連線方式。這個方法定義了目的地 Cloud SQL 執行個體連線至來源資料庫的方式。目前的網路連線方法包括 IP 許可清單、反向 SSH 通道、Private Service Connect 介面和虛擬私有雲對接。
| 如要使用... | 具體做法 |
|---|---|
| IP 許可清單網路連線方式 | 您必須指定目的地執行個體的傳出 IP 位址。如果您建立的 Cloud SQL 執行個體是高可用性執行個體,請一併加入主要和次要執行個體的傳出 IP 位址。 |
| 反向 SSH 通道網路連線方式 | 您必須選取要託管通道的 Compute Engine VM 執行個體。 指定執行個體後,Google 會提供指令碼,執行在來源和目的地資料庫之間設定通道的步驟。您必須在 Google Cloud CLI 中執行指令碼。 請從可連線至來源資料庫和 Google Cloud的機器執行指令。 |
| Private Service Connect 介面連線方式 | 資料庫遷移服務會自動建立必要連線。 只有在目的地執行個體已啟用 Private Service Connect,且具備網路連結時,才能使用這個連線方式。如要進一步瞭解 Private Service Connect 介面,請參閱 Cloud SQL 說明文件中的「Private Service Connect 傳出連線」。 |
| 虛擬私有雲對接網路連線方式 | 您必須選取來源資料庫所在的虛擬私有雲網路。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 遷移至現有執行個體時,必須手動建立目的地執行個體的連線設定檔。如果使用 Google Cloud 控制台,則不需要執行這項操作,因為資料庫遷移服務會為您建立及移除目的地連線設定檔。
建立目的地連線設定檔。
執行gcloud database-migration connection-profiles create指令,為現有目的地執行個體建立目的地連線設定檔 (點選連結即可展開):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]
建立遷移工作。
下列範例代表遷移情境,其中您在來源和目的地資料庫之間使用私人 IP 連線。如果使用其他連線類型 (例如虛擬私有雲對等互連或反向 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]
降級目的地資料庫。
如要執行標準遷移作業,資料庫遷移服務會要求您先將現有的目的地資料庫執行個體降級,並設為外部副本,再開始遷移工作。執行gcloud database-migration migration-jobs demote-destination指令 (點選連結即可展開):gcloud database-migration migration-jobs demote-destination使用下列任何指令資料前,請先替換以下項目:
- 將 MIGRATION_JOB_ID 替換為遷移工作 ID。
如果您不知道 ID,可以使用
gcloud database-migration migration-jobs list指令列出特定區域中的所有遷移工作,並查看其 ID。 - 將 REGION 替換為連線設定檔儲存區域的 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ demote-destination MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` demote-destination MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ demote-destination MIGRATION_JOB_ID ^ --region=REGION
結果
這項動作會以非同步方式執行。因此,這個指令會傳回代表長時間執行的作業的 作業實體:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: demote-destination name: OPERATION_ID
如要確認作業是否成功,您可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令查看遷移工作狀態。 - 請搭配使用
gcloud database-migration operations describe和 OPERATION_ID,查看作業本身的狀態。
- 將 MIGRATION_JOB_ID 替換為遷移工作 ID。
選用:驗證遷移工作。
此時,遷移工作已設定完畢,並連線至目的地資料庫執行個體。您可以使用verify、start、stop、restart和resume作業來管理。建議您先執行gcloud database-migration migration-jobs verify指令,驗證遷移工作 (點選連結即可展開):gcloud database-migration migration-jobs verify使用下列任何指令資料前,請先替換以下項目:
- 將 MIGRATION_JOB_ID 替換為遷移工作 ID。
如果您不知道 ID,可以使用
gcloud database-migration migration-jobs list指令列出特定區域中的所有遷移工作,並查看其 ID。 - 將 REGION 替換為連線設定檔儲存區域的 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ verify MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` verify MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ verify MIGRATION_JOB_ID ^ --region=REGION
結果
這項動作會以非同步方式執行。因此,這個指令會傳回代表長時間執行的作業的 作業實體:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: verify name: OPERATION_ID
如要確認作業是否成功,您可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令和 OPERATION_ID,查看作業本身的狀態。
- 將 MIGRATION_JOB_ID 替換為遷移工作 ID。
啟動遷移工作。
執行gcloud database-migration migration-jobs start指令,啟動遷移工作 (點選連結即可展開):gcloud database-migration migration-jobs start使用下列任何指令資料前,請先替換以下項目:
- 將 MIGRATION_JOB_ID 替換為遷移工作 ID。
如果您不知道 ID,可以使用
gcloud database-migration migration-jobs list指令列出特定區域中的所有遷移工作,並查看其 ID。 - 將 REGION 替換為連線設定檔儲存區域的 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ start MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` start MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ start MIGRATION_JOB_ID ^ --region=REGION
結果
這項動作會以非同步方式執行。因此,這個指令會傳回代表長時間執行的作業的 作業實體:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: start name: OPERATION_ID
如要確認作業是否成功,您可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令和 OPERATION_ID,查看作業本身的狀態。
- 將 MIGRATION_JOB_ID 替換為遷移工作 ID。
升級遷移工作。
遷移作業進入變更資料擷取 (CDC) 階段後,您就能將目的地資料庫執行個體從副本升級為獨立執行個體。 執行gcloud database-migration migration-jobs promote指令 (點選連結即可展開):gcloud database-migration migration-jobs promote使用下列任何指令資料前,請先替換以下項目:
- 將 MIGRATION_JOB_ID 替換為遷移工作 ID。
如果您不知道 ID,可以使用
gcloud database-migration migration-jobs list指令列出特定區域中的所有遷移工作,並查看其 ID。 - 將 REGION 替換為連線設定檔儲存區域的 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ promote MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` promote MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ promote MIGRATION_JOB_ID ^ --region=REGION
結果
這項動作會以非同步方式執行。因此,這個指令會傳回代表長時間執行的作業的 作業實體:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: start name: OPERATION_ID
如要確認作業是否成功,您可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令和 OPERATION_ID,查看作業本身的狀態。
- 將 MIGRATION_JOB_ID 替換為遷移工作 ID。