تکثیر منطقی با AlloyDB Omni

۱. مقدمه

این کدلاگ نحوه پیکربندی تکثیر منطقی بین نمونه‌های مستقل AlloyDB Omni را نشان می‌دهد. شما چندین نمونه AlloyDB Omni را روی یک ماشین مجازی Compute Engine مستقر خواهید کرد و با استفاده از افزونه pglogical تکثیر بین آنها را تنظیم خواهید کرد.

اجرای چندین نمونه روی یک گره واحد برای توسعه، آزمایش یا شبیه‌سازی محیط‌های تکثیر مفید است. در پایان این آزمایشگاه کد، شما یک تنظیمات تکثیر کارآمد خواهید داشت که در آن یک نمونه به عنوان ارائه‌دهنده و دیگری به عنوان مشترک عمل می‌کند.

پیش‌نیازها

  • دسترسی به یک پروژه Google Cloud و Cloud Shell از کنسول Google Cloud.
  • نصب و پیکربندی کیت توسعه نرم‌افزار گوگل کلود ( gcloud )

آنچه یاد خواهید گرفت

  • نحوه ایجاد و آماده‌سازی یک ماشین مجازی Compute Engine برای چندین نمونه AlloyDB Omni با استفاده از gcloud .
  • نحوه نصب RPM های AlloyDB Omni.
  • نحوه پیکربندی و مقداردهی اولیه چندین نمونه AlloyDB Omni با استفاده از قالب‌های systemd .
  • نحوه پیکربندی تکثیر منطقی بین نمونه‌های AlloyDB Omni با استفاده از pglogical .
  • نحوه تأیید تکثیر با تکثیر داده‌ها از ارائه‌دهنده به مشترک.

آنچه نیاز دارید

  • یک لینک URL به RPM های AlloyDB Omni دریافت کنید . لینک‌ها به ایمیل شما ارسال می‌شوند، از جمله لینکی به سرور URL مخزن. متغیر محیطی زیر را مقداردهی اولیه کنید تا URL در طول آزمایش کد آماده استفاده باشد.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • یک ترمینال فعال با دسترسی به گوگل کلود. برای این منظور می‌توانید از کلود شل استفاده کنید.

۲. تنظیمات و الزامات

راه‌اندازی پروژه

ایجاد یک پروژه گوگل کلود

  1. در کنسول گوگل کلود ، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید .
  2. مطمئن شوید که صورتحساب برای پروژه ابری شما فعال است. یاد بگیرید که چگونه بررسی کنید که آیا صورتحساب در یک پروژه فعال است یا خیر .

شروع پوسته ابری

اگرچه می‌توانید گوگل کلود را از راه دور از طریق لپ‌تاپ خود مدیریت کنید، اما در این آزمایشگاه کد از پوسته گوگل کلود ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده می‌کنید.

آیکون برای فعال کردن Cloud Shell

  1. کنسول گوگل کلود را باز کنید و روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید. همچنین می‌توانید Cloud Shell را به یکی از روش‌های زیر باز کنید:

معمولاً Cloud Shell برای آماده‌سازی و اتصال به محیط چند لحظه طول می‌کشد. وقتی این عملیات تکمیل شد، خروجی مشابه زیر را مشاهده خواهید کرد:

ترمینال Google Cloud Shell که نشان می‌دهد محیط متصل شده است

۳. ماشین مجازی موتور محاسباتی را ایجاد کنید

