it-swarm.asia

أتمتة الفشل في PostgreSQL 9.1

كيف يقوم إعداد واحد بخادمين متطابقين للفشل التلقائي في PostgreSQL 9.1.

OS

Centos 5
PostgreSQL 9.1 جمعت من المصدر
حساب مستخدم postgres موجود على كلا الجهازين ولديه مفتاح ssh بدون كلمة مرور للاتصال بكلا الجهازين.

إعداداتي الحالية:

تكوين الخادم الرئيسي =

postgresql.conf:

listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16    
wal_keep_segments = 8 
archive_mode = on    
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'  

pg_hba.conf:

 Host  replication   all   10.0.66.1/32      trust
 Host  replication   all   10.0.66.2/32      trust

خادم الاستعداد

يتطابق postgresql.conf و pg_hba.conf مع ما تم تكوينه على الخادم الرئيسي.

الاسترداد:

 standby_mode = 'on'
 primary_conninfo = 'Host=10.0.66.1'
 trigger_file = '/opt/pgsql91/data/trigger.txt'

بفضل hzRoot ، أفهم الآن كيفية تبديل الخادم من وضع الاستعداد إلى إتقان.

باستخدام الأوامر التالية ، يمكنني مزامنة الرقيق الجديد مع السيد الجديد ومن ثم الحصول على النسخ الاحتياطي والتشغيل.

على السيد الجديد (10.0.66.2)

  1. سو - postgres
  2. المس المشغل. txt في/opt/pgsql91/data /
  3. يصبح recovery.conf الاسترداد
  4. psql -c "؛ SELECT pg_start_backup ('backup'، true)"؛
  5. rsync -a -v -e ssh/opt/pgsql91/data/10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
  6. psql -c "؛ SELECT pg_stop_backup ()" ؛

على العبد الجديد (10.0.66.1)

  1. إنشاء Recovery.conf: cp recovery.done to recovery.conf
  2. vi recovery.conf تغيير عنوان IP: primary_conninfo = 'Host = 10.0.66.2'
  3. بدء postgresql

لذا أسئلتي الآن:

  1. هل هذه هي الطريقة الصحيحة لتبديل الأدوار؟
  2. هل قام أي شخص بأتمتة هذه العملية ، إذا كان الأمر كذلك فماذا فعلت؟
  3. إذا تم تمكين النسخ المتزامن ، فقد لاحظت أن الخادم الرئيسي الجديد لن يقوم بأي معاملات لأنه في انتظار استجابة التابع. لا يوجد عبد ولكن لأن الخادم الآخر ، السيد القديم معطلة. هل هذا صحيح أم أحتاج إلى تعطيل النسخ المتزامن مؤقتًا عندما يكون الرقيق الجديد لأسفل؟
18
Craig Efrein

راجع repmrg :

repmgr عبارة عن مجموعة من الأدوات مفتوحة المصدر التي تساعد DBAs ومسؤولي النظام على إدارة مجموعة من قواعد بيانات PostgreSQL ..

من خلال الاستفادة من قدرة Hot Standby المقدمة في PostgreSQL 9 ، يبسط repmgr بشكل كبير عملية إعداد وإدارة قاعدة البيانات مع متطلبات التوفر وقابلية التوسع العالية.

يبسط repmgr الإدارة والإدارة اليومية ، ويعزز الإنتاجية ويقلل من التكاليف الإجمالية لمجموعة PostgreSQL من خلال:

  • مراقبة عملية النسخ المتماثل ؛ السماح ل DBAs لإصدار عالية
  • عمليات التوافر مثل مفاتيح التبديل والفشل.

يفعل شيئين:

  1. repmgr: برنامج الأوامر الذي ينفذ المهام على نظام المجموعة الخاص بك ثم يخرج
  2. repmgrd: إدارة ومتابعة البرنامج الخفي الذي يراقب المجموعة ويمكنها أتمتة الإجراءات عن بُعد.

من أجل الفشل التلقائي ، يقوم repmgrd بالحيلة وليس SPOF في شبكتك ، مثل pgPool. ومع ذلك ، لا يزال من المهم مراقبة جميع الماسونات وإعادتها بعد الفشل.

الإصدار 2.0 على وشك الإصدار ، بما في ذلك RPM.

8
Frank Heikens

في ملف recovery.conf ، يجب عليك إضافة سطر يخبر postgres إلى تجاوز الفشل من المعلم إلى التابع. يجب أن تضيف

trigger_file = '/any/file/to/trigger'

عند إنشاء هذا الملف على مسار معين. ستتغير العقد. (لا يحتوي الملف على أي شيء فهو مجرد مشغل)

يمكنك العثور على معلومات إضافية عن دفق النسخ المتماثل

من ناحية أخرى ، قد يكون من الممكن جعله يتم إنشاؤه تلقائيًا ببعض الحيل ولكن استخدام أدوات المراقبة وإخفاق الفشل اليدوي سيكون أفضل ..

4
sftsz

هل فكر أحد في استخدام pgpool II لهذا؟

http://pgpool.projects.postgresql.org/contrib_docs/simple_sr_setting/index.html

أقوم بإعداد النسخ المتماثل لـ PostgreSQL. يبدو أن الجزء الصعب يحدث عندما يعود السيد القديم.

من ما قرأته ، يبدو أن pagpool يمكنه أتمتة معظم ذلك. ومع ذلك ، لست متأكدًا مما إذا كانت تستفيد من ميزات النسخ المتماثل الموجودة بالفعل في PostgreSQL 9.1.

0
Paulo SantAnna