التهيئة/إنشاء وضع الاستعداد

استخدم الإجراء createestandby لإعداد بيئة أساسية/احتياطية في البداية. يجب تنفيذ الخطوات التالية كمستخدم جذر:

يمكن أن يتسبب إجراء createestandby في حدوث انقطاع قصير في نظام SKOOR بسبب إعادة تشغيل قاعدة البيانات (تغيير التكوين التلقائي المحتمل). سيعمل بشكل كامل ويمكن الوصول إليه بعد ذلك.

انتبه لما يلي:

  • تحتاج قواعد البيانات التي يبلغ حجمها 100 جيجابايت أو أكبر عادةً إلى ملفات WAL أكثر من الحجم الافتراضي البالغ 2048. يجب زيادة المعلمة wal_keep_size قبل تهيئة النسخ المتماثل:

    vi /var/lib/pgsql/data/postgresql.skoor.conf

    قم بتغيير المعلمة (يمكن أن تكون القيمة أكبر من 4096، ضع في اعتبارك المساحة الخالية على القرص):

    wal_keep_size = 4096
  • سيقوم البرنامج النصي بمزامنة جداول قاعدة البيانات من الأساسي إلى الاحتياطي. تحقق من حجم قاعدة البيانات بالكامل باستخدام:

    du -sh /var/lib/pgsql

    من المحتمل جدًا أن يكون هناك عدة غيغابايت من البيانات لنقلها. في هذه الحالة، من الأفضل أن تتم تهيئة النسخ المتماثل في المساء.

  • لا تؤدي إعادة التهيئة إلى نسخ جميع الملفات. إذا كانت التهيئة قد تمت بالفعل مرة واحدة باستخدام createstandby، ولكن يجب تكرارها لسبب ما تعطل النسخ المتماثل، فسيتم نقل بيانات أقل بكثير من الأساسي إلى الاحتياطي.

  • ومع ذلك، يجب مقارنة كل ملف من ملفات قاعدة البيانات بالمجموع الاختباري على كلا الجانبين حتى تتمكن آليات النسخ المتماثل من تحديد الملفات التي يجب نقلها. المزامنة التي تعتمد فقط على أحجام ملفات قاعدة البيانات وأوقات تعديلها ليست موثوقة بما فيه الكفاية. ولذلك، قبل بدء المزامنة الفعلية، يجب أن تتم المزامنة الاختبارية لقاعدة البيانات بأكملها على كلا الجانبين، الأمر الذي قد يستغرق عدة ساعات، اعتماداً على أداء المضيف وحجم قاعدة البيانات.

  • من الجيد إكمال نسخة احتياطية كاملة على النظام النشط الحالي قبل بدء التهيئة. يمكن القيام بذلك باستخدام الأمر:

    cd /var/lib/pgsql
    sudo -u postgres bash -l -c '/opt/eranger/bin/eranger-server-backup.sh full'

    والذي سيحفظ نسخة احتياطية كاملة إلى /opt/eranger/server/backups/.

لبدء التهيئة، يجب إصدار الأمر createestandby على النظام الأساسي. نظرًا لأن هذا الأمر يمكن أن يعمل لعدة ساعات، اعتمادًا على كمية البيانات التي يجب نقلها وعرض النطاق الترددي للشبكة بين الأساسي والاستعداد، فمن المستحسن تشغيل الأمر ضمن جلسة شاشة. يسمح أمر الشاشة بتشغيل الأمر عن بعد دون إنهاء الأمر إذا تم قطع الاتصال بالمضيف البعيد لسبب ما. قم بإصدار جلسة عمل شاشة جديدة (مع مخزن مؤقت كبير بما فيه الكفاية لإعادة تمرير السجل) على الأساسي كجذر باستخدام الأمر التالي:

screen -h 10000

ثم ضمن جلسة عمل الشاشة هذه، قم بتشغيل الأمر التالي لبدء عملية التهيئة الاحتياطية:

/opt/eranger/bin/eranger-server-replication.pl createstandby

فيما يلي مثال على إخراج الأمر أعلاه:

192.168.56.221 prepare standby system 192.168.56.222 (primary system 192.168.56.221)..
192.168.56.221
192.168.56.221
192.168.56.221 ============================================================
192.168.56.221 == Setting up standby system on 192.168.56.222
192.168.56.221 == THIS WILL DESTROY DATABASE on 192.168.56.222
192.168.56.221 == make sure you have a backup
192.168.56.221 ============================================================
192.168.56.221
192.168.56.221 if you continue, we will call above command with ssh
press ENTER to continue, Ctrl-C to abort >

اضغط على Enter للمتابعة. سيظهر الإخراج التالي:

192.168.56.221 checking ssh for user reranger
192.168.56.222 stopped skoor syncfs
Removed symlink /etc/systemd/system/multi-user.target.wants/eranger-server.service.
Removed symlink /etc/systemd/system/multi-user.target.wants/eranger-report.service.
192.168.56.221 restart postgresql-13.service..
192.168.56.221 SKOOR Engine start httpd at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 httpd already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-report at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 eranger-report already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-server at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 eranger-server already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-ethd at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 start eranger-ethd (service eranger-ethd )..
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-eth-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 start eranger-eth-alerter (service eranger-eth-alerter )..
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-collector at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 eranger-collector already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-agent at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 eranger-agent already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-ic-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 start eranger-ic-alerter (service eranger-ic-alerter )..
192.168.56.221 done
192.168.56.221 copied file to /var/lib/pgsql/13/data/
192.168.56.221 copied file to /var/lib/pgsql/data/ng_tblspc/
192.168.56.221 rsync done
NOTICE:  all required WAL segments have been archived
192.168.56.222 stopped skoor syncfs
192.168.56.222 Enable and start eranger-replication-tunnel.service at /opt/eranger/bin/eranger-server-replication.pl line 1751.
192.168.56.221 started skoor syncfs

