1. مقدمة
يوضّح هذا الدرس التطبيقي حول الترميز كيفية ضبط pgBackRest لإنشاء نسخة احتياطية من عملية نشر AlloyDB Omni RPM واستعادتها باستخدام خدمة تخزين الكائنات المتوافقة مع S3.
ملاحظة: في هذا الدرس التطبيقي حول الترميز، ستنشر ملفًا ثنائيًا مستقلاً من MinIO على الجهاز الظاهري ليعمل كنقطة نهاية تخزين محلية وخفيفة الوزن ومتوافقة مع S3 لأغراض تعليمية واختبارية. بالنسبة إلى أحمال العمل في مرحلة الإنتاج، استخدِم دائمًا حل تخزين متوافقًا مع S3 أو تخزينًا سحابيًا للكائنات، ويجب أن يكونا متوافقَين ويتم صيانتهما بشكل نشط.
المتطلبات الأساسية
- الوصول إلى مشروع Google Cloud وCloud Shell من Cloud Console
- تم تثبيت Google Cloud SDK (
gcloud) وإعداده.
ما ستتعلمه
- كيفية إعداد جهاز Compute Engine الافتراضي لحزمة AlloyDB Omni RPM
- كيفية إعداد خادم تخزين كائنات محلي متوافق مع S3 على الجهاز الافتراضي
- كيفية ضبط pgBackRest لاستخدام وحدة تخزين كائنات متوافقة مع S3 كمستودع للنسخ الاحتياطية
- كيفية إجراء النُسخ الاحتياطية وإدراجها والتحقّق منها
- كيفية استعادة البيانات من نسخة احتياطية
المتطلبات
- الحصول على رابط عنوان URL لحِزم AlloyDB Omni RPM يتم إرسال الروابط إلى بريدك الإلكتروني الذي يتضمّن خادم عنوان URL للمستودع. اضبط قيمة متغير البيئة التالي لإبقاء عنوان URL جاهزًا للاستخدام أثناء درس تطبيقي حول الترميز.
export ALLOYDB_OMNI_REPOSITORY_URL="..." - جهاز طرفي يعمل مع إمكانية الوصول إلى Google Cloud يمكنك استخدام Cloud Shell لهذا الغرض.
2. الإعداد والمتطلبات
إعداد المشروع
إنشاء مشروع على Google Cloud
- في وحدة تحكّم Google Cloud، في صفحة اختيار المشروع، اختَر مشروع Google Cloud أو أنشِئه.
- تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. كيفية التحقّق من تفعيل الفوترة في مشروع
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

