پشتیبان‌گیری و بازیابی AlloyDB Omni RPM در فضای ذخیره‌سازی سازگار با S3 با استفاده از pgBackRest

۱. مقدمه

این آزمایشگاه کد، نحوه پیکربندی pgBackRest را برای پشتیبان‌گیری و بازیابی یک پیاده‌سازی AlloyDB Omni RPM با استفاده از ذخیره‌سازی شیء سازگار با S3 نشان می‌دهد.

توجه: در این آزمایشگاه کد، شما یک فایل باینری مستقل MinIO را روی ماشین مجازی مستقر می‌کنید تا به عنوان یک نقطه پایانی ذخیره‌سازی محلی و سبک سازگار با S3 برای اهداف آموزشی و آزمایشی عمل کند. برای بارهای کاری عملیاتی، همیشه از یک راهکار ذخیره‌سازی سازگار با S3 یا ذخیره‌سازی شیء ابری پشتیبانی‌شده و فعال استفاده کنید.

پیش‌نیازها

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

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

  • نحوه راه‌اندازی یک ماشین مجازی Compute Engine برای AlloyDB Omni RPM.
  • نحوه راه‌اندازی یک سرور ذخیره‌سازی شیء محلی سازگار با S3 روی ماشین مجازی.
  • نحوه پیکربندی pgBackRest برای استفاده از فضای ذخیره‌سازی شیء سازگار با S3 به عنوان مخزن پشتیبان.
  • نحوه انجام، فهرست کردن و تأیید پشتیبان‌گیری‌ها.
  • نحوه بازیابی اطلاعات از نسخه پشتیبان.

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

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

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

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

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

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

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

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

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

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

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

ترمینال Google Cloud Shell که نشان می‌دهد محیط متصل شده است {: عرض="624"}

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

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

  1. متغیرهای محیطی را برای شناسه پروژه، نام ماشین مجازی، نوع ماشین، منطقه و ناحیه خود تعریف کنید.
    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"
    
  2. با استفاده از حساب کاربری گوگل کلود خود وارد سیستم شوید و پروژه پیش‌فرض را پیکربندی کنید.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. یک قانون فایروال ایجاد کنید تا اتصالات 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"
    
  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=$MACHINE_TYPE \
        --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
    

۴. تنظیم فضای ذخیره‌سازی سازگار با S3

در این بخش، به ماشین مجازی خود متصل می‌شوید، محیط را آماده می‌کنید و یک سرور ذخیره‌سازی شیء محلی سازگار با S3 ( minio ) را به همراه یک کلاینت S3 ( mc ) برای میزبانی از باکت پشتیبان خود راه‌اندازی می‌کنید.

  1. با استفاده از پروکسی آگاه از هویت (IAP) از طریق SSH به ماشین مجازی متصل شوید. از آنجایی که ماشین مجازی آدرس IP عمومی ندارد، gcloud به طور خودکار اتصال SSH را از طریق IAP تونل می‌کند.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. بسته policycoreutils-python-utils را نصب کنید تا در صورت نیاز، بتوان سیاست SELinux را بعداً پیکربندی کرد.
    sudo dnf install -y policycoreutils-python-utils
    
  3. فایل باینری سرور سازگار با 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/
    
  4. یک دایرکتوری داده برای سرور ذخیره‌سازی شیء ایجاد کنید.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. سرور سازگار با S3 را در پس‌زمینه با اعتبارنامه‌های نمونه شروع کنید. توجه داشته باشید که کلید مخفی باید حداقل ۸ کاراکتر داشته باشد.
    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 &
    
  6. تأیید کنید که سرور سازگار با S3 در حال اجرا است.
    ps aux | grep minio
    
  7. برای مدیریت باکت‌ها، کلاینت 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/
    
  8. نام مستعار کلاینت S3 ( s3repo ) را پیکربندی کنید و یک باکت به نام alloydb-backups ایجاد کنید.
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

۵. نصب AlloyDB Omni