در این بخش، با استفاده از ابزار خط فرمان gcloud ، یک ماشین مجازی (VM) از نوع Compute Engine ایجاد کنید. از یک ایمیج Rocky Linux 9 استفاده کنید که کاملاً با RPM های AlloyDB Omni سازگار است.

  1. متغیرهای محیطی را برای شناسه پروژه، نام ماشین مجازی، منطقه و ناحیه خود تعریف کنید.
    export PROJECT="your-project-id"
    export INSTANCE_NAME="alloydb-omni-multi-vm"
    export ZONE="us-central1-c"
    export REGION="us-central1"
    
  2. با استفاده از حساب Google Cloud خود وارد سیستم شوید و پروژه پیش‌فرض را پیکربندی کنید.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. برای اجازه دادن به اتصالات SSH به ماشین مجازی خود با استفاده از پروکسی آگاه از هویت (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"
    
  4. از آنجا که ماشین مجازی بدون آدرس IP عمومی ایجاد می‌شود، یک روتر ابری و دروازه Cloud NAT را پیکربندی کنید تا به ماشین مجازی اجازه دسترسی به مخازن بسته‌های خارجی و دانلود نرم‌افزارهای مورد نیاز را بدهد.
    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
    
  5. تأیید کنید که شبکه ابر خصوصی مجازی (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
    
  6. نمونه ماشین مجازی Compute Engine را با مشخصات مورد نیاز (۱۶ پردازنده مجازی، ۲۰ گیگابایت دیسک پایدار متعادل، Rocky Linux 9) ایجاد کنید. برای امنیت بیشتر، از پرچم --no-address استفاده کنید تا مطمئن شوید که به ماشین مجازی آدرس IP عمومی اختصاص داده نشده است.
    gcloud 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
    
  7. پس از ایجاد ماشین مجازی، وضعیت ماشین مجازی را بررسی کنید.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

۴. ماشین مجازی را آماده کنید

در این بخش، شما به ماشین مجازی تازه ایجاد شده خود متصل می‌شوید و محیط سیستم عامل را آماده می‌کنید.

  1. با استفاده از IAP از طریق SSH به ماشین مجازی متصل شوید. از آنجا که ماشین مجازی آدرس IP عمومی ندارد، gcloud به طور خودکار اتصال SSH را از طریق IAP تونل می‌کند.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. یک متغیر محیطی برای دایرکتوری داده پایه تعریف کنید.
    export BASE_PGDATA="/var/lib/alloydbomni"
    
  3. دایرکتوری داده پایه را ایجاد کنید.
    sudo mkdir -p $BASE_PGDATA
    
  4. بسته policycoreutils-python-utils را نصب کنید تا بتوانید سیاست SELinux را پیکربندی کنید.
    sudo dnf install -y policycoreutils-python-utils
    

۵. نصب AlloyDB Omni

با آماده شدن ماشین مجازی، اکنون می‌توانید مخزن بسته‌ها را پیکربندی کرده و بسته AlloyDB Omni RPM را نصب کنید.

  1. با ایجاد فایل پیکربندی مخزن، مخزن YUM را در ماشین مجازی خود پیکربندی کنید. به جای $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
    
  2. حافظه نهان YUM را به‌روزرسانی کنید.
    sudo yum makecache
    
  3. نسخه ۱۸ از بسته AlloyDB Omni RPM را نصب کنید.
    sudo dnf install -y alloydbomni18
    

۶. پیکربندی چندین نمونه

در این بخش، دو نمونه را پیکربندی کنید: inst1 و inst2 .

  1. برای پشتیبانی از چندین نمونه، فایل سرویس قالب systemd نام alloydbomni18@.service را ایجاد کنید.
    sudo 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
    
  2. پیکربندی systemd manager را مجدداً بارگذاری کنید تا سرویس قالب جدید را شناسایی کند.
    sudo systemctl daemon-reload
    
  3. دایرکتوری پیکربندی را برای نمونه‌های AlloyDB Omni ایجاد کنید.
    sudo mkdir -p /etc/alloydbomni
    
  4. دایرکتوری داده را برای inst1 پیکربندی کنید.
    sudo tee /etc/alloydbomni/inst1.conf << EOF
    PGDATA=/var/lib/alloydbomni/inst1
    EOF
    
  5. دایرکتوری داده را برای inst2 پیکربندی کنید.
    sudo tee /etc/alloydbomni/inst2.conf << EOF
    PGDATA=/var/lib/alloydbomni/inst2
    EOF
    
  6. مجوزهای مناسب را روی فایل‌های پیکربندی تنظیم کنید.
    sudo chmod 640 /etc/alloydbomni/*.conf
    sudo chown postgres:postgres /etc/alloydbomni/*.conf
    
  7. دایرکتوری‌های داده را برای هر دو نمونه ایجاد کنید و مالکیت صحیح را تنظیم کنید.
    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
    
  8. اختیاری: برای هر نمونه محدودیت منابع تعیین کنید. این کار از مصرف تمام منابع ماشین مجازی توسط یک نمونه جلوگیری می‌کند. برای هر دو نمونه، دایرکتوری‌ها و فایل‌های override systemd ایجاد کنید. توجه: محدودیت‌های منابع استفاده شده در پیکربندی‌های زیر (40٪) مقادیر نمونه هستند. محدودیت‌ها را بر اساس حجم کار خاص و ظرفیت ماشین مجازی خود تنظیم کنید. 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%
    EOF
    
    برای inst2 :
    sudo 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
    

۷. مقداردهی اولیه و آماده‌سازی پایگاه‌های داده

هر نمونه پایگاه داده را جداگانه مقداردهی اولیه و آماده کنید.

  1. برای تنظیمات، SELinux را در حالت permissive پیکربندی کنید.
    sudo setenforce 0
    
    احتیاط: تنظیم SELinux روی حالت مجاز، اجرای قوانین را غیرفعال می‌کند و باید با احتیاط استفاده شود. در این آزمایشگاه کد برای ساده‌سازی نصب استفاده می‌شود. در محیط عملیاتی، سیاست‌های مناسب SELinux را برای AlloyDB Omni پیکربندی کنید تا در حالت اجباری اجرا شود. می‌توانید پس از راه‌اندازی، با اجرای sudo setenforce 1 ، اجرای قوانین را دوباره فعال کنید.
  2. یک رمز عبور قوی برای کاربر مدیر postgres تعریف کنید. این رمز عبور برای هر دو نمونه در این آزمایشگاه کد استفاده می‌شود.
    export PGPASSWORD="YourStrongPassword123!"
    
    توجه: ارسال رمز عبور با استفاده از متغیرهای محیطی در خط فرمان (مثلاً PGPASSWORD=$PGPASSWORD ) در اینجا برای سادگی در آزمایشگاه کد استفاده شده است، اما می‌تواند رمز عبور را در فهرست فرآیندها افشا کند. در محیط عملیاتی، از روش‌های امن‌تری مانند فایل .pgpass یا یک مدیر مخفی استفاده کنید.

راه‌اندازی inst1

  1. دایرکتوری پایگاه داده را برای inst1 مقداردهی اولیه کنید.
    sudo PGPASSWORD=$PGPASSWORD \
      PGDATA=/var/lib/alloydbomni/inst1 \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  2. با به‌روزرسانی فایل postgresql.conf ، نمونه را طوری پیکربندی کنید که به پورت 5433 گوش دهد.
    sudo sed -i \
      "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5433/" \
      /var/lib/alloydbomni/inst1/postgresql.conf
    
  3. نمونه پایگاه داده را برای AlloyDB Omni آماده کنید.
    sudo PGPASSWORD=$PGPASSWORD \
      PGDATA=/var/lib/alloydbomni/inst1 \
      PGPORT=5433 \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    

راه‌اندازی inst2

  1. دایرکتوری پایگاه داده را برای inst2 مقداردهی اولیه کنید.
    sudo PGPASSWORD=$PGPASSWORD \
      PGDATA=/var/lib/alloydbomni/inst2 \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  2. نمونه را طوری پیکربندی کنید که روی پورت 5434 گوش دهد.
    sudo sed -i \
      "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5434/" \
      /var/lib/alloydbomni/inst2/postgresql.conf
    
  3. نمونه پایگاه داده را آماده کنید.
    sudo PGPASSWORD=$PGPASSWORD \
      PGDATA=/var/lib/alloydbomni/inst2 \
      PGPORT=5434 \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    

۸. سرویس‌های AlloyDB Omni را شروع کنید

اکنون می‌توانید سرویس‌های systemd را برای هر دو مورد شروع کنید.

  1. برای شناسایی پیکربندی و لغوهای جدید، پیکربندی systemd manager را مجدداً بارگذاری کنید.
    sudo systemctl daemon-reload
    
  2. سرویس را برای inst1 فعال و شروع کنید.
    sudo systemctl enable alloydbomni18@inst1
    sudo systemctl start alloydbomni18@inst1
    
  3. سرویس را برای inst2 فعال و شروع کنید.
    sudo systemctl enable alloydbomni18@inst2
    sudo systemctl start alloydbomni18@inst2
    
  4. تأیید کنید که هر دو سرویس فعال و در حال اجرا هستند.
    sudo systemctl status alloydbomni18@inst1
    sudo systemctl status alloydbomni18@inst2
    
    تأیید کنید که خروجی هر دو Active: active (running) را نشان می‌دهد.

۹. بررسی نمونه‌های Omni در AlloyDB

تأیید کنید که هر دو نمونه به درستی کار می‌کنند و مستقل هستند.

  1. به inst1 (پورت ۵۴۳۳) متصل شوید. از شما رمز عبوری که در قسمت Initialize and prepare databases پیکربندی کرده‌اید، درخواست می‌شود.
    /usr/lib/postgresql/18/bin/psql -h localhost -p 5433 -U postgres -W
    
  2. برای تأیید اتصال، یک پرس و جو اجرا کنید.
    postgres=# SELECT version();
    
  3. از نمونه جدا شوید.
    postgres=# \q
    
  4. به inst2 (پورت ۵۴۳۴) متصل شوید.
    /usr/lib/postgresql/18/bin/psql -h localhost -p 5434 -U postgres -W
    
  5. برای تأیید اتصال، یک پرس و جو اجرا کنید.
    postgres=# SELECT version();
    
  6. از نمونه جدا شوید.
    postgres=# \q
    

۱۰. پیکربندی برای تکثیر pglogical

با استفاده از افزونه pglogical تکثیر منطقی بین دو نمونه را پیکربندی کنید. در این سناریو، inst1 به عنوان ارائه دهنده و inst2 به عنوان مشترک عمل می‌کند.

نکته: این کدلب از کاربر ارشد postgres برای اتصالات تکثیر استفاده می‌کند. در یک محیط عملیاتی، یک کاربر تکثیر اختصاصی با امتیازات REPLICATION ایجاد کنید و به آن فقط دسترسی به جداول در حال تکثیر را بدهید.

پیکربندی نمونه‌ها برای pglogical

  1. 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
    
  2. تنظیماتی را که برای 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
    
  3. برای اعمال تغییرات پیکربندی، هر دو مورد را مجدداً راه‌اندازی کنید.
    sudo systemctl restart alloydbomni18@inst1
    sudo systemctl restart alloydbomni18@inst2
    

تنظیم نقش‌ها و جداول تکثیر

  1. در inst1 (ارائه‌دهنده، پورت ۵۴۳۳)، یک نقش تکثیر و جدولی که قرار است تکثیر شود، ایجاد کنید.
    /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;
    "
    
  2. در inst2 (مشترک، پورت ۵۴۳۴)، همان نقش و ساختار جدول را ایجاد کنید.
    /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 و اشتراک

  1. گره ارائه دهنده 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');
    "
    
  2. گره مشترک 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!'
      );
    "
    
    توجه: پس از ایجاد اشتراک، ممکن است همگام‌سازی اولیه کمی طول بکشد.

۱۱. تأیید تکثیر pglogical

با وارد کردن داده‌ها در ارائه‌دهنده و پرس‌وجو کردن آن در مشترک، تأیید کنید که تکثیر مطابق انتظار کار می‌کند.

  1. تأیید کنید که اشتراک فعال است. ممکن است انتقال به 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';
      "
    
  2. قبل از ادامه، تأیید کنید که خروجی، replicating نشان می‌دهد.
  3. یک ردیف آزمایشی روی ارائه دهنده ( 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!');
    "
    
  4. برای تأیید اینکه داده‌ها تکثیر شده‌اند، جدول را در inst2 جستجو کنید.
    /usr/lib/postgresql/18/bin/psql -h localhost -p 5434 \
      -U postgres -d postgres -c "SELECT * FROM replication_test;"
    
    تأیید کنید که می‌توانید ردیف درج‌شده در inst1 را ببینید.

۱۲. پاکسازی

منابع را پاکسازی کنید. ابتدا نمونه‌های AlloyDB Omni را در ماشین مجازی از بین ببرید و سپس منابع Google Cloud را حذف کنید.

نابود کردن نمونه‌های Omni از AlloyDB

قبل از حذف ماشین مجازی، می‌توانید نمونه‌های AlloyDB Omni را با متوقف کردن و غیرفعال کردن سرویس‌ها و حذف پیکربندی و داده‌های آنها، پاک کنید.

  1. سرویس مربوط به 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
    
  2. سرویس مربوط به 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
    
  3. پیکربندی systemd manager را مجدداً بارگذاری کنید و واحدهای از کار افتاده را بازنشانی کنید.
    sudo systemctl daemon-reload
    sudo systemctl reset-failed
    

منابع ابری گوگل را پاکسازی کنید

پس از پاکسازی موارد، ماشین مجازی Compute Engine و سایر منابع را حذف کنید.

  1. از جلسه SSH جدا شوید.
    exit
    
  2. نمونه ماشین مجازی Compute Engine را حذف کنید.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. قانون فایروال را حذف کنید.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. 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
    
  5. مسیر پیش‌فرض اینترنت را حذف کنید.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

۱۳. تبریک

شما با موفقیت چندین نمونه AlloyDB Omni را روی یک ماشین مجازی Compute Engine مستقر و پیکربندی کرده‌اید.

آنچه ما پوشش داده‌ایم

  • نحوه آماده‌سازی و تجهیز یک ماشین مجازی Compute Engine.
  • نحوه نصب RPM های AlloyDB Omni.
  • نحوه پیکربندی قالب‌های systemd برای چندین نمونه.
  • نحوه مقداردهی اولیه، پیکربندی و شروع چندین سرویس مستقل روی پورت‌های مختلف.
  • چگونه استقلال هر نمونه را تأیید کنیم.

بیشتر بدانید

  • برای اطلاعات بیشتر در مورد نصب و پیکربندی، به مستندات AlloyDB Omni مراجعه کنید.
  • برای جزئیات بیشتر در مورد افزونه‌ی تکثیر مورد استفاده در این آزمایشگاه کد، به مستندات pglogical مراجعه کنید.