arrow_back

使用資料庫移轉服務,遷移至 PostgreSQL 適用的 Cloud SQL

加入 登录
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

使用資料庫移轉服務,遷移至 PostgreSQL 適用的 Cloud SQL

Lab 1 小时 30 分钟 universal_currency_alt 1 积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP918

Google Cloud 自修研究室標誌

總覽

資料庫移轉服務可讓您建立連線來執行遷移工作,將資料移至 Cloud SQL。這項服務提供一次性和連續工作選項,以及 IP 許可清單、虛擬私有雲對等互連、反向 SSH 通道等不同連線選項。如要參閱連線選項說明文件,請前往 https://cloud.google.com/database-migration/docs/postgresql/configure-connectivity

在本研究室中,您會透過資料庫移轉服務,使用虛擬私有雲對等互連建立連線並執行連續工作,將虛擬機器中執行的獨立 PostgreSQL 資料庫,遷移至 PostgreSQL 適用的 Cloud SQL。

透過資料庫移轉服務遷移資料庫時,您需要為來源資料庫做好準備,包括在來源資料庫中新增 pglogical 資料庫擴充功能、建立專用於遷移作業的使用者,並授予複製權限,以及來源資料庫和 postgres 資料庫結構定義和資料表的權限。

建立並執行遷移工作後,您將確認資料庫的初始副本,已成功遷移至 PostgreSQL 適用的 Cloud SQL 執行個體。您也將瞭解連續遷移工作如何將來源資料庫的資料更新內容,套用至 Cloud SQL 執行個體。最後,只要將 Cloud SQL 執行個體升級為獨立資料庫,供讀取及寫入資料,即可結束遷移工作。

目標

在本研究室中,您將瞭解如何使用資料庫移轉服務設定連續工作,將資料庫從 PostgreSQL 執行個體遷移至 PostgreSQL 適用的 Cloud SQL。

  • 為來源資料庫做好遷移準備。
  • 為 PostgreSQL 執行個體 (例如獨立 PostgreSQL) 的來源連線建立設定檔。
  • 使用虛擬私有雲對等互連,設定來源與目的地資料庫執行個體之間的連線。
  • 設定防火牆和資料庫存取規則來允許存取來源資料庫,以進行遷移。
  • 使用資料庫移轉服務建立、執行並驗證連續遷移工作。
  • 將目的地執行個體 (PostgreSQL 適用的 Cloud SQL) 升級為獨立資料庫,供讀取及寫入資料。

設定

點選「Start Lab」按鈕前的須知事項

請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。

您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。

如要完成這個研究室活動,請先確認:

  • 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意:請使用無痕模式或私密瀏覽視窗執行此研究室。這可以防止個人帳戶和學生帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
注意:如果您擁有個人 Google Cloud 帳戶或專案,請勿用於本研究室,以免產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 按一下「Start Lab」(開始研究室) 按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」(研究室詳細資料) 面板會顯示下列項目:

    • 「Open Google Console」(開啟 Google 控制台) 按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的暫時憑證
    • 完成這個研究室所需的其他資訊 (如有)
  2. 按一下「Open Google Console」(開啟 Google 控制台)。接著,研究室會啟動相關資源並開啟另一個分頁,當中會顯示「Sign in」(登入) 頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意事項:如果頁面中顯示了「Choose an account」(選擇帳戶) 對話方塊,請按一下「Use Another Account」(使用其他帳戶)
  3. 如有必要,請複製「Lab Details」(研究室詳細資料) 面板中的使用者名稱,然後貼到「Sign in」(登入) 對話方塊。按一下「Next」(下一步)

  4. 複製「Lab Details」(研究室詳細資料) 面板中的密碼,然後貼到「Welcome」(歡迎使用) 對話方塊。按一下「Next」(下一步)

    重要注意事項:請務必使用左側面板中的憑證,而非 Google Cloud 技能重點加強的憑證。 注意事項:如果使用自己的 Google Cloud 帳戶來進行這個研究室,可能會產生額外費用。
  5. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Cloud 控制台稍後會在這個分頁中開啟。