در این بخش، AlloyDB Omni را نصب و پیکربندی می‌کنید.

  1. متغیرهای محیطی را در ماشین مجازی برای دایرکتوری داده‌ها، آدرس اینترنتی مخزن AlloyDB Omni خود و یک رمز عبور قوی برای کاربر مدیر postgres تعریف کنید. آدرس اینترنتی را با آدرسی که از فرم ثبت نام دریافت کرده‌اید، جایگزین کنید.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    توجه: ارسال رمز عبور با استفاده از متغیرهای محیطی در خط فرمان (مثلاً PGPASSWORD=$PGPASSWORD ) در اینجا برای سادگی در آزمایشگاه کد استفاده شده است، اما می‌تواند رمز عبور را در فهرست فرآیندها افشا کند. در محیط عملیاتی، از روش‌های امن‌تری مانند فایل .pgpass یا یک مدیر مخفی استفاده کنید.
  2. دایرکتوری داده را ایجاد کنید که AlloyDB Omni فایل‌های پایگاه داده خود را در آن ذخیره کند.
    sudo mkdir -p $PGDATA
    
  3. با ایجاد فایل پیکربندی مخزن، مخزن 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
    
  4. حافظه نهان YUM را به‌روزرسانی کنید.
    sudo yum makecache
    
  5. نسخه ۱۸ از بسته AlloyDB Omni RPM را نصب کنید.
    sudo dnf install -y alloydbomni18
    
  6. نمونه پایگاه داده AlloyDB Omni را مقداردهی اولیه کنید.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. طبق رویه‌های استاندارد codelab، حالت اجرای SELinux را موقتاً غیرفعال کنید تا راه‌اندازی آسان‌تر شود.
    sudo setenforce 0
    
  8. نمونه پایگاه داده AlloyDB Omni را آماده کنید.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. سرویس systemd AlloyDB Omni را فعال و اجرا کنید.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. تأیید کنید که سرویس AlloyDB Omni فعال و با موفقیت اجرا می‌شود.
    sudo systemctl status alloydbomni18
    

۶. پیکربندی pgBackRest

در این بخش، شما pgBackRest را از مخزن AlloyDB Omni Common نصب می‌کنید، /etc/pgbackrest/pgbackrest.conf را پیکربندی می‌کنید تا از مخزن ذخیره‌سازی شیء سازگار با S3 شما به عنوان مخزن پشتیبان استفاده کند، و بایگانی WAL را در AlloyDB Omni فعال می‌کنید.

  1. یک متغیر محیطی در ماشین مجازی برای آدرس اینترنتی مخزن AlloyDB Omni Common خود تعریف کنید. آدرس اینترنتی را با آدرسی که از فرم ثبت نام دریافت کرده‌اید، جایگزین کنید.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. مخزن 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
    
  3. دایرکتوری‌های spool و log را برای 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
    
  4. فایل /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
    
  5. قطعه کد pgBackRest را با نام کاربری postgres مقداردهی اولیه کنید.
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    تأیید کنید که stanza-create command end: completed successfully در خروجی نمایش داده شود.
  6. پارامترهای بایگانی AlloyDB Omni را با استفاده از psql پیکربندی کنید.
    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;"
    
  7. برای اعمال تغییرات بایگانی، سرویس AlloyDB Omni را مجدداً راه‌اندازی کنید.
    sudo systemctl restart alloydbomni18
    
  8. صحت و اتصال پیکربندی pgBackRest را بررسی کنید.
    sudo -u postgres pgbackrest --stanza=omni check
    
    تأیید کنید که check command end: completed successfully در خروجی نشان داده شده است.

۷. پشتیبان‌گیری کنید

در این بخش، شما از pgBackRest برای انجام یک پشتیبان‌گیری کامل و یک پشتیبان‌گیری تفاضلی از پایگاه داده AlloyDB Omni خود در فضای ذخیره‌سازی شیء سازگار با S3 استفاده می‌کنید.

  1. با استفاده از pgbackrest یک نسخه پشتیبان کامل ایجاد کنید.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. با استفاده از pgbackrest یک پشتیبان‌گیری تفاضلی را فعال کنید.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    توجه: سایر انواع پشتیبان‌گیری پشتیبانی‌شده شامل incr (افزایشی) است.

