۱. مقدمه
این آزمایشگاه کد، نحوه پیکربندی 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="..." - یک ترمینال فعال با دسترسی به گوگل کلود. برای این منظور میتوانید از کلود شل استفاده کنید.
۲. تنظیمات و الزامات
راهاندازی پروژه
ایجاد یک پروژه ابری گوگل
- در کنسول گوگل کلود ، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید .
- مطمئن شوید که صورتحساب برای پروژه ابری شما فعال است. یاد بگیرید که چگونه بررسی کنید که آیا صورتحساب در یک پروژه فعال است یا خیر .
شروع پوسته ابری
اگرچه میتوانید گوگل کلود را از راه دور از طریق لپتاپ خود مدیریت کنید، اما در این آزمایشگاه کد از پوسته گوگل کلود ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده میکنید.

- کنسول گوگل کلود را باز کنید و روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید. همچنین میتوانید Cloud Shell را به یکی از روشهای زیر باز کنید:
- اگر از کنسول گوگل کلود استفاده میکنید، ابتدا G و سپس S را فشار دهید.
- روی این لینک کلیک کنید .
معمولاً چند لحظه طول میکشد تا آمادهسازی و به محیط متصل شوید. وقتی این عملیات کامل شد، چیزی شبیه به تصویر زیر خواهید دید:
{: عرض="624"}
۳. ماشین مجازی موتور محاسباتی را ایجاد کنید
در این بخش، شما با استفاده از ابزار خط فرمان gcloud ، یک ماشین مجازی (VM) واحد Compute Engine (GCE) ایجاد میکنید. شما از یک ایمیج Rocky Linux 9 استفاده میکنید که کاملاً با RPM های AlloyDB Omni سازگار است.
- متغیرهای محیطی را برای شناسه پروژه، نام ماشین مجازی، نوع ماشین، منطقه و ناحیه خود تعریف کنید.
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" - با استفاده از حساب کاربری گوگل کلود خود وارد سیستم شوید و پروژه پیشفرض را پیکربندی کنید.
gcloud auth login gcloud config set project $PROJECT - یک قانون فایروال ایجاد کنید تا اتصالات 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" - از آنجایی که ماشین مجازی بدون آدرس 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 - مطمئن شوید که شبکه 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 - نمونه ماشین مجازی 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 - پس از ایجاد ماشین مجازی، وضعیت ماشین مجازی را بررسی کنید.
gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
۴. تنظیم فضای ذخیرهسازی سازگار با S3
در این بخش، به ماشین مجازی خود متصل میشوید، محیط را آماده میکنید و یک سرور ذخیرهسازی شیء محلی سازگار با S3 ( minio ) را به همراه یک کلاینت S3 ( mc ) برای میزبانی از باکت پشتیبان خود راهاندازی میکنید.
- با استفاده از پروکسی آگاه از هویت (IAP) از طریق SSH به ماشین مجازی متصل شوید. از آنجایی که ماشین مجازی آدرس 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 را در پسزمینه با اعتبارنامههای نمونه شروع کنید. توجه داشته باشید که کلید مخفی باید حداقل ۸ کاراکتر داشته باشد.
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ایجاد کنید.mc alias set s3repo http://localhost:9000 s3admin s3password mc mb s3repo/alloydb-backups
۵. نصب AlloyDB Omni
در این بخش، AlloyDB Omni را نصب و پیکربندی میکنید.
- متغیرهای محیطی را در ماشین مجازی برای دایرکتوری دادهها، آدرس اینترنتی مخزن AlloyDB Omni خود و یک رمز عبور قوی برای کاربر مدیر
postgresتعریف کنید. آدرس اینترنتی را با آدرسی که از فرم ثبت نام دریافت کردهاید، جایگزین کنید. توجه: ارسال رمز عبور با استفاده از متغیرهای محیطی در خط فرمان (مثلاًexport PGDATA="/var/lib/alloydbomni" export ALLOYDB_OMNI_REPOSITORY_URL="..." export PGPASSWORD="YourStrongPassword123!"PGPASSWORD=$PGPASSWORD) در اینجا برای سادگی در آزمایشگاه کد استفاده شده است، اما میتواند رمز عبور را در فهرست فرآیندها افشا کند. در محیط عملیاتی، از روشهای امنتری مانند فایل.pgpassیا یک مدیر مخفی استفاده کنید. - دایرکتوری داده را ایجاد کنید که AlloyDB Omni فایلهای پایگاه داده خود را در آن ذخیره کند.
sudo mkdir -p $PGDATA - با ایجاد فایل پیکربندی مخزن، مخزن 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 را نصب کنید.
sudo dnf install -y alloydbomni18 - نمونه پایگاه داده AlloyDB Omni را مقداردهی اولیه کنید.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - طبق رویههای استاندارد codelab، حالت اجرای SELinux را موقتاً غیرفعال کنید تا راهاندازی آسانتر شود.
sudo setenforce 0 - نمونه پایگاه داده AlloyDB Omni را آماده کنید.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - سرویس
systemdAlloyDB Omni را فعال و اجرا کنید.sudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 - تأیید کنید که سرویس AlloyDB Omni فعال و با موفقیت اجرا میشود.
sudo systemctl status alloydbomni18
۶. پیکربندی pgBackRest
در این بخش، شما pgBackRest را از مخزن AlloyDB Omni Common نصب میکنید، /etc/pgbackrest/pgbackrest.conf را پیکربندی میکنید تا از مخزن ذخیرهسازی شیء سازگار با S3 شما به عنوان مخزن پشتیبان استفاده کند، و بایگانی WAL را در AlloyDB Omni فعال میکنید.
- یک متغیر محیطی در ماشین مجازی برای آدرس اینترنتی مخزن AlloyDB Omni Common خود تعریف کنید. آدرس اینترنتی را با آدرسی که از فرم ثبت نام دریافت کردهاید، جایگزین کنید.
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 - دایرکتوریهای 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 - فایل
/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 - قطعه کد pgBackRest را با نام کاربری
postgresمقداردهی اولیه کنید. تأیید کنید کهsudo -u postgres pgbackrest --stanza=omni stanza-createstanza-create command end: completed successfullyدر خروجی نمایش داده شود. - پارامترهای بایگانی 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;" - برای اعمال تغییرات بایگانی، سرویس AlloyDB Omni را مجدداً راهاندازی کنید.
sudo systemctl restart alloydbomni18 - صحت و اتصال پیکربندی pgBackRest را بررسی کنید.
تأیید کنید کهsudo -u postgres pgbackrest --stanza=omni checkcheck command end: completed successfullyدر خروجی نشان داده شده است.
۷. پشتیبانگیری کنید
در این بخش، شما از pgBackRest برای انجام یک پشتیبانگیری کامل و یک پشتیبانگیری تفاضلی از پایگاه داده AlloyDB Omni خود در فضای ذخیرهسازی شیء سازگار با S3 استفاده میکنید.
- با استفاده از
pgbackrestیک نسخه پشتیبان کامل ایجاد کنید.sudo -u postgres pgbackrest \ --stanza=omni \ --type=full backup - با استفاده از
pgbackrestیک پشتیبانگیری تفاضلی را فعال کنید. توجه: سایر انواع پشتیبانگیری پشتیبانیشده شاملsudo -u postgres pgbackrest \ --stanza=omni \ --type=diff backupincr(افزایشی) است.
۸. فهرست کردن و تأیید پشتیبانها
در این بخش، پشتیبانها را فهرست میکنید و تأیید میکنید که با موفقیت انجام شدهاند.
- با استفاده از دستور
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) تأیید کنید. شما باید در خروجیmc ls s3repo/alloydb-backups/pgbackrest/backup،archiveوstanza.infoرا ببینید.
۹. بازیابی اطلاعات از نسخه پشتیبان
در این بخش، سرویس پایگاه داده AlloyDB Omni را متوقف کرده و دادهها را از یک نسخه پشتیبان خاص با استفاده از pgbackrest بازیابی میکنید.
احتیاط: بازیابی، پایگاه داده شما را متوقف کرده و تمام دادههای پایگاه داده شما را بازنویسی میکند.
- یک متغیر محیطی برای شناسه پشتیبانگیری که میخواهید از آن بازیابی انجام شود، تعریف کنید. مقدار را با شناسه پشتیبانگیری که در خروجی
pgbackrest infoشما نشان داده شده است، جایگزین کنید .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)را نشان میدهد.
۱۰. پاکسازی و بررسی
پس از اتمام کدنویسی، میتوانید منابع Google Cloud را پاکسازی کنید تا از هزینههای ناخواسته جلوگیری شود.
- برای بازگشت به ترمینال محلی Cloud Shell خود، از جلسه SSH خود در ماشین مجازی جدا شوید.
exit - نمونه ماشین مجازی 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 را حذف کنید.
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
۱۱. تبریک
تبریک بابت تکمیل آزمایشگاه کد! شما با موفقیت pgBackRest را برای پشتیبانگیری و بازیابی یک پیادهسازی AlloyDB Omni RPM با استفاده از ذخیرهسازی شیء سازگار با S3 پیکربندی کردید.
آنچه ما پوشش دادهایم
- نحوه راهاندازی یک ماشین مجازی Compute Engine برای AlloyDB Omni RPM.
- نحوه تنظیم یک سطل ذخیرهسازی شیء سازگار با S3.
- نحوه پیکربندی pgBackRest با یک مخزن سازگار با S3.
- نحوه انجام، فهرستبندی و تأیید پشتیبانگیری کامل و تفاضلی.
- نحوه بازیابی اطلاعات از نسخه پشتیبان با استفاده از pgBackRest.
برای اطلاعات بیشتر، به نمای کلی AlloyDB Omni مراجعه کنید.