注意事項:按一下畫面左上方的導覽選單,即可在選單中查看 Google Cloud 產品與服務的清單。「導覽選單」圖示

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台上方的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

連線完成即代表已通過驗證,且專案已設為您的 PROJECT_ID。輸出內容中有一行宣告本工作階段 PROJECT_ID 的文字:

您在本工作階段中的 Cloud Platform 專案會設為「YOUR_PROJECT_ID」

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

  2. 輸出畫面應如下所示:

輸出內容:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = <project_ID>

輸出內容範例:

[core] project = qwiklabs-gcp-44776a13dea667a6 附註:如需有關 gcloud 的完整說明,請前往 Google Cloud 並參閱「gcloud CLI overview guide」(gcloud CLI 總覽指南)。

確認已啟用 Database Migration API

  1. 在 Google Cloud 控制台頂端的搜尋列中,輸入 Database Migration API,點選搜尋結果「Database Migration API」。

這個頁面會顯示狀態資訊或該 API 的啟用選項。

  1. 如有需要,請啟用 API。

確認已啟用 Service Networking API

必須啟用 Service Networking API,才能設定 Cloud SQL 來支援虛擬私有雲對等互連,並透過私人 IP 位址連線。

  1. 在 Cloud 控制台頂端的搜尋列中,輸入 Service Networking API,點選搜尋結果「Service Networking API」。

這個頁面會顯示狀態資訊或該 API 的啟用選項。

  1. 如有需要,請啟用 API。

工作 1:為來源資料庫做好遷移準備

在這個工作中,您需要在來源資料庫中新增支援功能,才能透過資料庫移轉服務執行遷移作業。包括:

  • 安裝並設定 pglogical 資料庫擴充功能。
  • 設定獨立 PostgreSQL 資料庫,允許從 Cloud Shell 和 Cloud SQL 存取。
  • pglogical 資料庫擴充功能新增至獨立伺服器上的 postgresordersgmemegen_db 資料庫。
  • 建立用於遷移資料庫的 migration_admin 使用者,並授予複製權限、必要的結構定義權限和關聯。

使用 pglogical 擴充功能升級資料庫

在這個步驟中,您將下載 pglogical 資料庫擴充功能,並新增至 postgresql-vm VM 執行個體上的 orders 和 postgres 資料庫。

  1. 在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,依序點選「Compute Engine」>「VM 執行個體」

  2. Connect 下的 postgresql-vm 項目中,點選「SSH」

  3. 如果出現提示訊息,請點選「授權」

  4. 瀏覽器會以新視窗開啟終端機,請輸入下列指令安裝 pglogical 資料庫擴充功能:

sudo apt install postgresql-13-pglogical 注意pglogical 邏輯複製系統完全是以 PostgreSQL 擴充功能執行,充分整合後即不需要觸發條件或外部程式。這會使用發布/訂閱模型來選擇性複製資料,而非複製實體,是非常有效率的複製方法。詳情請參閱下列網址:https://github.com/2ndQuadrant/pglogical
  1. 下載附加功能並套用至 PostgreSQL 設定檔來啟用 pglogical 擴充功能,然後重新啟動 postgresql 服務:
sudo su - postgres -c "gsutil cp gs://cloud-training/gsp918/pg_hba_append.conf ." sudo su - postgres -c "gsutil cp gs://cloud-training/gsp918/postgresql_append.conf ." sudo su - postgres -c "cat pg_hba_append.conf >> /etc/postgresql/13/main/pg_hba.conf" sudo su - postgres -c "cat postgresql_append.conf >> /etc/postgresql/13/main/postgresql.conf" sudo systemctl restart postgresql@13-main

pg_hba.conf 中,下列指令會新增規則允許存取所有主機:

#GSP918 - allow access to all hosts host all all 0.0.0.0/0 md5

postgresql.conf 中,下列指令會建立基本設定,讓 pglogical 監聽所有位址:

#GSP918 - added configuration for pglogical database extension wal_level = logical # minimal, replica, or logical max_worker_processes = 10 # one per database needed on provider node # one per node needed on subscriber node max_replication_slots = 10 # one per node needed on provider node max_wal_senders = 10 # one per node needed on provider node shared_preload_libraries = 'pglogical' max_wal_size = 1GB min_wal_size = 80MB listen_addresses = '*' # what IP address(es) to listen on, '*' is all

以上程式碼片段會附加在相關檔案,以及重新啟動後的 PostgreSQL 服務。

  1. 啟動 psql 工具:
sudo su - postgres psql
  1. pglogical 資料庫擴充功能新增至 postgresordersgmemegen_db 資料庫:
\c postgres; CREATE EXTENSION pglogical; \c orders; CREATE EXTENSION pglogical; \c gmemegen_db; CREATE EXTENSION pglogical;
  1. 列出伺服器上的 PostgreSQL 資料庫:
\l

如畫面所示,除了預設的 postgresql 資料庫之外,本研究室還提供 ordersgmemegen_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)

建立資料庫遷移使用者

在這個步驟中,您將建立使用者來專門管理資料庫遷移作業。

  1. psql 中輸入下列指令,建立具複製角色的新使用者:
CREATE USER migration_admin PASSWORD 'DMS_1s_cool!'; ALTER DATABASE orders OWNER TO migration_admin; ALTER ROLE migration_admin WITH REPLICATION;

將權限指派給遷移使用者

在這個步驟中,您將指派必要權限給 migration_admin 使用者,以啟用資料庫移轉服務遷移資料庫。

  1. 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;
  1. psql 中,授予 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;
  1. psql 中,授予 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;
  1. psql 中,授予 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;
  1. psql 中,授予 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 使用者的權限,都是資料庫移轉服務遷移 postgresordersgmemegen_db 資料庫的必要權限。

測試遷移作業時,請將 migration_admin 使用者設為 orders 資料庫的資料表擁有者,供稍後編輯來源資料。

  1. psql 中執行下列指令:
\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)
  1. 結束 psql 和 postgres 使用者工作階段:
\q exit

點選「Check my progress」,確認目標已達成。 為 PostgreSQL 來源執行個體做好遷移準備。

工作 2:為獨立 PostgreSQL 資料庫,建立資料庫移轉服務連線設定檔

在這個工作中,您將建立 PostgreSQL 來源執行個體的連線設定檔。

取得 PostgreSQL 來源執行個體的連線資訊

在這個步驟中,您將找出要遷移至 Cloud SQL 的來源資料庫執行個體內部 IP 位址。

  1. 在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,依序點選「Compute Engine」>「VM 執行個體」

  2. 找出 postgresql-vm 這行執行個體程式碼。

  3. 複製 內部 IP 的值 (例如 10.128.0.2)。

建立 PostgreSQL 來源執行個體的新連線設定檔

連線設定檔會儲存來源資料庫執行個體 (例如獨立 PosgreSQL) 的資訊,供資料庫移轉服務使用,將來源資料遷移至目的地 Cloud SQL 資料庫執行個體。連線設定檔建立後,可重複用於各項遷移工作。

在這個步驟中,您將建立 PostgreSQL 來源執行個體的新連線設定檔。

  1. 在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,依序點選「資料庫遷移」>「連線設定檔」

  2. 點選「+ 建立設定檔」

  3. 在「資料庫引擎」部分,選取「PostgreSQL」。

  4. 在「連線設定檔名稱」部分,輸入 postgres-vm

  5. 在「主機名稱或 IP 位址」部分,輸入前一個工作中複製的 PostgreSQL 來源執行個體內部 IP (例如 10.128.0.2)。

  6. 在「通訊埠」部分,輸入 5432

  7. 在「使用者名稱」部分,輸入 migration_admin

  8. 在「密碼」部分,輸入 DMS_1s_cool!

  9. 在「區域」部分,選取」。

  10. 保留其他預設值。

  11. 點選「建立」