- افتح وحدة تحكّم Google Cloud وانقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة.يمكنك أيضًا فتح Cloud Shell بإحدى الطرق التالية:
- إذا كنت تستخدم وحدة تحكّم Google Cloud، اضغط على G ثم S.
- انقر على هذا الرابط.
يستغرق توفير البيئة والاتصال بها عادةً بضع لحظات. عند اكتمال هذه العملية، سيظهر لك ما يلي:
{: width="624"}
3- إنشاء جهاز Compute Engine الافتراضي
في هذا القسم، ستنشئ جهازًا افتراضيًا واحدًا على Compute Engine (GCE) باستخدام أداة سطر الأوامر gcloud. يمكنك استخدام صورة Rocky Linux 9 المتوافقة تمامًا مع حِزم AlloyDB Omni RPM.
- حدِّد متغيّرات البيئة لرقم تعريف مشروعك واسم الجهاز الافتراضي ونوع الجهاز والمنطقة والبلد.
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 بالجهاز الظاهري.
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 Router وCloud NAT gateway للسماح للجهاز الافتراضي بالوصول إلى مستودعات الحِزم الخارجية وتنزيل البرامج المطلوبة.
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 غيغابايت. لتعزيز الأمان، استخدِم العلامة
--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
4. إعداد وحدة تخزين متوافقة مع S3
في هذا القسم، سيتم الاتصال بجهازك الافتراضي وإعداد البيئة وإعداد خادم تخزين كائنات محلي متوافق مع S3 (minio) بالإضافة إلى برنامج S3 (mc) لاستضافة حزمة النسخ الاحتياطي.
- اتّصِل بالجهاز الافتراضي عبر بروتوكول SSH باستخدام خدمة Identity-Aware Proxy (IAP). بما أنّ الجهاز الافتراضي لا يتضمّن عنوان 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 client (
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
5- تثبيت AlloyDB Omni
في هذا القسم، يمكنك تثبيت AlloyDB Omni وضبط إعداداتها.
- حدِّد متغيّرات البيئة على الجهاز الافتراضي لدليل البيانات وعنوان URL لمستودع AlloyDB Omni وكلمة مرور قوية لمستخدم مشرف PostgreSQL
postgres. استبدِل عنوان URL بالعنوان الذي تلقّيته من نموذج الاشتراك. ملاحظة: يتم هنا تمرير كلمات المرور باستخدام متغيّرات البيئة في سطر الأوامر (مثل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 - ثبِّت الإصدار 18 من حزمة AlloyDB Omni RPM.
sudo dnf install -y alloydbomni18 - تهيئة مثيل قاعدة بيانات AlloyDB Omni
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - أوقِف وضع فرض SELinux مؤقتًا لتسهيل عملية الإعداد، وذلك وفقًا لممارسات الدرس التطبيقي حول الترميز المعتادة.
sudo setenforce 0 - جهِّز مثيل قاعدة بيانات AlloyDB Omni.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - فعِّل خدمة AlloyDB Omni
systemdوابدأ استخدامها.sudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 - تأكَّد من أنّ خدمة AlloyDB Omni نشطة وتعمل بنجاح.
sudo systemctl status alloydbomni18
6. إعداد pgBackRest
في هذا القسم، ستثبّت pgBackRest من مستودع AlloyDB Omni Common، وتضبط /etc/pgbackrest/pgbackrest.conf لاستخدام حزمة تخزين الكائنات المتوافقة مع S3 كمستودع احتياطي، وتفعّل أرشفة WAL في AlloyDB Omni.
- حدِّد متغيّر بيئة على الجهاز الظاهري لعنوان URL لمستودع AlloyDB Omni Common. استبدِل عنوان URL بالعنوان الذي تلقّيته من نموذج الاشتراك.
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 - أنشئ أدلة التخزين المؤقت والسجلّ لـ 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في الناتج.
7. إجراء عملية الاحتفاظ بنسخة احتياطية
في هذا القسم، ستستخدم pgBackRest لإجراء عملية احتياطية كاملة وعملية احتياطية تفاضلية لقاعدة بيانات AlloyDB Omni في خدمة تخزين الكائنات المتوافقة مع S3.
- ابدأ عملية نسخ احتياطي كامل باستخدام
pgbackrest.sudo -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)
- النسخة الاحتياطية الكاملة:
- تحقَّق من ملفات النسخ الاحتياطي المخزَّنة في الحزمة باستخدام برنامج S3 (
mc). من المفترض أن تظهر لكmc ls s3repo/alloydb-backups/pgbackrest/backupوarchiveوstanza.infoفي الناتج.
9. استعادة البيانات من نسخة احتياطية
في هذا القسم، ستوقف خدمة قاعدة بيانات 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).
10. التنظيف والاستطلاع
بعد الانتهاء من درس تطبيقي حول الترميز، يمكنك تنظيف موارد Google Cloud لتجنُّب تكبُّد رسوم غير مرغوب فيها.
- افصِل اتصالك بجلسة SSH على الجهاز الظاهري للعودة إلى وحدة Cloud Shell الطرفية المحلية.
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 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. تهانينا
تهانينا على إكمال الدرس العملي. لقد أعددت pgBackRest بنجاح لإجراء نسخ احتياطي لعملية نشر حزمة AlloyDB Omni RPM واستعادتها باستخدام خدمة تخزين الكائنات المتوافقة مع S3.
المواضيع التي تناولناها
- كيفية إعداد جهاز Compute Engine الافتراضي لحزمة AlloyDB Omni RPM
- كيفية إعداد حزمة تخزين بيانات متوافقة مع S3
- كيفية ضبط pgBackRest باستخدام مستودع متوافق مع S3
- كيفية إجراء النسخ الاحتياطية الكاملة والتفاضلية وإدراجها والتحقّق منها
- كيفية استعادة البيانات من نسخة احتياطية باستخدام pgBackRest
لمزيد من المعلومات، اطّلِع على نظرة عامة على AlloyDB Omni.