يمكن أيضًا تشغيل الأمر createestandby في الوضع غير التفاعلي باستخدام المعلمة -f. سيكون الإخراج أقصر في هذه الحالة:

يرجى الانتباه إلى أن هذا الأمر يجعل هذا النظام إلى الخادم الأساسي ويدمر قاعدة البيانات على العقدة الأخرى على الفور

# eranger-server-replication.pl -f createstandby
192.168.56.221 prepare standby system 192.168.56.222 (primary system 192.168.56.221)..
192.168.56.221
192.168.56.221 checking ssh for user reranger
192.168.56.222 stopped skoor syncfs
192.168.56.221 restart postgresql-13.service..
192.168.56.221 SKOOR Engine start httpd at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 httpd already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-report at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 eranger-report already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-server at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 eranger-server already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-ethd at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 start eranger-ethd (service eranger-ethd )..
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-eth-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 start eranger-eth-alerter (service eranger-eth-alerter )..
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-collector at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 eranger-collector already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-agent at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 eranger-agent already running (not starting)
192.168.56.221 done
192.168.56.221 SKOOR Engine start eranger-ic-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1818.
192.168.56.221 start eranger-ic-alerter (service eranger-ic-alerter )..
192.168.56.221 done
192.168.56.221 copied file to /var/lib/pgsql/13/data/
192.168.56.221 copied file to /var/lib/pgsql/data/ng_tblspc/
192.168.56.221 rsync done
NOTICE:  all required WAL segments have been archived
192.168.56.222 stopped skoor syncfs
192.168.56.222 Enable and start eranger-replication-tunnel.service at /opt/eranger/bin/eranger-server-replication.pl line 1751.
192.168.56.221 started skoor syncfs

يمكن ترك جلسة الشاشة في أي وقت بالضغط أولاً على "Ctrl-a" ثم "d". لإعادة الدخول إلى جلسة الشاشة، أدخل أمر إعادة الربط التالي:

screen -h 10000 -r

يقوم البرنامج النصي بما يلي:

  • مقارنة المجموع الاختباري لكل ملف قاعدة بيانات بين الأساسي والاستعداد.

  • إيقاف خدمة خادم eranger-server على الجهاز الاحتياطي إذا كان قيد التشغيل

  • يتم إنشاء الملفين /var/lib/pgsql/data/recovery.signal و skoor-replication.conf (الذي يتضمنه postgresql.skoor.conf) على الوضع الاحتياطي. هذه تسمح للجهة الاحتياطية بمعرفة عنوان IP الخاص بالأساسي، ومنفذ النسخ المتماثل، وبيانات الاعتماد، والمسار إلى ملف المشغل. يعرض ما يلي مثالاً لملف skoor-replication.con على الوضع الاحتياطي:

    primary_conninfo = 'host=10.1.0.88 port=5432 user=replication password=replication'
    promote_trigger_file = '/tmp/postgresql.trigger.5432'

    لا يوجد ملف_مشغل_الترويج_المشغل إذا كان النسخ المتماثل قيد التشغيل. يؤدي إنشاؤه إلى إنهاء النسخ المتماثل (أي في حالة التبديل/الفشل).
    Recovery.signal هو مجرد ملف علامة وبالتالي فهو فارغ.

  • يتم نقل أجزاء قاعدة البيانات التي تختلف بين المضيفين باستخدام عملية rsync عبر ssh. يتم استبعاد المسارات التالية من عملية المزامنة:

    • /var/lib/lib/pgsqql/data/pg_xlog/ (لا تتم مزامنة السجلات الثنائية، أي ملفات WAL أثناء عملية الإنشاء والاستعداد، ولا يتم نسخ محتواها إلا بعد بدء عملية الإنشاء والاستعداد)

    • /var/lib/lib/pgsql/data/recovery.signal

    • /var/lib/lib/pgsql/data/skoor-replication.conf

    • /var/lib/lib/pgsql/data/postmaster.pid

  • يتم بدء النسخ المتماثل

أثناء عملية إنشاء النسخ الاحتياطي، يمكن استخدام الأساسي بشكل طبيعي لقبول بيانات القياس من المجمّعين. يمكن أيضًا استخدام واجهة الويب SKOOR، ومع ذلك، قد يتدهور الأداء بسبب حسابات المجموع الاختباري ونقل الملفات الكبيرة عبر الشبكة.
يعتمد الوقت المستغرق لتهيئة النسخ المتماثل لأول مرة بشكل أساسي على حجم قاعدة البيانات وسرعة الشبكة وأداء المضيف.

كل تعليق حول ما يقوم به البرنامج النصي مسبوق بعنوان IP للمضيف الذي تتم معالجة المهمة عليه.

بعد انتهاء تشغيل الأمر، تحقق من رمز الخروج الخاص به. يجب أن يكون صفرًا:

...
10.1.0.88 done
10.1.0.88 copied file to /var/lib/pgsql/data/
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
# echo $?
0

يتم الآن بدء النسخ المتماثل ومن الآن فصاعدًا يتم نسخ جميع استعلامات قاعدة البيانات التي يتم تنفيذها على الأساسي إلى المضيف الاحتياطي على الفور.