本頁說明如何對 PostgreSQL 執行同質快速遷移,將資料遷移至 AlloyDB for PostgreSQL。
總覽
快速啟動遷移是輕量級的連續遷移流程,適用於同質的 PostgreSQL 案例。透過快速啟動遷移功能,資料庫遷移服務可以自動設定遷移資料庫所需的一切:網路元件 (網路附件、子網路、私人連線設定)、連線設定檔和遷移工作。
透過快速入門遷移作業,您可以將資料移至現有的 AlloyDB for PostgreSQL 叢集,或在設定遷移作業時建立新叢集。快速遷移功能最適合:
- 基本遷移作業:您不需要精確控管資料轉儲作業的平行處理設定。
- 將資料庫從一個 Google Cloud 專案遷移至另一個專案。 設定快速啟動遷移時,您可以在與來源不同的專案中建立目的地叢集,並將資料庫遷移服務設為在另一個專案的虛擬私有雲 (VPC) 網路中建立網路連結和子網路。
-
從虛擬私有雲 (VPC) 網路中具有私人 IP 位址的來源遷移,例如 Compute Engine 上自行管理的資料庫,或是已啟用私人網路的 PostgreSQL 適用的 Cloud SQL 執行個體。 Google Cloud
如果來源主機位於外部 Google Cloud ,可能需要額外的網路元件 (例如 Cloud VPN 連線),才能透過虛擬私有雲網路中的私人 IP 位址存取來源。
- 資料庫連線目前僅支援 Private Service Connect 介面,搭配資料庫遷移服務私人連線設定。來源資料庫必須在虛擬私有雲網路中指派私人 IP。快速入門遷移作業不支援其他同質來源連線方法 (例如公開 IP 許可清單、反向 SSH 通道或虛擬私有雲對等互連)。
如要進一步瞭解快速遷移功能,請參閱主要資料庫遷移服務文件中的「 快速遷移總覽」。
事前準備
- 確認快速入門遷移是否完全支援您的情境。請參閱「 快速遷移功能限制」。
-
登入 Google 帳戶。
如果沒有帳戶,請 申請新帳戶。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- 啟用資料庫遷移服務、Compute Engine、Network Connectivity Center 和 AlloyDB for PostgreSQL 管理 API。
必要的角色
如要取得使用資料庫遷移服務,將資料快速遷移至 AlloyDB for PostgreSQL 所需的權限,請要求管理員在相關專案中,為參與遷移作業的帳戶授予必要的 Identity and Access Management (IAM) 角色。如要進一步瞭解如何授予角色,請參閱 IAM 說明文件中的「 管理存取權」。
來源專案中的角色和權限
在 Google Cloud 專案中,將下列角色授予特定帳戶,該專案是來源資料庫所在的專案:
- 執行遷移作業的使用者帳戶:
Compute 網路管理員角色 (
roles/compute.networkAdmin) - 為目的地專案的資料庫遷移服務服務帳戶:
Compute 網路檢視者 (
roles/compute.networkViewer)啟用 Database Migration Service API 時,系統會建立 Database Migration Service 服務帳戶。並自動產生相關聯的電子郵件地址。該電子郵件地址無法變更,這個電子郵件地址的格式如下:
service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.iam.gserviceaccount.com
這些預先定義的角色具備必要的權限,可透過資料庫遷移服務進行快速入門遷移作業,並在來源資料庫專案中設定連線。如要查看確切的必要權限,請展開「Required permissions (source)」(必要權限 (來源)) 部分:
必要權限 (來源)
如要使用資料庫遷移服務執行同質快速入門遷移作業,必須具備下列權限:
執行遷移作業的使用者帳戶:
compute.networks.*compute.subnetworks.*compute.networkAttachments.*
為目的地專案的資料庫遷移服務服務帳戶:
compute.networkAttachments.get。
目的地專案中的角色和權限
在 Google Cloud 專案中,將下列角色授予執行遷移作業的使用者帳戶,該專案是目的地資料庫所在的專案:
-
資料庫遷移管理員 (
roles/datamigration.admin) -
AlloyDB 管理員 (
roles/alloydb.admin)
這些預先定義的角色具備在目的地資料庫專案中設定必要遷移元件的權限,可透過資料庫遷移服務進行快速入門遷移。如要查看確切的必要權限,請展開「Required permissions (destination)」(必要權限 (目的地)) 部分:
必要權限 (目的地)
如要使用資料庫遷移服務執行同質快速入門遷移作業,必須具備下列權限:
datamigration.*alloydb.clusters.createalloydb.clusters.getalloydb.clusters.listalloydb.clusters.updatealloydb.clusters.deletealloydb.instances.createalloydb.instances.getalloydb.instances.listalloydb.instances.updatealloydb.instances.deletealloydb.instances.executeSqlalloydb.operations.getalloydb.users.listalloydb.users.getalloydb.users.createalloydb.users.updatealloydb.users.delete
設定來源資料庫
如要設定來源 PostgreSQL 資料庫,請按照下列步驟操作:
- 在執行個體中建立專用的遷移使用者帳戶。
- 將必要權限指派給專用的遷移使用者帳戶。
針對要遷移的每個資料庫執行下列指令:
-- Grant the REPLICATION attribute ALTER ROLE MIGRATION_USER REPLICATION; -- Grant database-level permissions. -- Repeat for each database you want to migrate. GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER; -- Grant schema-level usage. -- Repeat for each schema in each database you want to migrate. GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;
更改下列內容:
- MIGRATION_USER,並輸入遷移使用者帳戶的名稱。
- 將 DATABASE_NAME 替換為要遷移的資料庫名稱。
- SCHEMA_NAME,並填入要遷移的資料庫結構定義名稱。
- 遷移使用者帳戶必須擁有要遷移的資料表。如要授予這個存取層級,請採取下列其中一項做法:
- 將
SUPERUSERPostgreSQL 角色指派給遷移帳戶。- 如果是 PostgreSQL 適用的 Cloud SQL 來源,請指派
cloudsqlsuperuser角色。 - 如果是其他來源,請指派
SUPERUSER角色,或參閱資料庫供應商文件,瞭解同等權限組合。
- 如果是 PostgreSQL 適用的 Cloud SQL 來源,請指派
- 將遷移使用者帳戶新增至擁有資料表的使用者群組。
執行下列指令:
-- Grant table ownership. GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;
更改下列內容:
- TABLE_OWNER_GROUP_NAME,其中包含要遷移的每個資料表所屬使用者群組的名稱。
- MIGRATION_USER,並輸入遷移使用者帳戶的名稱。
- 將
- 如果資料表沒有主鍵:在變更資料擷取 (CDC) 階段,資料庫遷移服務不會複製沒有主鍵的資料表
UPDATE或DELETE作業。如要在複寫作業中納入這類作業,請使用REPLICA IDENTITY修改沒有主鍵的資料表:ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL; ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;
更改下列內容:
- TABLE_NAME 是沒有主鍵的資料表名稱。
- INDEX_NAME 是可追蹤沒有主鍵的資料表資料列的專屬索引。
- 使用資料庫旗標設定複製設定。
自行管理的來源
如要儲存資料庫標記的變更,必須完整重新啟動資料庫。 下列範例使用 SQL 查詢來變更旗標值。 如果無法直接執行 SQL 查詢,請參閱供應商文件,瞭解如何變更這些標記。
- 將
wal_level參數設為logical。執行下列指令:ALTER SYSTEM SET wal_level = 'logical';
- 將
wal_sender_timeout參數設為0。這個值會停用逾時機制,該機制用於終止閒置的複寫連線。執行下列指令:ALTER SYSTEM SET wal_sender_timeout = 0;
- 使用
max_replication_slots參數設定複製作業時段數量上限。這個參數的值至少必須是每個遷移工作要遷移的資料庫數量,外加一些保留值,用於同步處理資料表。舉例來說,如果您要遷移 5 個資料庫,且為來源執行個體建立了 2 項遷移工作,則複製作業運算單元至少須有
5 * 2 = 10個,加上您已使用的複製作業運算單元數量。如要設定這個參數,請執行下列指令:
其中 NUMBER_OF_SLOTS 代表複寫時段數量上限。ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
- 將
max_wal_senders參數設為至少與max_replication_slots相同的值,再加上您在執行個體上已使用的傳送者數量。舉例來說,如果
max_replication_slots參數設為10,且您已使用 2 個傳送者,則同時執行的 WAL 傳送者程序數量為10 + 2 = 12。如要設定這個參數,請執行下列指令:
其中 NUMBER_OF_SENDERS 代表同時執行的 WAL 傳送器程序數量。ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
- 將
max_worker_processes至少設為要遷移的資料庫數量,加上執行個體上已使用的max_worker_processes數量。如要設定這個參數,請執行下列指令: 其中 NUMBER_OF_PROCESSES 代表要遷移的資料庫數量。ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
PostgreSQL 適用的 Cloud SQL 來源
如果是 Cloud SQL 來源,請在 Google Cloud 控制台中設定資料庫旗標。 修改資料庫旗標後,您必須重新啟動執行個體,設定才會生效。如要進一步瞭解如何在 Cloud SQL 中設定資料庫旗標,請參閱 Cloud SQL 說明文件中的「設定資料庫旗標」。
- 將
cloudsql.logical_decoding旗標設為on。 - 將
wal_sender_timeout參數設為0。 這個值會停用逾時機制,該機制用於終止閒置的複寫連線。 - 使用
max_replication_slots參數設定複製時段數量上限。這個參數的值至少必須等於每個遷移工作要遷移的資料庫數量,外加一些保留值,用於同步處理資料表。舉例來說,如果您要遷移 5 個資料庫,且為來源執行個體建立了 2 項遷移工作,則複製作業運算單元至少須有
5 * 2 = 10個,加上您已使用的複製作業運算單元數量。 - 將
max_wal_senders參數設為至少與max_replication_slots相同的值,加上您在執行個體上已使用的傳送者數量。舉例來說,如果
max_replication_slots參數設為10,且您已使用 2 個傳送者,則同時執行的 WAL 傳送者程序數量為10 + 2 = 12。 - 將
max_worker_processes設為至少要遷移的資料庫數量,加上執行個體上已使用的max_worker_processes數量。
- 將
建立並執行快速入門遷移作業
如要建立及執行快速入門遷移作業,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Get started」(開始使用) 頁面。
- 在「來源引擎」選單中,選取「PostgreSQL」。
- 在「目的地引擎」選單中,選取「AlloyDB for PostgreSQL」。
系統會顯示「隆重推出 PostgreSQL 快速遷移功能」部分。
- 在「隆重推出 PostgreSQL 快速遷移功能」部分中,按一下「開始遷移」。
系統會開啟「遷移至 AlloyDB for PostgreSQL」頁面。
- 在「設定遷移作業」部分,執行下列操作:
- 從「目的地區域」選單中,選取目的地 AlloyDB for PostgreSQL 叢集的區域。
- 在「遷移作業前置字串」方塊中,輸入易記的字串,這個字串會加到為快速啟動遷移作業建立的所有遷移作業實體名稱中,包括連線設定檔、私人連線設定、網路連結及其子網路,以及遷移工作。
- 從「設定類型」選單中,選取下列其中一個選項:
- 現有連線設定:如果您已有網路連結和私人連線設定,且使用 Private Service Connect 介面方法,請選取這個選項。如果您先前使用快速入門遷移作業,並想重複使用相同的網路資源,建議採用這個選項。
- 新的連線設定:選取這個選項,在來源資料庫虛擬私有雲網路中建立新的網路連結和網路連結子網路。私人連線設定會建立在與目的地叢集相同的專案中。
按一下「Continue」(繼續)。
- 在「連結來源」部分,執行下列操作:
- 輸入來源資料庫的主機名稱或私有 IP 位址。來源資料庫位址必須可從來源虛擬私有雲網路連線。
- 輸入用來存取主機的通訊埠。預設的 PostgreSQL 連接埠為
5432。 - 在來源資料庫中,輸入專用遷移帳戶的使用者名稱和密碼。
- 在「加密類型」選單中,選取下列其中一個選項:
- 無:如果來源資料庫不需要 SSL/TLS 加密連線。
- 必要:如果來源資料庫需要 SSL/TLS 加密連線,這個選項不需要驗證任何憑證。
- 在「要遷移的資料庫」選單中,按一下「自訂」。 使用側邊面板,只選取要遷移至 AlloyDB for PostgreSQL 的資料庫。 按一下「Continue」(繼續)。
- 在「設定目的地」部分,您可以建立新的目的地叢集,或選取現有叢集。
新叢集
如要建立新的目的地叢集,請按照下列步驟操作:
- 從「目的地執行個體類型」選單中,選取「新叢集」。
資料庫遷移服務會使用新的叢集預設 AlloyDB for PostgreSQL 設定。按一下「自訂」,調整叢集功能,例如機型、區域可用性或資料保護設定。如要進一步瞭解叢集設定,請參閱 AlloyDB for PostgreSQL 說明文件的「 建立叢集及其主要執行個體」。
- 在「Password」(密碼) 欄位中,輸入預設
postgresql管理員使用者的密碼。資料庫遷移服務會以這個使用者身分連線,以便遷移資料。
現有叢集
您可以將資料庫遷移至現有叢集。 請確認目的地叢集已啟用 Private Service Connect,且不會透過 AlloyDB 連接器強制執行 mTLS。請按照下列步驟操作:
- 在「目的地執行個體類型」選單中,選取「現有的叢集」。
- 從「現有叢集 ID」選單中,選取叢集 ID。
- 從「目的地執行個體類型」選單中,選取「新叢集」。
- 按一下「開始遷移」。
資料庫遷移服務現在會建立遷移工作,並開始遷移程序。您可以在 AlloyDB for PostgreSQL 中監控遷移進度,以及目的地叢集的健康狀態。詳情請參閱 PostgreSQL 適用的 AlloyDB 說明文件中的「 查看執行個體詳細資料」。
完成遷移作業
決定將應用程式切換至新的 AlloyDB for PostgreSQL 執行個體後,請按照下列步驟完成遷移作業: