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

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

قد يتسبب الإجراء createstandby في انقطاع قصير لنظام 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/.

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

screen -h 10000

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

/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-17.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

يمكن أيضًا تشغيل الأمر createstandby في الوضع غير التفاعلي باستخدام المعلمة -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-17.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". لإعادة الدخول إلى جلسة الشاشة، أدخل الأمر re-attach التالي:

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'

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

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

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

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

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

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

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

 أثناء عملية createstandby، يمكن استخدام الخادم الأساسي بشكل طبيعي لقبول بيانات القياس من المجمعات. كما يمكن استخدام واجهة الويب 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

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