GSP918
總覽
資料庫遷移服務提供單次與連續工作選項,方便將資料遷移至 Cloud SQL,並支援多種連線方式,包括 IP 許可清單、反向 SSH 通道、虛擬私有雲對接,以及 Private Service Connect 介面。如需更多連線設定資訊,請參閱設定連線指南。
本實驗室的主題是將虛擬機器代管的獨立 PostgreSQL 資料庫,遷移至 PostgreSQL 適用的 Cloud SQL。遷移過程將使用資料庫遷移服務的連續工作,並透過虛擬私有雲對接建立連線。
使用資料庫遷移服務遷移資料庫前,必須先在來源資料庫完成幾項前置步驟:
- 建立專責使用者:這位使用者必須具備複製權限。
- 新增
pglogical 擴充功能:來源資料庫必須安裝這項擴充功能。
- 授予必要權限:必須授權專責使用者存取待遷移資料庫中的結構定義和資料表,以及
postgres 資料庫。
設定完畢之後,您會建立並執行遷移工作,過程包括以下步驟:
- 初步複製:確認資料庫的初始副本已成功傳輸至 Cloud SQL 執行個體。
- 連續遷移:瞭解持續遷移工作如何將來源的即時資料更新,套用至 Cloud SQL 執行個體。
- 升級:將 Cloud SQL 執行個體升級為可讀寫的獨立資料庫,完成遷移工作。
課程內容
在這個實驗室,您會瞭解如何執行下列工作:
- 準備要遷移的來源資料庫。
- 為 PostgreSQL 執行個體 (例如獨立 PostgreSQL) 的來源連線建立設定檔。
- 使用虛擬私有雲對接,設定來源與目的地資料庫執行個體之間的連線能力。
- 設定防火牆和資料庫存取規則來允許存取來源資料庫,以進行遷移。
- 使用資料庫遷移服務,建立、執行並驗證連續遷移工作。
- 將目的地執行個體 (PostgreSQL 適用的 Cloud SQL) 升級為獨立資料庫,供讀取及寫入資料。
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始實驗室及登入 Google Cloud 控制台
-
按一下「Start Lab」按鈕。如果實驗室會產生費用,請在開啟的對話方塊中選取付款方式。右側的「Lab setup and access」面板會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 此實驗室所需的臨時憑證 (使用者名稱和密碼)
- 完成此實驗室所需的其他資訊 (如有)
請注意,實驗室計時器位於頁面頂端附近,會顯示剩餘時間。
-
按一下「Open Google Cloud console」。如果使用 Chrome 瀏覽器,也可以按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗並排開啟分頁。
注意:頁面顯示「選擇帳戶」對話方塊時,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab setup and access」面板找到「Username」。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab setup and access」面板找到「Password」。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
繼續點按後續頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請按一下「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示
。
-
系統顯示視窗時,請按照下列步驟操作:
- 繼續操作 Cloud Shell 視窗。
- 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:。輸出內容中有一行文字,宣告本工作階段的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
- 點按「授權」。
輸出內容:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
確認已啟用 Database Migration API
使用資料庫遷移服務時,需要透過 Database Migration API 來管理相關資料遷移作業。
- 開啟 Google Cloud 控制台,在標題列的「搜尋」欄位輸入 Database Migration API,並從搜尋結果中點選「Database Migration API」。
如果該 API 已啟用,您會看到「管理」按鈕。
- 如果看到「啟用」按鈕,請按一下啟用 API。
確認已啟用 Service Networking API
必須啟用 Service Networking API,才能將 Cloud SQL 設為支援虛擬私有雲對接,並透過私人 IP 位址建立連線。
- 前往 Cloud 控制台,在標題列的「搜尋」欄位輸入 Service Networking API,然後點選搜尋結果中的「Service Networking API」。
如果該 API 已啟用,您會看到「管理」按鈕。
- 如果看到「啟用」按鈕,請按一下啟用 API。
工作 1:準備要遷移的來源資料庫
為透過資料庫遷移服務遷移來源資料庫,您必須做好下列準備:使用 pglogical 擴充功能升級資料庫,接著建立資料庫遷移使用者。
使用 pglogical 擴充功能升級資料庫之前,請先執行下列操作:
- 安裝並設定
pglogical 資料庫擴充功能。
- 設定獨立的 PostgreSQL 資料庫,允許透過 Cloud Shell 和 Cloud SQL 存取。
- 將
pglogical 資料庫擴充功能新增至獨立伺服器中的 postgres、orders 和 gmemegen_db 資料庫。
建立資料庫遷移使用者時,請建立具備複製權限的 migration_admin 使用者,並授予存取結構定義和關聯的必要權限。
使用 pglogical 擴充功能升級資料庫
在這一節,您會下載 pglogical 資料庫擴充功能,並新增至 postgresql-vm VM 執行個體中的 orders 和 postgres 資料庫。
-
點選 Google Cloud 控制台中的導覽選單 圖示 (
),然後依序點選「Compute Engine」>「VM 執行個體」。
-
找到 postgresql-vm VM 執行個體,按一下「SSH」。
-
如果出現提示訊息,請點選「授權」。
-
在新的終端機視窗輸入下列指令,安裝 pglogical 資料庫擴充功能:
sudo apt install postgresql-14-pglogical
注意事項:pglogical 邏輯複製系統完全是以 PostgreSQL 擴充功能導入,與資料庫緊密整合,無需設定觸發條件或使用任何外部程式。這個系統可以替代實體複製,以發布/訂閱模式來選擇性複製資料,效率相當高。
- 下載並套用 PostgreSQL 設定檔的某些附加功能 (用來啟用
pglogical 擴充功能),然後使用下列指令重新啟動 postgresql 服務:
sudo su - postgres -c "gsutil cp gs://spls/gsp918/pg_hba_append.conf ."
sudo su - postgres -c "gsutil cp gs://spls/gsp918/postgresql_append.conf ."
sudo su - postgres -c "cat pg_hba_append.conf >> /etc/postgresql/14/main/pg_hba.conf"
sudo su - postgres -c "cat postgresql_append.conf >> /etc/postgresql/14/main/postgresql.conf"
sudo systemctl restart postgresql@14-main
這些檔案會在 pg_hba.conf 中新增一條規則,允許所有主機存取:
#GSP918 - 允許所有主機存取
host all all 0.0.0.0/0 md5
在 postgresql.conf 中加入下列指令,即可完成基本設定,讓 pglogical 監聽所有位址:
#GSP918 - 新增 pglogical 資料庫擴充功能的設定
wal_level = logical # minimal、replica 或 logical
max_worker_processes = 10 # 在供應端節點,每個資料庫需要一個
# 在訂閱端節點,每個節點需要一個
max_replication_slots = 10 # 在供應端節點,每個節點需要一個
max_wal_senders = 10 # 在供應端節點,每個節點需要一個
shared_preload_libraries = 'pglogical'
max_wal_size = 1GB
min_wal_size = 80MB
listen_addresses = '*' # 設定要監聽的 IP 位址,'*' 代表監聽所有位址
上方的程式碼片段現已附加至相關檔案,PostgreSQL 服務則已重新啟動。
- 執行下列指令來啟動 psql 工具:
sudo su - postgres
psql
- 使用下列指令,將
pglogical 資料庫擴充功能新增至 postgres、orders 和 gmemegen_db 資料庫:
\c postgres;
CREATE EXTENSION pglogical;
\c orders;
CREATE EXTENSION pglogical;
\c gmemegen_db;
CREATE EXTENSION pglogical;
- 列出伺服器上的 PostgreSQL 資料庫:
\l
如下所示,輸出內容應會列出預設的 postgresql 資料庫,以及用於這個實驗室的 orders 和 gmemegen_db 資料庫。這個實驗室不會用到 gmemegen_db 資料庫。
輸出內容:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+---------+---------+-----------------------
gmemegen_db | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
orders | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
建立資料庫遷移使用者
在這一節,您會建立專門管理資料庫遷移作業的使用者。
- 在 psql 輸入下列指令,建立具備複製角色的新使用者:
CREATE USER migration_admin PASSWORD 'DMS_1s_cool!';
ALTER DATABASE orders OWNER TO migration_admin;
ALTER ROLE migration_admin WITH REPLICATION;
授權給遷移使用者
在這一節,您會授予 migration_admin 使用者必要權限,讓資料庫遷移服務得以遷移資料庫。
- 在 psql 執行下列指令,授予
postgres 資料庫中 pglogical 結構定義和資料表的權限:
\c postgres;
GRANT USAGE ON SCHEMA pglogical TO migration_admin;
GRANT ALL ON SCHEMA pglogical TO migration_admin;
GRANT SELECT ON pglogical.tables TO migration_admin;
GRANT SELECT ON pglogical.depend TO migration_admin;
GRANT SELECT ON pglogical.local_node TO migration_admin;
GRANT SELECT ON pglogical.local_sync_status TO migration_admin;
GRANT SELECT ON pglogical.node TO migration_admin;
GRANT SELECT ON pglogical.node_interface TO migration_admin;
GRANT SELECT ON pglogical.queue TO migration_admin;
GRANT SELECT ON pglogical.replication_set TO migration_admin;
GRANT SELECT ON pglogical.replication_set_seq TO migration_admin;
GRANT SELECT ON pglogical.replication_set_table TO migration_admin;
GRANT SELECT ON pglogical.sequence_state TO migration_admin;
GRANT SELECT ON pglogical.subscription TO migration_admin;
- 使用下列指令,授予
orders 資料庫中 pglogical 結構定義和資料表的權限:
\c orders;
GRANT USAGE ON SCHEMA pglogical TO migration_admin;
GRANT ALL ON SCHEMA pglogical TO migration_admin;
GRANT SELECT ON pglogical.tables TO migration_admin;
GRANT SELECT ON pglogical.depend TO migration_admin;
GRANT SELECT ON pglogical.local_node TO migration_admin;
GRANT SELECT ON pglogical.local_sync_status TO migration_admin;
GRANT SELECT ON pglogical.node TO migration_admin;
GRANT SELECT ON pglogical.node_interface TO migration_admin;
GRANT SELECT ON pglogical.queue TO migration_admin;
GRANT SELECT ON pglogical.replication_set TO migration_admin;
GRANT SELECT ON pglogical.replication_set_seq TO migration_admin;
GRANT SELECT ON pglogical.replication_set_table TO migration_admin;
GRANT SELECT ON pglogical.sequence_state TO migration_admin;
GRANT SELECT ON pglogical.subscription TO migration_admin;
- 使用下列指令,授予
orders 資料庫中 public 結構定義和資料表的權限:
GRANT USAGE ON SCHEMA public TO migration_admin;
GRANT ALL ON SCHEMA public TO migration_admin;
GRANT SELECT ON public.distribution_centers TO migration_admin;
GRANT SELECT ON public.inventory_items TO migration_admin;
GRANT SELECT ON public.order_items TO migration_admin;
GRANT SELECT ON public.products TO migration_admin;
GRANT SELECT ON public.users TO migration_admin;
- 使用下列指令,授予
gmemegen_db 資料庫中 pglogical 結構定義和資料表的權限:
\c gmemegen_db;
GRANT USAGE ON SCHEMA pglogical TO migration_admin;
GRANT ALL ON SCHEMA pglogical TO migration_admin;
GRANT SELECT ON pglogical.tables TO migration_admin;
GRANT SELECT ON pglogical.depend TO migration_admin;
GRANT SELECT ON pglogical.local_node TO migration_admin;
GRANT SELECT ON pglogical.local_sync_status TO migration_admin;
GRANT SELECT ON pglogical.node TO migration_admin;
GRANT SELECT ON pglogical.node_interface TO migration_admin;
GRANT SELECT ON pglogical.queue TO migration_admin;
GRANT SELECT ON pglogical.replication_set TO migration_admin;
GRANT SELECT ON pglogical.replication_set_seq TO migration_admin;
GRANT SELECT ON pglogical.replication_set_table TO migration_admin;
GRANT SELECT ON pglogical.sequence_state TO migration_admin;
GRANT SELECT ON pglogical.subscription TO migration_admin;
- 使用下列指令,授予
gmemegen_db 資料庫中 public 結構定義和資料表的權限:
GRANT USAGE ON SCHEMA public TO migration_admin;
GRANT ALL ON SCHEMA public TO migration_admin;
GRANT SELECT ON public.meme TO migration_admin;
做好上述準備之後,即可開始遷移來源資料庫。您已為 migration_admin 使用者授予所有必要權限,資料庫遷移服務現在能遷移 postgres、orders 和 gmemegen_db 資料庫。
接下來,請將 migration_admin 使用者設為 orders 資料庫內資料表的擁有者,稍後測試遷移作業時才能編輯來源資料。
- 執行下列指令:
\c orders;
\dt
ALTER TABLE public.distribution_centers OWNER TO migration_admin;
ALTER TABLE public.inventory_items OWNER TO migration_admin;
ALTER TABLE public.order_items OWNER TO migration_admin;
ALTER TABLE public.products OWNER TO migration_admin;
ALTER TABLE public.users OWNER TO migration_admin;
\dt
輸出內容
List of relations
Schema | Name | Type | Owner
--------+----------------------+-------+-------
public | distribution_centers | table | migration_admin
public | inventory_items | table | migration_admin
public | order_items | table | migration_admin
public | products | table | migration_admin
public | users | table | migration_admin
(5 rows)
- 輸入下列指令,結束 psql 和 postgres 使用者工作階段:
\q
exit
點選「Check my progress」,確認目標已達成。
為 PostgreSQL 來源執行個體做好遷移準備。
工作 2:建立並啟動連續遷移工作
建立新的遷移工作之前,您必須先使用現有的連線設定檔,指定來源資料庫執行個體。接著,請建立目的地資料庫執行個體,並在來源與目的地執行個體之間設定必要連線。
取得 PostgreSQL 來源執行個體的連線資訊
在本步驟中,您需要確認來源資料庫執行個體的內部 IP 位址,以便將資料遷移至 Cloud SQL。
-
點選 Google Cloud 控制台中的導覽選單圖示 (
),然後依序點選「Compute Engine」>「VM 執行個體」。
-
從執行個體清單中找出 postgresql-vm。
-
複製「內部 IP」部分的值 (例如 10.128.0.2),下一節設定連線設定檔時會用到。
建立新的連續遷移工作
-
前往 Google Cloud 控制台,在標題列的「搜尋」部分輸入資料庫遷移,然後按下 ENTER 鍵,並點選搜尋結果中的「資料庫遷移」。
-
在左側窗格,依序點選「遷移工作」和「建立遷移工作」。
注意事項:遷移工作精靈會在左側載入,顯示後續設定步驟。
開始
在這個步驟,您會建立新的連續遷移工作。
- 在「開始」分頁指定下列值,其餘設定則保留預設值:
| 欄位 |
值 |
| 「遷移工作名稱」
|
vm-to-cloudsql |
| 來源資料庫引擎 |
PostgreSQL |
| 目的地資料庫引擎 |
PostgreSQL 適用的 Cloud SQL |
| 目標區域 |
|
| 遷移工作類型 |
Continuous |
- 點選「儲存並繼續」。
定義來源
在這個步驟,您會定義要遷移的 PostgreSQL 來源執行個體,並為其建立新的連線設定檔。
連線設定檔會儲存來源資料庫執行個體 (例如獨立 PostgreSQL) 的資訊,以供資料庫遷移服務使用,將來源資料遷移至目的地 Cloud SQL 資料庫執行個體。連線設定檔建立之後,可以重複用於不同的遷移工作。
-
在「來源連線設定檔」部分,選取「建立連線設定檔」。
-
在「建立連線設定檔」分頁指定下列值,其餘設定則保留預設值:
| 欄位 |
值 |
| 來源引擎 |
PostgreSQL |
| 目的地引擎 |
PostgreSQL 適用的 Cloud SQL |
| 設定檔類型 |
來源 |
| 連線設定檔名稱 |
postgres-vm |
| 區域 |
|
| 定義連線設定 |
Define |
| 主機名稱或 IP 位址 |
輸入上一項工作中複製的 PostgreSQL 來源執行個體內部 IP,例如 10.128.0.2 |
| 通訊埠 |
5432 |
| 使用者名稱 |
migration_admin |
| 密碼 |
DMS_1s_cool! |
- 按一下「儲存」。
- 點選「建立」。
接著,遷移工作精靈的「定義來源」頁面中會顯示新的連線設定檔 postgres-vm。
- 點選「儲存並繼續」。
點選「Check my progress」,確認目標已達成。
建立 PostgreSQL 來源執行個體的連線設定檔。
定義目的地
在這個步驟,您會定義遷移工作的目的地執行個體。
-
在「目的地執行個體的類型」部分,選取「現有的執行個體」。
-
在「選取目的地執行個體」部分,選取「postgresql-cloudsql」。
-
按一下「選取並繼續」。
-
如果系統提示您確認,請輸入執行個體名稱 postgresql-cloudsql。
-
點選「確認並繼續」。
注意事項:您可以忽略「目的地執行個體會降級,並轉換成來源資料庫的副本」警告訊息。
定義連線方式
在本步驟中,您將定義遷移工作的連線方式。

