1. บทนำ
Codelab นี้แสดงวิธีกำหนดค่า pgBackRest เพื่อสำรองข้อมูลและกู้คืนการติดตั้งใช้งาน AlloyDB Omni RPM โดยใช้ที่เก็บข้อมูลออบเจ็กต์ที่เข้ากันได้กับ S3
หมายเหตุ: ใน Codelab นี้ คุณจะติดตั้งใช้งานไบนารี MinIO แบบสแตนด์อโลนใน VM เพื่อทำหน้าที่เป็นปลายทางการจัดเก็บที่เข้ากันได้กับ S3 แบบน้ำหนักเบาในเครื่องเพื่อวัตถุประสงค์ในการทดสอบและบทแนะนำ สำหรับภาระงานการผลิต ให้ใช้โซลูชันพื้นที่เก็บข้อมูลที่รองรับและเข้ากันได้กับ S3 หรือพื้นที่เก็บข้อมูลออบเจ็กต์บนระบบคลาวด์ที่ได้รับการดูแลอย่างต่อเนื่องเสมอ
ข้อกำหนดเบื้องต้น
- สิทธิ์เข้าถึงโปรเจ็กต์ Google Cloud และ Cloud Shell จาก Cloud Console
- ติดตั้งและกำหนดค่า Google Cloud SDK (
gcloud) แล้ว
สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่า VM ของ Compute Engine สำหรับ AlloyDB Omni RPM
- วิธีตั้งค่าเซิร์ฟเวอร์พื้นที่เก็บข้อมูลออบเจ็กต์ที่เข้ากันได้กับ S3 ในเครื่องบน VM
- วิธีกำหนดค่า pgBackRest ให้ใช้พื้นที่เก็บข้อมูลออบเจ็กต์ที่เข้ากันได้กับ S3 เป็นที่เก็บข้อมูลสำรอง
- วิธีดำเนินการ แสดงรายการ และยืนยันข้อมูลสำรอง
- วิธีกู้คืนข้อมูลจากข้อมูลสำรอง
สิ่งที่คุณต้องมี
- รับลิงก์ URL ไปยัง RPM ของ AlloyDB Omni ระบบจะส่งลิงก์ไปยังอีเมลของคุณซึ่งมีเซิร์ฟเวอร์ URL ของที่เก็บ เริ่มต้นตัวแปรสภาพแวดล้อมต่อไปนี้เพื่อให้ URL พร้อมใช้งานในระหว่าง Codelab
export ALLOYDB_OMNI_REPOSITORY_URL="..." - เทอร์มินัลที่ใช้งานได้ซึ่งมีสิทธิ์เข้าถึง Google Cloud คุณใช้ Cloud Shell เพื่อวัตถุประสงค์นี้ได้
2. การตั้งค่าและข้อกำหนด
การตั้งค่าโปรเจ็กต์
สร้างโปรเจ็กต์ Google Cloud
- ในคอนโซล Google Cloud ในหน้าตัวเลือกโปรเจ็กต์ ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

