1. 簡介
本程式碼實驗室說明如何設定 pgBackRest,使用與 S3 相容的物件儲存空間備份及還原 AlloyDB Omni RPM 部署項目。
注意:在本程式碼研究室中,您會在 VM 上部署獨立的 MinIO 二進位檔,做為本機輕量型 S3 相容儲存端點,用於教學課程和測試。對於正式版工作負載,請一律使用受支援且持續維護的 S3 相容儲存空間解決方案或雲端物件儲存空間。
必要條件
- 從 Cloud 控制台存取 Google Cloud 專案和 Cloud Shell。
- 已安裝並設定 Google Cloud SDK (
gcloud)。
課程內容
- 如何設定 Compute Engine VM 以使用 AlloyDB Omni RPM。
- 如何在 VM 上設定與 S3 相容的本機物件儲存伺服器。
- 如何設定 pgBackRest,將與 S3 相容的物件儲存空間做為備份存放區。
- 如何執行、列出及驗證備份。
- 如何從備份還原資料。
軟硬體需求
- 取得 AlloyDB Omni RPM 的網址連結。連結會傳送至您的電子郵件,其中包含存放區網址伺服器。初始化下列環境變數,讓網址在程式碼研究室中隨時可用。
export ALLOYDB_OMNI_REPOSITORY_URL="..." - 可存取 Google Cloud 的終端機。您可以使用 Cloud Shell 達成這個目的。
2. 設定和需求條件
專案設定
建立 Google Cloud 專案
- 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
- 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能。
啟動 Cloud Shell
雖然您可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是雲端執行的指令列環境。