-
在「連線方式」部分,選取「虛擬私有雲對等互連」。
-
在「虛擬私有雲」部分,選取「預設」。
資料庫遷移服務會依據虛擬私有雲網路 (這個範例中的預設網路) 資訊,設定虛擬私有雲對接。
看到更新訊息,顯示已建立目的地執行個體後,請前往下一個步驟。

- 按一下「設定並繼續」。
設定遷移資料庫
在本步驟中,您將定義遷移工作的來源執行個體。
-
在「要移轉的資料庫」部分,選取「所有資料庫」。
-
點選「儲存並繼續」。
允許從自動分配的 IP 範圍存取 postgresql-vm 執行個體
在這個步驟,您會編輯 PostgreSQL 設定檔 pg_hba.conf,允許資料庫遷移服務存取獨立的 PostgreSQL 資料庫。
-
取得系統分配的 IP 位址範圍。請前往 Cloud 控制台,依序點選導覽選單圖示 (
) 和「虛擬私有雲網路」,然後對「虛擬私有雲網路對接」按一下滑鼠右鍵,選取「Open link in new tab」。
-
依序點選 servicenetworking-googleapis-com 項目,以及畫面底部的「『有效路徑』檢視畫面」。
-
從「網路」下拉式選單中選取「預設」,並在「區域」部分選取 ,接著點選「查看」。
-
在「目的地 IP 範圍」欄,記下「peering-route-xxxxx...」路由旁的 IP 範圍 (例如 10.107.176.0/24),後續步驟會用到。
-
在 VM 執行個體的終端機工作階段編輯 pg_hba.conf 檔案,如下所示:
sudo nano /etc/postgresql/14/main/pg_hba.conf
- 在檔案最後一行:
#GSP918 - 允許所有主機存取
host all all 0.0.0.0/0 md5
將「所有 IP 位址」範圍 (0.0.0.0/0),換成上個步驟中記錄的範圍。
#GSP918 - 允許所有主機存取
host all all 10.107.176.0/24 md5
注意事項:雖然不執行上述步驟也能完成遷移工作,但這麼做可以在遷移期間進一步保護來源資料庫,同時在遷移後的資料庫成為基準資料來源時限制存取權。
-
依序按下 Ctrl + O 鍵、Enter 鍵和 Ctrl + X 鍵,儲存檔案並退出 nano 編輯器。
-
重新啟動 PostgreSQL 服務,變更就會生效。接著,在 VM 執行個體終端機工作階段執行下列指令:
sudo systemctl start postgresql@14-main
測試並啟動連續遷移工作
在本步驟中,您將測試並啟動遷移工作。
-
前往稍早開啟的「資料庫遷移服務」分頁,查看遷移工作的詳細資料。
-
按一下「測試工作」。
-
測試成功後,按一下「建立及啟動工作」。
-
如果系統提示您確認,請點選「建立並啟動」。
查看連續遷移工作狀態
在本步驟中,您將確認遷移工作正在執行。
-
點選 Google Cloud 控制台的導覽選單圖示 (
),然後依序點選「資料庫遷移」>「遷移工作」。
-
點選遷移工作「vm-to-cloudsql」,查看詳細資料頁面。
-
查看遷移工作狀態。
- 如果工作尚未啟動,會顯示「尚未啟動」 狀態。您可以選擇啟動或刪除工作。
- 工作啟動之後,狀態會先顯示為「啟動中」再轉為「執行中」,代表正在執行初始資料庫 dump 作業。
- 初始資料庫 dump 作業完成之後,「階段」狀態會變為「CDC」,代表正在執行連續遷移工作。
工作階段變為「CDC」時,請前往下一項工作。
注意事項:持續遷移工作會維持「執行中」的狀態,確保目的地資料庫不斷從來源接收資料變更。
目的地資料庫升級為可讀寫的獨立資料庫之後,狀態才會變為「已完成」。
您會在工作 4 執行這項操作。
點選「Check my progress」,確認目標已達成。
建立、啟動並查看連續遷移工作。
工作 3:確認 PostgreSQL 適用的 Cloud SQL 資料
檢查 Cloud SQL 中的 PostgreSQL 資料庫
-
前往 Google Cloud 控制台,依序點選導覽選單圖示 (
) 和「Cloud SQL」。
-
展開 ID 為 postgresql-cloudsql-master 的執行個體。
-
點選「postgresql-cloudsql」執行個體 (PostgreSQL 唯讀副本)。
-
在「副本執行個體」選單,點選「資料庫」。
您會發現 postgres、orders 和 gmemegen_db 資料庫已遷移至 Cloud SQL。
連線至 PostgreSQL 執行個體
-
在「副本執行個體」選單,按一下「總覽」。
-
向下捲動至「連線至這個執行個體」部分,然後點選「開啟 Cloud Shell」。
Cloud Shell 會預先填入連線至 PostgreSQL 的指令,如下所示:
gcloud sql connect postgresql-cloudsql --user=postgres --quiet
-
執行預先填入的指令。
-
如果系統提示您為 API 授權,請點選「授權」。
-
出現提示訊息時,輸入先前設定的密碼,如下所示:
supersecret!
您成功啟用了目的地執行個體的 PostgreSQL 互動式控制台。
查看 PostgreSQL 適用的 Cloud SQL 執行個體資料
- 執行下列指令,在 PostgreSQL 互動式控制台中選取資料庫:
\c orders;
- 出現提示訊息時,輸入下列密碼:
supersecret!
- 使用下列指令,查詢
distribution_centers 資料表:
select * from distribution_centers;
輸出內容:
longitude | latitude | name | id
-----------+----------+---------------------------------------------+----
-89.9711 | 35.1174 | Memphis TN | 1
-87.6847 | 41.8369 | Chicago IL | 2
-95.3698 | 29.7604 | Houston TX | 3
-118.25 | 34.05 | Los Angeles CA | 4
-90.0667 | 29.95 | New Orleans LA | 5
-73.7834 | 40.634 | Port Authority of New York/New Jersey NY/NJ | 6
-75.1667 | 39.95 | Philadelphia PA | 7
-88.0431 | 30.6944 | Mobile AL | 8
-79.9333 | 32.7833 | Charleston SC | 9
-81.1167 | 32.0167 | Savannah GA | 10
- 使用下列指令,結束 PostgreSQL 互動式控制台:
\q
更新獨立來源資料來測試連續遷移工作
- 在 Cloud Shell 執行下列指令,連線至來源 PostgreSQL 執行個體:
export VM_NAME=postgresql-vm
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
export POSTGRESQL_IP=$(gcloud compute instances describe ${VM_NAME} \
--zone={{{ project_0.default_zone|(zone) }}} --format="value(networkInterfaces[0].accessConfigs[0].natIP)")
echo $POSTGRESQL_IP
psql -h $POSTGRESQL_IP -p 5432 -d orders -U migration_admin
注意事項:以上是存取 VM 執行個體內獨立資料庫的另一種做法。
- 出現提示訊息時,輸入下列密碼:
DMS_1s_cool!
- 在 psql 中輸入下列指令:
\c orders;
insert into distribution_centers values(-80.1918,25.7617,'Miami FL',11);
- 使用下列指令,關閉互動式 psql 工作階段:
\q
連至 Cloud SQL PostgreSQL 資料庫,檢查更新後的資料是否已遷移
- 在 Cloud Shell 中輸入下列指令,連至目的地 Cloud SQL PostgreSQL 執行個體:
gcloud sql connect postgresql-cloudsql --user=postgres --quiet
- 出現提示訊息時,輸入先前設定的 Cloud SQL 執行個體密碼,如下所示:
supersecret!
您成功啟用了目的地執行個體的 PostgreSQL 互動式控制台。
查看 PostgreSQL 適用的 Cloud SQL 資料庫資料
- 在 Cloud Shell 輸入下列指令,在 PostgreSQL 互動式控制台選取運作中的資料庫:
\c orders;
- 出現提示訊息時,輸入先前設定的密碼,如下所示:
supersecret!
- 使用下列指令,查詢
distribution_centers 資料表:
select * from distribution_centers;
輸出內容:
longitude | latitude | name | id
-----------+----------+---------------------------------------------+----
-89.9711 | 35.1174 | Memphis TN | 1
-87.6847 | 41.8369 | Chicago IL | 2
-95.3698 | 29.7604 | Houston TX | 3
-118.25 | 34.05 | Los Angeles CA | 4
-90.0667 | 29.95 | New Orleans LA | 5
-73.7834 | 40.634 | Port Authority of New York/New Jersey NY/NJ | 6
-75.1667 | 39.95 | Philadelphia PA | 7
-88.0431 | 30.6944 | Mobile AL | 8
-79.9333 | 32.7833 | Charleston SC | 9
-81.1167 | 32.0167 | Savannah GA | 10
-80.1918 | 25.7617 | Miami FL | 11
您會發現附加至獨立 orders 資料庫的新資料列,現在顯示於遷移後的資料庫。
- 使用下列指令,結束 PostgreSQL 互動式控制台:
\q
點選「Check my progress」,確認目標已達成。
測試連續遷移工作能否將來源資料移至目的地。
工作 4:將 Cloud SQL 升級為可讀寫資料的獨立執行個體
-
點選 Google Cloud 控制台的導覽選單圖示 (
),然後點選「查看所有產品」。在「資料庫」部分,依序點選「資料庫遷移」>「遷移工作」。
-
點選遷移工作「vm-to-cloudsql」,查看詳細資料頁面。
-
點選「升級」。
-
如果系統提示您確認,請點選「升級」。
升級完成時,工作狀態會更新為「已完成」。
- 前往 Google Cloud 控制台,依序點選導覽選單圖示 (
) 和「查看所有產品」。在「資料庫」部分,點選「Cloud SQL」。
您會發現 postgresql-cloudsql 已成為可讀寫資料的獨立執行個體。
點選「Check my progress」,確認目標已達成。
將 PostgreSQL 適用的 Cloud SQL 執行個體,升級為獨立執行個體供讀取及寫入資料。
恭喜!
您已使用資料庫遷移服務設定連續工作,將資料庫從 PostgreSQL 執行個體遷移至 PostgreSQL 適用的 Cloud SQL。
後續行動/瞭解詳情
如要進一步瞭解資料遷移、Cloud SQL 資料庫和資料庫遷移服務,請參考下列資源:
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2026 年 5 月 20 日
實驗室上次測試日期:2026 年 5 月 28 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。