۸. فهرست کردن و تأیید پشتیبان‌ها

در این بخش، پشتیبان‌ها را فهرست می‌کنید و تأیید می‌کنید که با موفقیت انجام شده‌اند.

  1. با استفاده از دستور pgbackrest info نسخه‌های پشتیبان را فهرست کنید.
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    تأیید کنید که خروجی status: ok به همراه اطلاعات پشتیبان برای هر دستور پشتیبان‌گیری که اجرا کرده‌اید، نشان می‌دهد:
    • پشتیبان گیری کامل: full backup: F (برای مثال، 20260908-093545F )
    • پشتیبان‌گیری متفاوت: diff backup: F_ D (برای مثال، 20260908-093545F_20260908-094016D )
  2. فایل‌های پشتیبان ذخیره‌شده در سطل را با استفاده از کلاینت S3 ( mc ) تأیید کنید.
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    شما باید در خروجی backup ، archive و stanza.info را ببینید.

۹. بازیابی اطلاعات از نسخه پشتیبان

در این بخش، سرویس پایگاه داده AlloyDB Omni را متوقف کرده و داده‌ها را از یک نسخه پشتیبان خاص با استفاده از pgbackrest بازیابی می‌کنید.

احتیاط: بازیابی، پایگاه داده شما را متوقف کرده و تمام داده‌های پایگاه داده شما را بازنویسی می‌کند.

  1. یک متغیر محیطی برای شناسه پشتیبان‌گیری که می‌خواهید از آن بازیابی انجام شود، تعریف کنید. مقدار را با شناسه پشتیبان‌گیری که در خروجی pgbackrest info شما نشان داده شده است، جایگزین کنید .
    export BACKUPID="20260908-093545F"
    
  2. سرویس AlloyDB Omni را متوقف کنید و تأیید کنید که غیرفعال است.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    تأیید کنید که خروجی Active: inactive نشان می‌دهد.
  3. pgbackrest restore با گزینه --delta اجرا کنید تا پایگاه داده از نسخه پشتیبان انتخاب شده بازیابی شود.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    تأیید کنید که restore command end: completed successfully در خروجی نشان داده شده است.
  4. سرویس AlloyDB Omni را شروع کنید و تأیید کنید که فعال و در حال اجرا است.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    تأیید کنید که خروجی Active: active (running) را نشان می‌دهد.

۱۰. پاکسازی و بررسی

پس از اتمام کدنویسی، می‌توانید منابع Google Cloud را پاک‌سازی کنید تا از هزینه‌های ناخواسته جلوگیری شود.

  1. برای بازگشت به ترمینال محلی Cloud Shell خود، از جلسه SSH خود در ماشین مجازی جدا شوید.
    exit
    
  2. نمونه ماشین مجازی Compute Engine را حذف کنید.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. قانون فایروال ایجاد شده برای دسترسی SSH را حذف کنید.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. دروازه Cloud NAT و روتر Cloud را حذف کنید.
    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
    

۱۱. تبریک

تبریک بابت تکمیل آزمایشگاه کد! شما با موفقیت pgBackRest را برای پشتیبان‌گیری و بازیابی یک پیاده‌سازی AlloyDB Omni RPM با استفاده از ذخیره‌سازی شیء سازگار با S3 پیکربندی کردید.

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

  • نحوه راه‌اندازی یک ماشین مجازی Compute Engine برای AlloyDB Omni RPM.
  • نحوه تنظیم یک سطل ذخیره‌سازی شیء سازگار با S3.
  • نحوه پیکربندی pgBackRest با یک مخزن سازگار با S3.
  • نحوه انجام، فهرست‌بندی و تأیید پشتیبان‌گیری کامل و تفاضلی.
  • نحوه بازیابی اطلاعات از نسخه پشتیبان با استفاده از pgBackRest.

برای اطلاعات بیشتر، به نمای کلی AlloyDB Omni مراجعه کنید.

۱۲. نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط آن را بخوانید آن را بخوانید و تمرین‌ها را انجام دهید