- เปิด คอนโซล Google Cloud แล้วคลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน หรือจะเปิด Cloud Shell ด้วยวิธีใดวิธีหนึ่งต่อไปนี้ก็ได้
- หากใช้คอนโซล Google Cloud ให้กด G แล้วกด S
- คลิกลิงก์นี้
โดยปกติแล้วการจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาสักครู่ เมื่อการดำเนินการนี้เสร็จสมบูรณ์ คุณจะเห็นข้อความคล้ายกับข้อความต่อไปนี้
{: width="624"}
3. สร้าง VM ของ Compute Engine
ในส่วนนี้ คุณจะสร้างเครื่องเสมือน (VM) ของ Compute Engine (GCE) เครื่องเดียวโดยใช้เครื่องมือบรรทัดคำสั่ง gcloud คุณใช้รูปภาพ Rocky Linux 9 ซึ่งเข้ากันได้กับ AlloyDB Omni RPM อย่างสมบูรณ์
- กำหนดตัวแปรสภาพแวดล้อมสำหรับรหัสโปรเจ็กต์ ชื่อ 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 - สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเชื่อมต่อ SSH กับ VM
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 - ตรวจสอบว่าเครือข่าย VPC มีเส้นทางเกตเวย์อินเทอร์เน็ตเริ่มต้นที่ถูกต้อง ในสภาพแวดล้อมที่แชร์หรือสภาพแวดล้อมแซนด์บ็อกซ์บางแห่ง สคริปต์การล้างข้อมูลอาจนำเส้นทางเริ่มต้นออกเป็นครั้งคราว เส้นทางนี้จำเป็นสำหรับ 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 - สร้างอินสแตนซ์ VM ของ Compute Engine ด้วย Rocky Linux 9 และดิสก์ถาวรที่มีการจัดสรรขนาด 20 GB ใช้แฟล็ก
--no-addressเพื่อเพิ่มความปลอดภัยเพื่อให้ระบบไม่กำหนดที่อยู่ IP สาธารณะให้กับ VMgcloud 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) เพื่อโฮสต์ที่เก็บข้อมูลสำรอง
- เชื่อมต่อกับ VM ผ่าน SSH โดยใช้ Identity-Aware Proxy (IAP) เนื่องจาก VM ไม่มีที่อยู่ IP สาธารณะ
gcloudจะสร้างอุโมงค์การเชื่อมต่อ SSH ผ่าน IAP โดยอัตโนมัติ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) เพื่อจัดการ Bucketcurl -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) และสร้าง Bucket ชื่อalloydb-backupsmc alias set s3repo http://localhost:9000 s3admin s3password mc mb s3repo/alloydb-backups
5. ติดตั้ง AlloyDB Omni
ในส่วนนี้ คุณจะได้ติดตั้งและกำหนดค่า AlloyDB Omni
- กำหนดตัวแปรสภาพแวดล้อมใน VM สำหรับไดเรกทอรีข้อมูล, URL ของที่เก็บ AlloyDB Omni และรหัสผ่านที่รัดกุมสำหรับผู้ใช้ผู้ดูแลระบบ
postgresของ PostgreSQL แทนที่ URL ด้วย URL ที่คุณได้รับจากแบบฟอร์มลงชื่อสมัครใช้ หมายเหตุ: การส่งรหัสผ่านโดยใช้ตัวแปรสภาพแวดล้อมในบรรทัดคำสั่ง (เช่นexport PGDATA="/var/lib/alloydbomni" export ALLOYDB_OMNI_REPOSITORY_URL="..." export PGPASSWORD="YourStrongPassword123!"PGPASSWORD=$PGPASSWORD) ใช้ที่นี่เพื่อความสะดวกใน Codelab แต่การทำเช่นนี้อาจทำให้รหัสผ่านเปิดเผยในรายการกระบวนการ ในเวอร์ชันที่ใช้งานจริง ให้ใช้วิธีที่ปลอดภัยกว่า เช่น ไฟล์.pgpassหรือ Secret Manager - สร้างไดเรกทอรีข้อมูลที่ AlloyDB Omni จะจัดเก็บไฟล์ฐานข้อมูล
sudo mkdir -p $PGDATA - กำหนดค่าที่เก็บ YUM ใน VM โดยการสร้างไฟล์การกำหนดค่าที่เก็บ
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 - ติดตั้งแพ็กเกจ RPM ของ AlloyDB Omni เวอร์ชัน 18
sudo dnf install -y alloydbomni18 - เริ่มต้นอินสแตนซ์ฐานข้อมูล AlloyDB Omni
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - ปิดใช้โหมดบังคับใช้ SELinux ชั่วคราวเพื่ออำนวยความสะดวกในการตั้งค่าตามแนวทางปฏิบัติของ Codelab มาตรฐาน
sudo setenforce 0 - เตรียมอินสแตนซ์ฐานข้อมูล AlloyDB Omni
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - เปิดใช้และเริ่มบริการ AlloyDB Omni
systemdsudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 - ตรวจสอบว่าบริการ AlloyDB Omni ทำงานอยู่และทำงานสำเร็จ
sudo systemctl status alloydbomni18
6. กำหนดค่า pgBackRest
ในส่วนนี้ คุณจะได้ติดตั้ง pgBackRest จากที่เก็บข้อมูลทั่วไปของ AlloyDB Omni กำหนดค่า /etc/pgbackrest/pgbackrest.conf ให้ใช้ที่เก็บข้อมูลออบเจ็กต์ที่เข้ากันได้กับ S3 เป็นที่เก็บข้อมูลสำรอง และเปิดใช้การเก็บถาวร WAL ใน AlloyDB Omni
- กำหนดตัวแปรสภาพแวดล้อมใน VM สำหรับ URL ของที่เก็บ AlloyDB Omni Common แทนที่ URL ด้วย URL ที่คุณได้รับจากแบบฟอร์มลงชื่อสมัครใช้
export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..." - กำหนดค่าที่เก็บ YUM ของ pgBackRest และติดตั้ง
pgbackrest-2.58.0sudo 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 และมอบหมายความเป็นเจ้าของให้กับผู้ใช้
postgressudo 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 - เริ่มต้น Stanza ของ pgBackRest ในฐานะผู้ใช้
postgres ยืนยันว่าsudo -u postgres pgbackrest --stanza=omni stanza-createstanza-create command end: completed successfullyแสดงในเอาต์พุต - กำหนดค่าพารามิเตอร์การจัดเก็บ AlloyDB Omni โดยใช้
psqlsudo -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
- ทริกเกอร์การสำรองข้อมูลแบบเต็มโดยใช้
pgbackrestsudo -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)
- การสำรองข้อมูลแบบเต็ม:
- ยืนยันไฟล์สำรองข้อมูลที่จัดเก็บไว้ใน Bucket โดยใช้ไคลเอ็นต์ S3 (
mc) คุณควรเห็นmc ls s3repo/alloydb-backups/pgbackrest/backup,archiveและstanza.infoในเอาต์พุต
9. กู้คืนข้อมูลจากข้อมูลสำรอง
ในส่วนนี้ คุณจะหยุดบริการฐานข้อมูล AlloyDB Omni และกู้คืนข้อมูลจากการสำรองข้อมูลที่เฉพาะเจาะจงโดยใช้ pgbackrest
ข้อควรระวัง: การกู้คืนจะหยุดฐานข้อมูลและเขียนทับข้อมูลทั้งหมดในฐานข้อมูล
- กำหนดตัวแปรสภาพแวดล้อมสำหรับรหัสข้อมูลสำรองที่ต้องการกู้คืน แทนที่ค่าด้วยรหัสสำรองที่แสดงในเอาต์พุต
pgbackrest infoexport 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. การทำความสะอาดและสำรวจ
หลังจากทำ Codelab เสร็จแล้ว คุณสามารถล้างข้อมูลทรัพยากร Google Cloud เพื่อหลีกเลี่ยงการเรียกเก็บเงินที่ไม่ต้องการ
- ยกเลิกการเชื่อมต่อจากเซสชัน SSH ใน VM เพื่อกลับไปยังเทอร์มินัล Cloud Shell ในเครื่อง
exit - ลบอินสแตนซ์ VM ของ Compute Engine
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. ขอแสดงความยินดี
ขอแสดงความยินดีที่ทำ Codelab เสร็จสมบูรณ์ คุณกำหนดค่า pgBackRest เพื่อสำรองและกู้คืนการติดตั้งใช้งาน AlloyDB Omni RPM โดยใช้ที่เก็บข้อมูลออบเจ็กต์ที่เข้ากันได้กับ S3 ได้สำเร็จ
สิ่งที่เราได้พูดถึง
- วิธีตั้งค่า VM ของ Compute Engine สำหรับ AlloyDB Omni RPM
- วิธีตั้งค่าที่เก็บข้อมูลออบเจ็กต์ที่เข้ากันได้กับ S3
- วิธีกำหนดค่า pgBackRest ด้วยที่เก็บที่เข้ากันได้กับ S3
- วิธีดำเนินการ แสดงรายการ และยืนยันข้อมูลสำรองแบบเต็มและแบบส่วนต่าง
- วิธีกู้คืนข้อมูลจากข้อมูลสำรองโดยใช้ pgBackRest
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของ AlloyDB Omni