連線設定檔清單會顯示新的連線設定檔 postgres-vm

點選「Check my progress」,確認目標已達成。 建立 PostgreSQL 來源執行個體的連線設定檔。

工作 3:建立並啟動連續遷移工作

建立新的遷移工作時,第一步是使用先前建立的連線設定檔,定義來源資料庫執行個體。完成後,您需要建立新的目的地資料庫執行個體,並設定來源與目的地執行個體之間的連線。

在這個工作中,您將透過遷移工作介面,建立新的 PostgreSQL 適用的 Cloud SQL 資料庫執行個體,並設為 PostgreSQL 來源執行個體連續遷移工作的目的地。

建立新的連續遷移工作

在這個步驟中,您將建立新的連續遷移工作。

  1. 在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,依序點選「資料庫遷移」>「遷移工作」。

  2. 點選「+ 建立遷移工作」。

  3. 在「遷移工作名稱」部分,輸入 vm-to-cloudsql

  4. 在「來源資料庫引擎」部分,選取「PostgreSQL」。

  5. 在「目的地區域」部分,選取「」。

  6. 在「目的地資料庫引擎」部分,選取「PostgreSQL 適用的 Cloud SQL」。

  7. 在「遷移工作類型」部分,選取「連續」。

保留其他預設值。

  1. 點選「儲存並繼續」

定義來源執行個體

在這個步驟中,您將定義遷移工作的來源執行個體。

  1. 在「來源連線設定檔」部分,選取「postgres-vm」。

保留其他預設值。

  1. 點選「儲存並繼續」

選取來源連線設定檔後,畫面會顯示設定詳細資料,包括來源主機名稱或 IP 位址、通訊埠、使用者名稱,以及加密類型。

建立目的地執行個體

在這個步驟中,您將建立遷移工作的目的地執行個體。

  1. 在「目的地執行個體 ID」部分,輸入 postgresql-cloudsql

  2. 在「密碼」部分,輸入 supersecret!

  3. 在「選擇 Cloud SQL 版本」部分,選取「Enterprise」

  4. 在「資料庫版本」部分,選取「PostgreSQL 適用的 Cloud SQL 13」。

  5. 在「選擇區域和可用區」部分,選取「單一可用區」;在「主要可用區」部分,選取「」。

  6. 在「執行個體連線能力」部分,選取「私人 IP」和「公開 IP」。

  7. 選取「使用系統自動分配的 IP 範圍」。

保留其他預設值。

  1. 點選「分配並連線」。

保持選取「使用系統自動分配的 IP 範圍」預設選項。

注意:這個步驟會在幾分鐘內完成。如果系統請您重試要求,請點選「重試」按鈕重新整理 Service Networking API。

完成這個步驟後,畫面會顯示更新訊息,告知執行個體將使用現有代管服務連線。

在後續步驟中,您將需要編輯 VM 執行個體上的 pg_hba.conf 檔案,允許存取先前步驟第 5 點中自動產生的 IP 範圍。編輯完成後,請測試遷移設定,即可結束這個工作。

畫面會顯示更新訊息,告知執行個體將使用現有代管服務連線。

輸入必要額外資訊,在 Cloud SQL 上建立目的地執行個體。

  1. 在「機器類型」部分,勾選「1 個 vCPU,3.75 GB」。

  2. 在「儲存空間類型」部分,選取「SSD」。

  3. 在「儲存空間容量」部分,選取「10 GB」。

  4. 點選「建立並繼續」。

如果系統提示您確認操作,請點選「建立目的地並繼續」。畫面會顯示訊息,告知系統正在建立目的地資料庫執行個體。請在等候期間繼續下一個步驟。

定義連線方式

在這個步驟中,您將定義遷移工作的連線方式。

