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

- เปิด คอนโซล Google Cloud แล้วคลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน หรือจะเปิด Cloud Shell ด้วยวิธีใดวิธีหนึ่งต่อไปนี้ก็ได้
- หากใช้คอนโซล Google Cloud ให้กด G แล้วกด S
- คลิกลิงก์นี้
โดยปกติแล้ว Cloud Shell จะใช้เวลาสักครู่ในการจัดสรรและเชื่อมต่อกับสภาพแวดล้อม เมื่อการดำเนินการนี้เสร็จสมบูรณ์ คุณจะเห็นเอาต์พุตที่คล้ายกับเอาต์พุตต่อไปนี้

3. สร้าง VM ของ Compute Engine
ในส่วนนี้ ให้สร้างเครื่องเสมือน (VM) ของ Compute Engine เครื่องเดียวโดยใช้เครื่องมือบรรทัดคำสั่ง gcloud ใช้รูปภาพ Rocky Linux 9 ซึ่งเข้ากันได้กับ RPM ของ AlloyDB Omni อย่างสมบูรณ์
- กำหนดตัวแปรสภาพแวดล้อมสำหรับรหัสโปรเจ็กต์ ชื่อ VM โซน และภูมิภาค
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-multi-vm" export ZONE="us-central1-c" export REGION="us-central1" - ลงชื่อเข้าใช้ด้วยบัญชี Google Cloud แล้วกำหนดค่าโปรเจ็กต์เริ่มต้น
gcloud auth login gcloud config set project $PROJECT - หากต้องการอนุญาตการเชื่อมต่อ SSH กับ VM โดยใช้ Identity-Aware Proxy (IAP) ให้สร้างกฎไฟร์วอลล์
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 - ตรวจสอบว่าเครือข่าย Virtual Private Cloud (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 โดยมีข้อกำหนดที่จำเป็น (16 vCPU, ดิสก์ถาวรที่มีการจัดสรรขนาด 20 GB, Rocky Linux 9) เพื่อเพิ่มความปลอดภัย ให้ใช้แฟล็ก
--no-addressเพื่อให้แน่ใจว่าระบบไม่ได้กำหนดที่อยู่ IP สาธารณะให้กับ VMgcloud compute instances create $INSTANCE_NAME \ --project=$PROJECT \ --zone=$ZONE \ --machine-type=n2-highmem-16 \ --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. เตรียม VM
ในส่วนนี้ คุณจะเชื่อมต่อกับ VM ที่สร้างขึ้นใหม่และเตรียมสภาพแวดล้อมของระบบปฏิบัติการ
- เชื่อมต่อกับ VM ผ่าน SSH โดยใช้ IAP เนื่องจาก VM ไม่มีที่อยู่ IP สาธารณะ
gcloudจึงสร้างอุโมงค์การเชื่อมต่อ SSH ผ่าน IAP โดยอัตโนมัติgcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - กำหนดตัวแปรสภาพแวดล้อมสำหรับไดเรกทอรีข้อมูลฐาน
export BASE_PGDATA="/var/lib/alloydbomni" - สร้างไดเรกทอรีข้อมูลพื้นฐาน
sudo mkdir -p $BASE_PGDATA - ติดตั้งแพ็กเกจ
policycoreutils-python-utilsเพื่อให้กำหนดค่านโยบาย SELinux ได้sudo dnf install -y policycoreutils-python-utils
5. ติดตั้ง AlloyDB Omni
เมื่อเตรียม VM แล้ว คุณจะกำหนดค่าที่เก็บแพ็กเกจและติดตั้งแพ็กเกจ AlloyDB Omni RPM ได้
- กำหนดค่าที่เก็บ YUM ใน VM โดยสร้างไฟล์การกำหนดค่าที่เก็บ แทนที่
$ALLOYDB_OMNI_REPOSITORY_URLด้วย URL ที่คุณได้รับexport ALLOYDB_OMNI_REPOSITORY_URL="..." 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
6. กำหนดค่าหลายอินสแตนซ์
ในส่วนนี้ ให้กำหนดค่าอินสแตนซ์ 2 รายการ ได้แก่ inst1 และ inst2
- หากต้องการรองรับหลายอินสแตนซ์ ให้สร้าง
systemdไฟล์บริการเทมเพลตalloydbomni18@.servicesudo tee /etc/systemd/system/alloydbomni18@.service << EOF [Unit] Description=AlloyDB Omni Database server instance %I After=syslog.target After=network-online.target [Service] SyslogIdentifier=alloydbomni-%I Type=notify User=postgres Group=postgres # Load configuration for the instance EnvironmentFile=/etc/alloydbomni/%I.conf OOMScoreAdjust=-1000 Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj Environment=PG_OOM_ADJUST_VALUE=0 ExecStartPre=/usr/lib/postgresql/18/bin/alloydbomni18-check-db-dir \${PGDATA} ExecStart=/usr/lib/postgresql/18/bin/postgres -D \${PGDATA} ExecReload=/bin/kill -HUP \$MAINPID KillMode=mixed KillSignal=SIGINT TimeoutSec=0 TimeoutStartSec=0 TimeoutStopSec=1h [Install] WantedBy=multi-user.target EOF - โหลดการกำหนดค่าของเครื่องมือจัดการ
systemdอีกครั้งเพื่อให้รู้จักบริการเทมเพลตใหม่sudo systemctl daemon-reload - สร้างไดเรกทอรีการกำหนดค่าสำหรับอินสแตนซ์ AlloyDB Omni
sudo mkdir -p /etc/alloydbomni - กำหนดค่าไดเรกทอรีข้อมูลสำหรับ
inst1sudo tee /etc/alloydbomni/inst1.conf << EOF PGDATA=/var/lib/alloydbomni/inst1 EOF - กำหนดค่าไดเรกทอรีข้อมูลสำหรับ
inst2sudo tee /etc/alloydbomni/inst2.conf << EOF PGDATA=/var/lib/alloydbomni/inst2 EOF - กำหนดสิทธิ์ที่เหมาะสมในไฟล์การกำหนดค่า
sudo chmod 640 /etc/alloydbomni/*.conf sudo chown postgres:postgres /etc/alloydbomni/*.conf - สร้างไดเรกทอรีข้อมูลสำหรับทั้ง 2 อินสแตนซ์และตั้งค่าความเป็นเจ้าของที่ถูกต้อง
sudo mkdir -p /var/lib/alloydbomni/inst1 sudo mkdir -p /var/lib/alloydbomni/inst2 sudo chown -R postgres:postgres /var/lib/alloydbomni sudo chmod 750 /var/lib/alloydbomni/inst1 /var/lib/alloydbomni/inst2 - ไม่บังคับ: ตั้งค่าขีดจำกัดของทรัพยากรสำหรับแต่ละอินสแตนซ์ ซึ่งจะช่วยป้องกันไม่ให้อินสแตนซ์หนึ่งใช้ทรัพยากร VM ทั้งหมด สร้าง
systemdไดเรกทอรีและไฟล์การลบล้างสำหรับทั้ง 2 อินสแตนซ์หมายเหตุ: ขีดจำกัดของทรัพยากรที่ใช้ในการกำหนดค่าต่อไปนี้ (40%) เป็นค่าตัวอย่าง ปรับขีดจำกัดตามภาระงานและความจุ VM ที่เฉพาะเจาะจงสำหรับinst1 สำหรับsudo mkdir -p /etc/systemd/system/alloydbomni18@inst1.service.d sudo tee /etc/systemd/system/alloydbomni18@inst1.service.d/override.conf << EOF [Service] CPUQuota=40% MemoryMax=40% EOFinst2sudo mkdir -p /etc/systemd/system/alloydbomni18@inst2.service.d sudo tee /etc/systemd/system/alloydbomni18@inst2.service.d/override.conf << EOF [Service] CPUQuota=40% MemoryMax=40% EOF
7. เริ่มต้นและเตรียมฐานข้อมูล
เริ่มต้นและเตรียมอินสแตนซ์ฐานข้อมูลแต่ละรายการแยกกัน
- กำหนดค่า SELinux เป็นโหมดที่อนุญาตสำหรับการตั้งค่า
ข้อควรระวัง: การตั้งค่า SELinux เป็นโหมดที่อนุญาตจะปิดใช้การบังคับใช้และควรใช้อย่างระมัดระวัง ซึ่งใช้ใน Codelab นี้เพื่อลดความซับซ้อนในการติดตั้ง ในการใช้งานจริง ให้กำหนดค่านโยบาย SELinux ที่เหมาะสมสำหรับ AlloyDB Omni เพื่อให้ทำงานในโหมดบังคับใช้ คุณเปิดใช้การบังคับใช้อีกครั้งได้หลังการตั้งค่าโดยเรียกใช้sudo setenforce 0sudo setenforce 1 - กำหนดรหัสผ่านที่รัดกุมสำหรับผู้ใช้ผู้ดูแลระบบ
postgresของ PostgreSQL รหัสผ่านนี้ใช้ได้กับทั้ง 2 อินสแตนซ์ในโค้ดแล็บนี้ หมายเหตุ: การส่งรหัสผ่านโดยใช้ตัวแปรสภาพแวดล้อมในบรรทัดคำสั่ง (เช่นexport PGPASSWORD="YourStrongPassword123!"PGPASSWORD=$PGPASSWORD) ใช้ที่นี่เพื่อความสะดวกใน Codelab แต่การทำเช่นนี้อาจทำให้รหัสผ่านปรากฏในรายการกระบวนการ ในเวอร์ชันที่ใช้งานจริง ให้ใช้วิธีที่ปลอดภัยกว่า เช่น ไฟล์.pgpassหรือ Secret Manager
ตั้งค่า inst1
- เริ่มต้นไดเรกทอรีฐานข้อมูลสำหรับ
inst1sudo PGPASSWORD=$PGPASSWORD \ PGDATA=/var/lib/alloydbomni/inst1 \ /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - กำหนดค่าอินสแตนซ์ให้รับฟังในพอร์ต
5433โดยการอัปเดตไฟล์postgresql.confsudo sed -i \ "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5433/" \ /var/lib/alloydbomni/inst1/postgresql.conf - เตรียมอินสแตนซ์ฐานข้อมูลสำหรับ AlloyDB Omni
sudo PGPASSWORD=$PGPASSWORD \ PGDATA=/var/lib/alloydbomni/inst1 \ PGPORT=5433 \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
ตั้งค่า inst2
- เริ่มต้นไดเรกทอรีฐานข้อมูลสำหรับ
inst2sudo PGPASSWORD=$PGPASSWORD \ PGDATA=/var/lib/alloydbomni/inst2 \ /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - กำหนดค่าอินสแตนซ์ให้รอการเชื่อมต่อบนพอร์ต
5434sudo sed -i \ "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5434/" \ /var/lib/alloydbomni/inst2/postgresql.conf - เตรียมอินสแตนซ์ฐานข้อมูล
sudo PGPASSWORD=$PGPASSWORD \ PGDATA=/var/lib/alloydbomni/inst2 \ PGPORT=5434 \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
8. เริ่มบริการ AlloyDB Omni
ตอนนี้คุณเริ่มบริการ systemd สำหรับทั้ง 2 อินสแตนซ์ได้แล้ว
- หากต้องการรับรู้การกำหนดค่าและการลบล้างใหม่ ให้โหลดการกำหนดค่าของ
systemdManager ซ้ำsudo systemctl daemon-reload - เปิดใช้และเริ่มบริการสำหรับ
inst1sudo systemctl enable alloydbomni18@inst1 sudo systemctl start alloydbomni18@inst1 - เปิดใช้และเริ่มบริการสำหรับ
inst2sudo systemctl enable alloydbomni18@inst2 sudo systemctl start alloydbomni18@inst2 - ตรวจสอบว่าทั้ง 2 บริการทำงานอยู่
ตรวจสอบว่าเอาต์พุตของทั้ง 2 รายการระบุsudo systemctl status alloydbomni18@inst1 sudo systemctl status alloydbomni18@inst2Active: active (running)
9. ยืนยันอินสแตนซ์ AlloyDB Omni
ตรวจสอบว่าอินสแตนซ์ทั้ง 2 รายการทำงานได้อย่างถูกต้องและเป็นอิสระต่อกัน
- เชื่อมต่อกับ
inst1(พอร์ต 5433) ระบบจะแจ้งให้คุณป้อนรหัสผ่านที่กำหนดค่าไว้ในเริ่มต้นและเตรียมฐานข้อมูล/usr/lib/postgresql/18/bin/psql -h localhost -p 5433 -U postgres -W - เรียกใช้การค้นหาเพื่อยืนยันการเชื่อมต่อ
postgres=# SELECT version(); - ยกเลิกการเชื่อมต่อจากอินสแตนซ์
postgres=# \q - เชื่อมต่อกับ
inst2(พอร์ต 5434)/usr/lib/postgresql/18/bin/psql -h localhost -p 5434 -U postgres -W - เรียกใช้การค้นหาเพื่อยืนยันการเชื่อมต่อ
postgres=# SELECT version(); - ยกเลิกการเชื่อมต่อจากอินสแตนซ์
postgres=# \q
10. กำหนดค่าสำหรับการจำลองแบบ pglogical
กำหนดค่าการจำลองแบบเชิงตรรกะระหว่างอินสแตนซ์ทั้ง 2 โดยใช้ส่วนขยาย pglogical ในสถานการณ์นี้ inst1 จะทำหน้าที่เป็นผู้ให้บริการ และ inst2 จะทำหน้าที่เป็นผู้ติดตาม
หมายเหตุ: Codelab นี้ใช้postgresผู้ใช้ขั้นสูงสำหรับการเชื่อมต่อการจำลอง ในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ ให้สร้างผู้ใช้เรพลิเคชันเฉพาะที่มีสิทธิ์ REPLICATION และให้สิทธิ์เข้าถึงเฉพาะตารางที่กำลังเรพลิเคชัน
กำหนดค่าอินสแตนซ์สำหรับ pglogical
- เปิดใช้
pglogicalในshared_preload_librariesและกำหนดค่าพารามิเตอร์การจำลองอื่นๆ ในpostgresql.confสำหรับinst1# Append pglogical to shared_preload_libraries sudo sed -i \ "s/\(shared_preload_libraries\s*=\s*'\)\([^']*\)'/\1\2,pglogical'/" \ /var/lib/alloydbomni/inst1/postgresql.conf # Append replication settings sudo tee -a /var/lib/alloydbomni/inst1/postgresql.conf << EOF wal_level = logical max_replication_slots = 10 max_wal_senders = 10 max_worker_processes = 20 track_commit_timestamp = on alloydb.enable_pglogical = on alloydb.logical_decoding = on EOF - กำหนดการตั้งค่าสำหรับ
inst2ที่คุณกำหนดค่าไว้สำหรับinst1# Append pglogical to shared_preload_libraries sudo sed -i \ "s/\(shared_preload_libraries\s*=\s*'\)\([^']*\)'/\1\2,pglogical'/" \ /var/lib/alloydbomni/inst2/postgresql.conf # Append replication settings sudo tee -a /var/lib/alloydbomni/inst2/postgresql.conf << EOF wal_level = logical max_replication_slots = 10 max_wal_senders = 10 max_worker_processes = 20 track_commit_timestamp = on alloydb.enable_pglogical = on alloydb.logical_decoding = on EOF - รีสตาร์ททั้ง 2 อินสแตนซ์เพื่อให้การเปลี่ยนแปลงการกำหนดค่ามีผล
sudo systemctl restart alloydbomni18@inst1 sudo systemctl restart alloydbomni18@inst2
ตั้งค่าบทบาทและตารางการจำลอง
- ใน
inst1(ผู้ให้บริการ พอร์ต 5433) ให้สร้างบทบาทการจำลองและตารางที่จะจำลอง/usr/lib/postgresql/18/bin/psql -h localhost -p 5433 \ -U postgres -d postgres -c " DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'app_owner') THEN CREATE ROLE app_owner WITH LOGIN PASSWORD 'Password123'; END IF; END \$\$; GRANT ALL ON SCHEMA public TO app_owner; CREATE TABLE IF NOT EXISTS replication_test ( id SERIAL PRIMARY KEY, data TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ALTER TABLE replication_test OWNER TO app_owner; " - ใน
inst2(ผู้สมัครใช้บริการ พอร์ต 5434) ให้สร้างโครงสร้างบทบาทและตารางเดียวกัน/usr/lib/postgresql/18/bin/psql -h localhost -p 5434 \ -U postgres -d postgres -c " DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'app_owner') THEN CREATE ROLE app_owner WITH LOGIN PASSWORD 'Password123'; END IF; END \$\$; GRANT ALL ON SCHEMA public TO app_owner; CREATE TABLE IF NOT EXISTS replication_test ( id SERIAL PRIMARY KEY, data TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ALTER TABLE replication_test OWNER TO app_owner; "
กำหนดค่าโหนดและการสมัครใช้บริการ pglogical
- เริ่มต้นโหนดผู้ให้บริการ pglogical ใน
inst1/usr/lib/postgresql/18/bin/psql -h localhost -p 5433 \ -U postgres -d postgres -c " CREATE EXTENSION IF NOT EXISTS pglogical; SELECT pglogical.create_node( node_name := 'provider', dsn := 'host=127.0.0.1 port=5433 dbname=postgres user=postgres password=YourStrongPassword123!' ); SELECT pglogical.replication_set_add_table('default', 'replication_test'); " - เริ่มต้นโหนดสมาชิก pglogical และสร้างการสมัครใช้บริการใน
inst2 หมายเหตุ: หลังจากสร้างการติดตามแล้ว ระบบอาจใช้เวลาสักครู่ในการซิงค์ข้อมูลครั้งแรกให้เสร็จสมบูรณ์/usr/lib/postgresql/18/bin/psql -h localhost -p 5434 \ -U postgres -d postgres -c " CREATE EXTENSION IF NOT EXISTS pglogical; SELECT pglogical.create_node( node_name := 'subscriber', dsn := 'host=127.0.0.1 port=5434 dbname=postgres user=postgres password=YourStrongPassword123!' ); SELECT pglogical.create_subscription( subscription_name := 'test_subscription', provider_dsn := 'host=127.0.0.1 port=5433 dbname=postgres user=postgres password=YourStrongPassword123!' ); "
11. ยืนยันการจำลองแบบ pglogical
ยืนยันว่าการจำลองทำงานได้ตามที่คาดไว้โดยการแทรกข้อมูลในผู้ให้บริการและค้นหาข้อมูลในผู้ติดตาม
- โปรดยืนยันว่าการสมัครใช้บริการยังไม่หมดอายุ การเปลี่ยนไปใช้
replicatingอาจใช้เวลาสักครู่/usr/lib/postgresql/18/bin/psql -t -A -h localhost -p 5434 \ -U postgres -d postgres -c " SELECT status FROM pglogical.show_subscription_status() WHERE subscription_name = 'test_subscription'; " - ยืนยันว่าเอาต์พุตแสดง
replicatingก่อนดำเนินการต่อ - แทรกแถวทดสอบในผู้ให้บริการ (
inst1)/usr/lib/postgresql/18/bin/psql -h localhost -p 5433 \ -U postgres -d postgres -c " INSERT INTO replication_test (data) VALUES ('Hello from replication provider!'); " - หากต้องการยืนยันว่าข้อมูลได้รับการจำลองแล้ว ให้ค้นหาตารางใน
inst2 ตรวจสอบว่าคุณเห็นแถวที่แทรกในวันที่/usr/lib/postgresql/18/bin/psql -h localhost -p 5434 \ -U postgres -d postgres -c "SELECT * FROM replication_test;"inst1
12. ล้างข้อมูล
ล้างข้อมูลทรัพยากร ก่อนอื่น ให้ทำลายอินสแตนซ์ AlloyDB Omni ใน VM แล้วลบทรัพยากร Google Cloud
ทำลายอินสแตนซ์ AlloyDB Omni
ก่อนที่จะลบ VM คุณสามารถล้างข้อมูลอินสแตนซ์ AlloyDB Omni ได้โดยการหยุดและปิดใช้บริการ รวมถึงนำการกำหนดค่าและข้อมูลออก
- หยุดและปิดใช้บริการสำหรับ
inst1รวมถึงนำข้อมูลและการกำหนดค่าออกsudo systemctl stop alloydbomni18@inst1 sudo systemctl disable alloydbomni18@inst1 sudo rm -rf /var/lib/alloydbomni/inst1 sudo rm -f /etc/alloydbomni/inst1.conf - หยุดและปิดใช้บริการสำหรับ
inst2รวมถึงนำข้อมูลและการกำหนดค่าออกsudo systemctl stop alloydbomni18@inst2 sudo systemctl disable alloydbomni18@inst2 sudo rm -rf /var/lib/alloydbomni/inst2 sudo rm -f /etc/alloydbomni/inst2.conf - โหลดการกำหนดค่าตัวจัดการ systemd ซ้ำและรีเซ็ตหน่วยที่ไม่สำเร็จ
sudo systemctl daemon-reload sudo systemctl reset-failed
ล้างข้อมูลทรัพยากร Google Cloud
หลังจากล้างข้อมูลอินสแตนซ์แล้ว ให้ลบ VM ของ Compute Engine และทรัพยากรอื่นๆ
- ยกเลิกการเชื่อมต่อจากเซสชัน SSH
exit - ลบอินสแตนซ์ VM ของ Compute Engine
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet - ลบกฎไฟร์วอลล์
gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet - ลบ Cloud NAT และเราเตอร์
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
13. ขอแสดงความยินดี
คุณได้ติดตั้งใช้งานและกำหนดค่าอินสแตนซ์ AlloyDB Omni หลายรายการใน VM ของ Compute Engine เครื่องเดียวเรียบร้อยแล้ว
สิ่งที่เราได้พูดถึงไปแล้ว
- วิธีจัดสรรและเตรียม VM ของ Compute Engine
- วิธีติดตั้ง RPM ของ AlloyDB Omni
- วิธีกำหนดค่า
systemdเทมเพลตสำหรับหลายอินสแตนซ์ - วิธีเริ่มต้น กำหนดค่า และเริ่มบริการอิสระหลายรายการในพอร์ตต่างๆ
- วิธียืนยันความเป็นอิสระของแต่ละอินสแตนซ์
ดูข้อมูลเพิ่มเติม
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและการกำหนดค่าได้ที่เอกสารประกอบของ AlloyDB Omni
- ดูรายละเอียดเกี่ยวกับส่วนขยายการจำลองที่ใช้ใน Codelab นี้ได้ที่เอกสารประกอบของ pglogical