使用 PostgreSQL 工具,從 PostgreSQL 遷移至 AlloyDB
实验
20 分钟
universal_currency_alt
1 积分
show_chart
入门级
info
此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。
GSP1085

總覽
AlloyDB for PostgreSQL 是與 PostgreSQL 相容的全代管資料庫服務,能為您處理要求最嚴苛的企業資料庫工作負載。AlloyDB 結合 Google 的精華與極受歡迎的開放原始碼資料庫引擎 PostgreSQL,不僅效能卓越,也具備絕佳的擴充性和可用性。
在本實驗室中,您會使用原生 PostgreSQL 工具,將在虛擬機器中執行的獨立 PostgreSQL 資料庫,遷移至 AlloyDB for PostgreSQL。AlloyDB 支援的資料庫遷移選項之一是匯入 DMP 檔案。DMP 檔案必須使用「pg_dump」工具建立,並採用自訂或目錄格式設定。您必須使用「pg_restore」工具匯入 DMP。
學習內容
在本實驗室中,您將瞭解如何執行下列工作:
- 驗證來源執行個體中要遷移的資料
- 使用 pg_dump 建立資料庫 DMP 檔案
- 使用 pg_restore 匯入 DMP 檔案
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 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 總覽指南。
工作 1:驗證來源執行個體中要遷移的資料
-
在「導覽選單」(
) 的「Compute Engine」下方,點選「VM 執行個體」。
-
在 pg14-source 執行個體的「連線」欄,點選「SSH」,開啟終端機視窗。
-
使用下列指令啟動 PostgreSQL (psql) 用戶端。
sudo -u postgres psql
- 您會看到類似下方的 psql 終端機提示。
psql (14.5 (Debian 14.5-1.pgdg110+1))
Type "help" for help.
- 輸入並執行下列 SQL 指令,查看 postgres 資料庫中與人資相關的資料表。
\dt
List of relations
Schema | Name | Type | Owner
--------+-------------+-------+----------
public | countries | table | postgres
public | departments | table | postgres
public | employees | table | postgres
public | jobs | table | postgres
public | locations | table | postgres
public | regions | table | postgres
(6 rows)
- 執行下列查詢,判斷每個資料表的資料列數量。
select count (*) as countries_row_count from countries;
select count (*) as departments_row_count from departments;
select count (*) as employees_row_count from employees;
select count (*) as jobs_row_count from jobs;
select count (*) as locations_row_count from locations;
select count (*) as regions_row_count from regions;
- 來源資料表的資料列數量如下。
| 名稱 |
資料列數量 |
| countries |
25 |
| departments |
27 |
| employees |
107 |
| jobs |
19 |
| locations |
23 |
| regions |
4 |
- 輸入 \q 結束 psql 用戶端。
工作 2:使用 pg_dump 建立資料庫 DMP 檔案
- 每次安裝 PostgreSQL 時,系統都會預設安裝 pg_dump 工具。在 pg14-source 終端機中,建立 postgres 資料庫的 DMP 檔案,其中包含您先前檢查過的人資資料表。在殼層提示中執行下列指令。注意:「-Fc」旗標會指定自訂格式的 DMP 檔案。
sudo -u postgres pg_dump -Fc postgres > pg14_source.DMP
- 瀏覽目錄,確認 DMP 檔案的大小和其他詳細資料。
ls -l -h pg14_source.DMP
-rw-r--r-- 1 student-03-171e0d8475af google-sudoers 13K Aug 27 21:19 pg14_source.DMP
- 如要模擬例行資料庫匯出/匯入作業,請將 DMP 檔案遷移至 Cloud Storage bucket。系統會在實驗室啟動時,建立以 Qwiklabs 專案 ID 命名的 bucket。
gsutil cp pg14_source.DMP gs://{{{primary_project.project_id|Project ID}}}/pg14_source.DMP
- 點選「Check my progress」確認目標已達成。
Upload database DMP file to Cloud Storage
工作 3:使用 pg_restore 匯入 DMP 檔案
-
啟動本實驗室時,系統會佈建 AlloyDB 叢集和執行個體。在 Cloud 控制台的「導覽選單」(
) 中,依序點選「資料庫」、「AlloyDB for PostgreSQL」和「叢集」,即可查看叢集詳細資料。
-
叢集名稱為 lab-cluster,執行個體名稱為 lab-instance。
-
請記下執行個體區段中的私人 IP 位址。將私人 IP 位址複製到文字檔,以便在後續步驟中貼上該值。執行個體需要一段時間才能完全建立及初始化。請等待「狀態」顯示為「已就緒」,再繼續進行接下來的步驟。
-
在本實驗室開始時,系統已為您佈建名為 alloydb-client 的 VM,其中包含 PostgreSQL 用戶端。這項安裝作業包括安裝資料庫還原工具「pg_restore」。
-
在「導覽選單」(
) 的「Compute Engine」下方,點按「VM 執行個體」。
-
在「連線」欄中,點按「alloydb-client」執行個體的「SSH」,開啟終端機視窗。
-
將下列指令的 ALLOYDB_ADDRESS 替換為 AlloyDB 執行個體的私人 IP 位址,設定環境變數。
export ALLOYDB=ALLOYDB_ADDRESS
- 執行下列指令,將 AlloyDB 執行個體的私人 IP 位址儲存至 AlloyDB 用戶端 VM,確保操作實驗室期間都能使用。
echo $ALLOYDB > alloydbip.txt
- 使用下列指令啟動 PostgreSQL (psql) 用戶端。系統會提示您提供建立叢集時指定的 postgres 使用者密碼 (Change3Me)。
psql -h $ALLOYDB -U postgres
- 執行下列指令,確認 postgres 資料庫目前沒有任何內容。
\dt
Did not find any relations.
-
輸入 \q 結束 psql 用戶端。
-
將 DMP 檔案從 Cloud Storage bucket 下載至本機目錄。
gsutil cp gs://{{{primary_project.project_id|Project ID}}}/pg14_source.DMP pg14_source.DMP
- 執行下列指令,建立會將所有擴充功能陳述式標記為註解的 TOC 檔案。
pg_restore -l pg14_source.DMP | sed -E 's/(.* EXTENSION )/; \1/g' > pg14_source_toc.toc
- 現在請執行還原指令,載入人資資料表。系統會提示您輸入 postgres 使用者的密碼:Change3Me。
pg_restore -h $ALLOYDB -U postgres \
-d postgres \
-L pg14_source_toc.toc \
pg14_source.DMP
- 再次啟動 PostgreSQL (psql) 用戶端。系統會提示您輸入 postgres 使用者的密碼:Change3Me。
psql -h $ALLOYDB -U postgres
- 執行下列指令,確認表格已載入。
\dt
List of relations
Schema | Name | Type | Owner
--------+-------------+-------+----------
public | countries | table | postgres
public | departments | table | postgres
public | employees | table | postgres
public | jobs | table | postgres
public | locations | table | postgres
public | regions | table | postgres
(6 rows)
- 執行下列查詢,判斷已遷移資料表的資料列數量。這些值會與查詢來源執行個體的輸出內容相符。
select count (*) as countries_row_count from countries;
select count (*) as departments_row_count from departments;
select count (*) as employees_row_count from employees;
select count (*) as jobs_row_count from jobs;
select count (*) as locations_row_count from locations;
select count (*) as regions_row_count from regions;
- 點選「Check my progress」確認目標已達成。
Verify import of database DMP file
恭喜!
您已成功使用原生 PostgreSQL 工具,將在虛擬機器中執行的獨立 PostgreSQL 資料庫,遷移至 AlloyDB for PostgreSQL。
使用手冊上次更新日期:2024 年 4 月 26 日
實驗室上次測試日期:2023 年 8 月 2 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。