建立目的地 Cloud SQL 執行個體後,畫面會顯示訊息,告知已啟用「設定並繼續」按鈕。

  1. 在「連線方式」部分,選取「虛擬私有雲對等互連」。

  2. 在「虛擬私有雲」部分,選取「預設」。

資料庫移轉服務會根據虛擬私有雲網路 (這個範例中的預設網路) 相關資訊,設定虛擬私有雲對等互連。

看到更新訊息,顯示已建立目的地執行個體後,請前往下一個步驟。

畫面會顯示更新訊息,告知已建立目的地 Cloud SQL 執行個體。

  1. 點選「設定並繼續」。

允許從系統自動分配的 IP 範圍,存取 posgresql-vm 執行個體

在這個步驟中,您將編輯 PostgreSQL 設定檔 pg_hba.conf,允許資料庫移轉服務存取獨立 PostgreSQL 資料庫。

  1. 取得系統分配的 IP 位址範圍。在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,用滑鼠右鍵按一下「虛擬私有雲網路」,在新分頁中開啟「虛擬私有雲網路對等互連」。

  2. 點選「servicenetworking-googleapis-com」項目。

  3. 在「匯入的路徑」分頁中,選取並複製 Destination IP range (例如 10.107.176.0/24)。

  4. 在 VM 執行個體的終端機工作階段中編輯 pg_hba.conf 檔案,如下所示:

sudo nano /etc/postgresql/13/main/pg_hba.conf
  1. 在檔案最後一行:
#GSP918 - allow access to all hosts host all all 0.0.0.0/0 md5

將「所有 IP 位址」範圍 (0.0.0.0/0),換成上方第 3 點中複製的範圍。

#GSP918 - allow access to all hosts host all all 10.107.176.0/24 md5 注意:以上步驟並非建立遷移工作的必要程序,但可在遷移期間進一步保護來源資料庫安全,也能在資料庫遷移後成為可靠來源時,限制存取權。
  1. 依序按下 Ctrl-O 鍵和 Enter 鍵儲存檔案,然後按下 Ctrl-X 鍵退出 nano 編輯器。

  2. 重新啟動 PostgreSQL 服務,變更即可生效。在 VM 執行個體終端機工作階段中,輸入下列程式碼:

sudo systemctl start postgresql@13-main

測試並開始執行連續遷移工作

在這個步驟中,您將測試並開始執行遷移工作。

  1. 前往稍早開啟的「資料庫移轉服務」分頁,查看遷移工作詳細資料。

  2. 點選「測試工作」。

  3. 測試成功後,點選「建立及啟動工作」。

務必點選「建立及啟動工作」按鈕,確保成功啟動工作。

如果系統提示您確認操作,請點選「建立並啟動」。

查看連續遷移工作狀態

在這個步驟中,您將確認遷移工作正在執行。

  1. 在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,依序點選「資料庫遷移」>「遷移工作」。

  2. 點選遷移工作「vm-to-cloudsql」,查看詳細資料頁面。

  3. 查看遷移工作狀態。

    • 如果尚未啟動工作,狀態會顯示為「尚未啟動」,您可以選擇啟動或刪除工作。
    • 啟動工作後,狀態會顯示為「啟動中」,然後轉為「執行中」/「正在執行完整傾印作業」,表示正在執行初始資料庫轉儲作業。
    • 初始資料庫轉儲作業完成後,狀態會轉為「正在執行 CDC 作業」,表示正在執行連續遷移作業。

工作狀態變成「正在執行 CDC 作業」時,請繼續下一個工作。

遷移工作 vm-to-cloudsql 現在的狀態是「正在執行 CDC 作業」。

點選「Check my progress」,確認目標已達成。 建立、啟動並查看連續遷移工作。

工作 4:確認 PostgreSQL 適用的 Cloud SQL 資料

檢查 Cloud SQL 中的 PostgreSQL 資料庫

  1. 在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,依序前往「資料庫」>「SQL」。

  2. 展開的執行個體 ID postgresql-cloudsql-master

  3. 點選執行個體「postgresql-cloudsql」(PostgreSQL 唯讀備用資源)。

  4. 點選「備用資源執行個體」選單中的「資料庫」。