- 開啟 Google Cloud 控制台,然後點選右上角工具列中的 Cloud Shell 圖示。您也可以透過下列任一方式開啟 Cloud Shell:
- 如果您使用 Google Cloud 控制台,請依序按下 G 和 S 鍵。
- 按一下這個連結。
佈建並連至環境預計只需要幾分鐘,這項作業完成後,您會看到類似以下的內容:
{: width="624"}
3. 建立 Compute Engine VM
在本節中,您將使用 gcloud 指令列工具建立單一 Compute Engine (GCE) 虛擬機器 (VM)。您使用與 AlloyDB Omni RPM 完全相容的 Rocky Linux 9 映像檔。
- 為專案 ID、VM 名稱、機型、可用區和區域定義環境變數。
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-pgbackrest" export MACHINE_TYPE="e2-standard-4" export ZONE="us-central1-c" export REGION="us-central1" - 使用 Google Cloud 帳戶使用者登入,並設定預設專案。
gcloud auth login gcloud config set project $PROJECT - 建立防火牆規則,允許連線至 VM 的 SSH 連線。
gcloud compute firewall-rules create allow-ssh-alloydb-omni \ --project=$PROJECT \ --direction=INGRESS \ --action=allow \ --rules=tcp:22 \ --source-ranges="0.0.0.0/0" - 由於 VM 是在沒有公用 IP 位址的情況下建立,請設定 Cloud Router 和 Cloud NAT 閘道,讓 VM 存取外部套件存放區並下載必要軟體。
gcloud compute routers create alloydb-omni-router \ --project=$PROJECT \ --network=default \ --region=$REGION gcloud compute routers nats create alloydb-omni-nat \ --project=$PROJECT \ --router=alloydb-omni-router \ --region=$REGION \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips - 確認虛擬私有雲網路具有有效的預設網際網路閘道路徑。在某些共用或遊樂區環境中,清理指令碼有時會移除預設路徑。Cloud NAT 必須有這條路徑,才能將傳出流量轉送至網際網路。
gcloud compute routes create default-internet-route \ --project=$PROJECT \ --network=default \ --destination-range=0.0.0.0/0 \ --next-hop-gateway=default-internet-gateway - 建立 Compute Engine VM 執行個體,並使用 Rocky Linux 9 和 20 GB 的平衡型永久磁碟。為提升安全性,請使用
--no-address標記,這樣系統就不會為 VM 指派公開 IP 位址。gcloud compute instances create $INSTANCE_NAME \ --project=$PROJECT \ --zone=$ZONE \ --machine-type=$MACHINE_TYPE \ --image-family=rocky-linux-9 \ --image-project=rocky-linux-cloud \ --boot-disk-size=20GB \ --boot-disk-type=pd-balanced \ --no-address - 建立 VM 後,請確認 VM 的狀態。
gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
4. 設定與 S3 相容的物件儲存空間
在本節中,您將連線至 VM、準備環境,並設定本機 S3 相容物件儲存空間伺服器 (minio) 和 S3 用戶端 (mc),以代管備份 bucket。
- 使用 Identity-Aware Proxy (IAP),透過 SSH 連線至 VM。由於 VM 沒有公開 IP 位址,
gcloud會自動透過 IAP 建立 SSH 連線通道。gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - 安裝
policycoreutils-python-utils套件,以便日後視需要設定 SELinux 政策。sudo dnf install -y policycoreutils-python-utils - 下載與 S3 相容的伺服器二進位檔 (
minio)。curl -L -o minio \ https://github.com/minio/minio/releases/download/RELEASE.2024-05-10T01-41-38Z/minio.linux-amd64.RELEASE.2024-05-10T01-41-38Z chmod +x minio sudo mv minio /usr/local/bin/ - 為物件儲存伺服器建立資料目錄。
sudo mkdir -p /var/lib/s3-storage/data - 使用範例憑證在背景啟動 S3 相容伺服器。請注意,密鑰長度至少須為 8 個半形字元。
export MINIO_ROOT_USER="s3admin" export MINIO_ROOT_PASSWORD="s3password" nohup sudo env MINIO_ROOT_USER="$MINIO_ROOT_USER" \ MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \ /usr/local/bin/minio server /var/lib/s3-storage/data \ --console-address ":9001" \ > s3-server.log 2>&1 & - 確認 S3 相容伺服器正在運作。
ps aux | grep minio - 下載並安裝 S3 用戶端 (
mc),以便管理值區。curl -L -o mc \ https://github.com/minio/mc/releases/download/RELEASE.2024-05-09T17-04-24Z/mc.linux-amd64.RELEASE.2024-05-09T17-04-24Z chmod +x mc sudo mv mc /usr/local/bin/ - 設定 S3 用戶端別名 (
s3repo),並建立名為alloydb-backups的 bucket。mc alias set s3repo http://localhost:9000 s3admin s3password mc mb s3repo/alloydb-backups
5. 安裝 AlloyDB Omni
在本節中,您將安裝及設定 AlloyDB Omni。
- 在 VM 上定義資料目錄、AlloyDB Omni 存放區網址,以及 PostgreSQL
postgres管理員使用者的環境變數。將網址替換為註冊表單提供的網址。 注意:本程式碼研究室為了簡化程序,使用指令列上的環境變數傳遞密碼 (例如export PGDATA="/var/lib/alloydbomni" export ALLOYDB_OMNI_REPOSITORY_URL="..." export PGPASSWORD="YourStrongPassword123!"PGPASSWORD=$PGPASSWORD),但這可能會在程序清單中公開密碼。在實際工作環境中,請使用更安全的方法,例如.pgpass檔案或密鑰管理工具。 - 建立資料目錄,AlloyDB Omni 會將資料庫檔案儲存在這個目錄中。
sudo mkdir -p $PGDATA - 建立存放區設定檔,在 VM 上設定 YUM 存放區。
sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF [alloydbomni] name=alloydbomni baseurl=$ALLOYDB_OMNI_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=1 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF - 更新 YUM 快取。
sudo yum makecache - 安裝 AlloyDB Omni RPM 套件的 18 版。
sudo dnf install -y alloydbomni18 - 初始化 AlloyDB Omni 資料庫執行個體。
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - 按照標準程式碼實驗室做法,暫時停用 SELinux 強制執行模式,方便進行設定。
sudo setenforce 0 - 準備 AlloyDB Omni 資料庫執行個體。
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - 啟用並啟動 AlloyDB Omni
systemd服務。sudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 - 確認 AlloyDB Omni 服務已啟用並順利執行。
sudo systemctl status alloydbomni18
6. 設定 pgBackRest
在本節中,您會從 AlloyDB Omni Common 存放區安裝 pgBackRest,將 /etc/pgbackrest/pgbackrest.conf 設定為使用與 S3 相容的物件儲存空間 bucket 做為備份存放區,並在 AlloyDB Omni 中啟用 WAL 封存。
- 在 VM 上為 AlloyDB Omni Common 存放區 URL 定義環境變數。將網址替換為註冊表單提供的網址。
export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..." - 設定 pgBackRest YUM 存放區,並安裝
pgbackrest-2.58.0。sudo tee /etc/yum.repos.d/pgbackrest.repo <<EOF [pgbackrest] name=Google Alloydb Omni Orchestrator baseurl=$ALLOYDB_OMNI_COMMON_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=0 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF sudo dnf install -y pgbackrest-2.58.0 - 為 pgBackRest 建立緩衝區和記錄目錄,並將擁有權指派給
postgres使用者。sudo mkdir -p /var/log/pgbackrest sudo mkdir -p /var/lib/pgbackrest sudo chown -R postgres:postgres /var/log/pgbackrest sudo chown -R postgres:postgres /var/lib/pgbackrest - 建立
/etc/pgbackrest/pgbackrest.conf並設定嚴格的檔案權限。sudo mkdir -p /etc/pgbackrest/conf.d sudo tee /etc/pgbackrest/pgbackrest.conf <<EOF [global] spool-path=/var/lib/pgbackrest lock-path=/var/lib/pgbackrest # S3 Repository details repo1-type=s3 repo1-s3-endpoint=http://localhost:9000 repo1-s3-bucket=alloydb-backups repo1-s3-key=s3admin repo1-s3-key-secret=s3password repo1-s3-region=us-east-1 repo1-s3-uri-style=path repo1-path=/pgbackrest # Retention policy repo1-retention-full=3 repo1-retention-full-type=count repo1-retention-diff=16 # Force immediate checkpoint during backup start start-fast=y # Logging log-path=/var/log/pgbackrest log-level-console=info log-level-file=info # Compression compress-type=zst # Asynchronous WAL archiving archive-async=y archive-push-queue-max=1024MB archive-get-queue-max=256MB archive-missing-retry=y [global:archive-push] process-max=2 [global:archive-get] process-max=2 [omni] pg1-user=postgres pg1-socket-path=/tmp pg1-path=$PGDATA EOF sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf sudo chmod 640 /etc/pgbackrest/pgbackrest.conf - 以
postgres使用者身分初始化 pgBackRest 節。 確認輸出內容中顯示sudo -u postgres pgbackrest --stanza=omni stanza-createstanza-create command end: completed successfully。 - 使用
psql設定 AlloyDB Omni 封存參數。sudo -u postgres /usr/lib/postgresql/18/bin/psql \ -c "ALTER SYSTEM SET archive_mode = 'on';" \ -c "ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET wal_level = 'replica';" \ -c "ALTER SYSTEM SET max_wal_senders = 10;" - 重新啟動 AlloyDB Omni 服務,即可套用封存變更。
sudo systemctl restart alloydbomni18 - 確認 pgBackRest 設定完整性和連線能力。
確認輸出內容中顯示sudo -u postgres pgbackrest --stanza=omni checkcheck command end: completed successfully。
7. 執行備份
在本節中,您將使用 pgBackRest 對 AlloyDB Omni 資料庫執行完整備份和差異備份,並將備份檔儲存至與 S3 相容的物件儲存空間。
- 使用
pgbackrest觸發完整備份。sudo -u postgres pgbackrest \ --stanza=omni \ --type=full backup - 使用
pgbackrest觸發差異備份。 注意:其他支援的備份類型包括sudo -u postgres pgbackrest \ --stanza=omni \ --type=diff backupincr(增量)。
8. 列出及驗證備份
在本節中,您將列出備份項目,並確認備份作業是否順利完成。
- 使用
pgbackrest info指令列出備份。 確認輸出內容顯示sudo -u postgres pgbackrest \ --stanza=omni infostatus: ok,以及您執行的每個備份指令的備份資訊:- 完整備份:
full backup:(例如F 20260908-093545F) - 差異備份:
diff backup:(例如F_ D 20260908-093545F_20260908-094016D)
- 完整備份:
- 使用 S3 用戶端 (
mc) 驗證儲存在 bucket 中的備份檔案。 輸出內容中應會顯示mc ls s3repo/alloydb-backups/pgbackrest/backup、archive和stanza.info。
9. 從備份還原資料
在本節中,您將停止 AlloyDB Omni 資料庫服務,並使用 pgbackrest 從特定備份還原資料。
注意:還原作業會停止資料庫運作,並覆寫所有資料庫資料。
- 為要還原的備份 ID 定義環境變數。將值替換為
pgbackrest info輸出中顯示的備份 ID。export BACKUPID="20260908-093545F" - 停止 AlloyDB Omni 服務,並確認服務已停用。
確認輸出內容顯示sudo systemctl stop alloydbomni18 sudo systemctl status alloydbomni18Active: inactive。 - 執行
pgbackrest restore並搭配--delta選項,從所選備份還原資料庫。 確認輸出內容中顯示sudo -u postgres pgbackrest \ --stanza=omni \ --set=$BACKUPID \ --delta restorerestore command end: completed successfully。 - 啟動 AlloyDB Omni 服務,並確認服務已啟用且正在執行。
確認輸出內容顯示sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running)。
10. 清理與問卷調查
完成程式碼研究室後,您可以清理 Google Cloud 資源,以免產生不必要的費用。
- 中斷與 VM 的 SSH 工作階段連線,返回本機 Cloud Shell 終端機。
exit - 刪除 Compute Engine VM 執行個體。
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet - 刪除為 SSH 存取權建立的防火牆規則。
gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet - 刪除 Cloud NAT 閘道和 Cloud Router。
gcloud compute routers nats delete alloydb-omni-nat --router=alloydb-omni-router --region=$REGION --project=$PROJECT --quiet gcloud compute routers delete alloydb-omni-router --region=$REGION --project=$PROJECT --quiet - 刪除自訂路線。
gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
11. 恭喜
恭喜您完成本程式碼研究室!您已成功設定 pgBackRest,可使用與 S3 相容的物件儲存空間,備份及還原 AlloyDB Omni RPM 部署作業。
涵蓋內容
- 如何設定 Compute Engine VM 以使用 AlloyDB Omni RPM。
- 如何設定與 S3 相容的物件儲存空間值區。
- 如何使用與 S3 相容的存放區設定 pgBackRest。
- 如何執行、列出及驗證完整備份和差異備份。
- 如何使用 pgBackRest 從備份還原資料。
詳情請參閱「AlloyDB Omni 總覽」。