您會發現 postgresordersgmemegen_db 資料庫都已遷移至 Cloud SQL。

已遷移至 Cloud SQL 的資料庫。

連至 PostgreSQL 執行個體

  1. 點選「備用資源執行個體」選單中的「總覽」。

  2. 向下捲動到「連線至這個執行個體」部分,點選「開啟 Cloud Shell」。

Cloud Shell 會預先填入連至 PostgreSQL 的指令:

gcloud sql connect postgresql-cloudsql --user=postgres --quiet
  1. 執行預先填入的指令。

如果系統提示您為 API 授權,請點選「授權」。

  1. 系統提示輸入密碼時,請輸入先前設定的密碼:
supersecret!

您成功啟用了目的地執行個體的 PostgreSQL 互動式控制台。

查看 PostgreSQL 適用的 Cloud SQL 執行個體資料

  1. 執行下列指令,在 PostgreSQL 互動式控制台中選取資料庫:
\c orders;
  1. 系統提示輸入密碼時,請輸入:
supersecret!
  1. 查詢 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
  1. 輸入下列指令,結束 PostgreSQL 互動式控制台:
\q

更新獨立來源資料,測試連續遷移工作

  1. 在 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 執行個體上存取獨立資料庫。
  1. 系統提示輸入密碼時,請輸入:
DMS_1s_cool!
  1. psql 中輸入下列指令:
\c orders; insert into distribution_centers values(-80.1918,25.7617,'Miami FL',11);
  1. 關閉互動式 psql 工作階段:
\q

連至 Cloud SQL PostgreSQL 資料庫,檢查更新後的資料是否已遷移

  1. 在 Cloud Shell 中輸入下列指令,連至目的地 Cloud SQL PostgreSQL 執行個體:
gcloud sql connect postgresql-cloudsql --user=postgres --quiet
  1. 系統提示輸入 Cloud SQL 執行個體密碼時,請輸入先前設定的密碼:
supersecret!

您成功啟用了目的地執行個體的 PostgreSQL 互動式控制台。

查看 PostgreSQL 適用的 Cloud SQL 資料庫資料

  1. 在 Cloud Shell 中輸入下列指令,從 PostgreSQL 互動式控制台選取使用中的資料庫:
\c orders;
  1. 系統提示輸入密碼時,請輸入先前設定的密碼:
supersecret!
  1. 查詢 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 資料庫的新資料列,現在顯示在遷移後的資料庫中。

  1. 結束 PostgreSQL 互動式控制台:
\q

點選「Check my progress」,確認目標已達成。 測試將來源資料移至目的地的連續遷移工作。

工作 5:將 Cloud SQL 升級為獨立執行個體,供讀取及寫入資料

  1. 在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,依序點選「資料庫遷移」>「遷移工作」。

  2. 點選遷移工作「vm-to-cloudsql」,查看詳細資料頁面。

  3. 點選「升級」。

如果系統提示您確認操作,請點選「升級」。

畫面顯示升級完成時,工作狀態會更新為「已完成」。

遷移工作 vm-to-cloudsql 現在的狀態是「已完成」。

  1. 在 Google Cloud 控制台的「導覽選單」(「導覽選單」圖示) 中,依序前往「資料庫」>「SQL」。

請注意,postgresql-cloudsql 現在是獨立執行個體,可供讀取及寫入資料。

系統已將執行個體 postgresql-cloudsql 標為主要執行個體。

點選「Check my progress」,確認目標已達成。 將 PostgreSQL 適用的 Cloud SQL 執行個體,升級為獨立執行個體供讀取及寫入資料。

恭喜!

您已瞭解如何使用資料庫移轉服務設定連續工作,將資料庫從 PostgreSQL 執行個體遷移至 PostgreSQL 適用的 Cloud SQL。

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 2 月 9 日

研究室上次測試日期:2024 年 2 月 6 日

Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。