النسخ المتماثل المستمر من القديم إلى الجديد PostgreSQL مع Slony


النسخ المتماثل الأصلي للبث في PostgreSQL يعمل فقط بين الخوادم التي لها نفس الإصدار الرئيسي. تحدثنا عن النسخ المتماثل المنطقي في منشور سابق . لقد رأينا كيف يساعد النسخ المتماثل المنطقي في نقل البيانات من إصدار PostgreSQL إلى آخر. لكن النسخ المتماثل المنطقي مناسب فقط للإصدارات المدعومة من PostgreSQL ، على سبيل المثال ، PostgreSQL 9.4 و PostgreSQL 11. ماذا تفعل بالإصدارات السابقة إلى 9.4؟ استخدم Slony-I .


استخدم النسخ المتماثل مع Slony-I لنقل البيانات من قواعد البيانات القديمة إلى أحدث إصدار من PostgreSQL. ما هو Slony وكيف يعمل؟


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


Slony


Slony هو تطبيق النسخ المتماثل المنطقي على مستوى التطبيق لـ PostgreSQL. أو بالأحرى ، إنها أداة نسخ متماثل لجهة خارجية تتطلب تثبيتًا وتكوينًا منفصلين. كانت Slony موجودة منذ وقت طويل. يدعم أحدث إصدار برنامج PostgreSQL من 8.4 إلى 11.


الغرض الرئيسي من النسخ المتماثل هو نقل التغييرات من خادم قاعدة بيانات واحد إلى آخر. لفهم البنية بشكل أفضل ، دعونا نلقي نظرة على المصطلحات: Slon ، والأحداث ، و slonik.


بالمناسبة ، سلوني ، إذا لم تكن قد خمنت ، فهذه "أفيال". ولهم حقا ذاكرة كبيرة. ليس من قبيل الصدفة أن يتفاخر فيل صارم ولكنه لطيف على شعار PostgreSQL.


SLON


Slon هو البرنامج الخفي الذي يعمل على كل عقدة PostgreSQL في النسخ المتماثل Slony-I. يتم استخدام هذه الشياطين لمعالجة أحداث التكوين والنسخ المتماثل لكل خادم PostgreSQL. يُطلق على كل خادم PostgreSQL اسم المضيف. جميع العقد معا تشكل كتلة سلوني.


عقدة الناشر هي مصدر التغييرات ، وتتلقى عقدة المشترك وتطبق التغييرات من الناشر.


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


أحداث


يتم الإبلاغ عن التغييرات من الناشر كأحداث. عندما تتم معالجة حدث بواسطة البرنامج الخفي Slon على المضيف البعيد ، يتم إنشاء إقرار. وتخطر الأحداث العقد بتغييرات التكوين ، مثل إضافة أو إزالة عقد جديدة أو اشتراكات جديدة أو تغييرات DDL.


كل حدث له معرفه الفريد الخاص بالمصدر والرقم التسلسلي ومعرف المعاملة للقطعة على عقدة الحدث والعديد من الوسائط وختم الوقت مع منطقة زمنية.
مشغلات مكتوبة إلى PL / pgSQL تسجيل جميع التغييرات على الجداول المنسوخة. لسوء الحظ ، لا توجد طريقة موثوقة للتعامل مع التغييرات على النقاط ، أو DDL ، أو التغييرات على المستخدمين والأدوار.


slonik


هذه أداة مساعدة لسطر الأوامر مع محلل ومترجم يقبل النصوص النصية slonik - لغة تعريفية بسيطة. وهي مصممة للتغلب على القيود المفروضة على اللغة الإجرائية. بمساعدة أوامر slonik ، يمكنك تكوين أو تعديل النسخ المتماثل في Slony ، ويمكن تضمينها في البرامج النصية shell. يقبل الأوامر من الإدخال القياسي أو من الملفات. يوضح المثال أدناه كيف يتم تمرير البرنامج النصي slonik إلى slonik ومضمّن في البرامج النصية shell.


يبدو النص البرمجي الذي ينشئ التكوين الأولي لنظام بسيط للرقيق في قاعدة بيانات pgbench لدينا كما يلي:


#!/bin/sh slonik <<_EOF_ cluster name = percona_pg; node 1 admin conninfo = 'dbname=pg93 host=pg93_host user=percona_pg93_user'; node 2 admin conninfo = 'dbname=pg11 host=pg11_host user=percona_pg11_user'; #-- # Creates a _$(clustername), this example, _percona_pg schema #-- init cluster ( id=1, comment = 'Legacy PG Node'); #-- # Add a list of tables being replicated to a set. #-- create set (id=1, origin=1, comment='pgbench'); set add table (set id=1, origin=1, id=1, fully qualified name = 'public.pgbench_accounts', comment='accounts'); set add table (set id=1, origin=1, id=2, fully qualified name = 'public.pgbench_branches', comment='branches'); set add table (set id=1, origin=1, id=3, fully qualified name = 'public.pgbench_tellers', comment='tellers'); set add table (set id=1, origin=1, id=4, fully qualified name = 'public.pgbench_history', comment='history'); #-- # Create the second node (the slave) tell the 2 nodes how to connect to # each other and how they should listen for events. #-- store node (id=2, comment = 'Target node', event node=1); store path (server = 1, client = 2, conninfo='dbname=pg93 host=pg93_host user=percona_pg93_user'); store path (server = 2, client = 1, conninfo='dbname=pg11 host=pg11_host user=percona_pg11_user'); _EOF_ 

لماذا تعتبر Slony مناسبة للهجرات؟


على الرغم من مزايا النسخ المتماثل المنطقي الداخلي ، بالنسبة للإصدارات السابقة لـ PostgreSQL 9.4 ، يجب عليك استخدام حل الجهة الخارجية هذا. يعتمد النهج القائم على المشغل على واجهة برمجة تطبيقات قاعدة البيانات - يجب أن يكون كلا الإصدارين متوافقين لاستخدام بناء الجملة PL / pgSQL و SQL.


كيفية تكييف قاعدة البيانات للاستخدام مع سلوني؟


  • يجب أن تحتوي الجداول على مفاتيح أساسية. أضف حقلًا تسلسليًا إلى جميع الجداول بدون مفتاح أساسي.
  • لا يتم نسخ التغييرات إلى blob OID. إذا كان لديك أعمدة ذات قيم قصيرة ، فقم بتحويلها إلى BYTEA. إذا كانت الكائنات كبيرة جدًا - على سبيل المثال ، صور - فمن الأفضل تخزين البيانات في وحدة تخزين خارجية (على سبيل المثال ، S3 في سحابة Amazon). إذا كان تغيير التطبيق معقدًا للغاية ، فقم بتطبيق التغييرات النقطية في الخطوة الأخيرة من الترحيل.
  • تغيير الجدول وغيرها من عمليات DDL. لا يكشف Slony عن تغييرات بنية الجدول. استخدم الأمر slonik EXECUTE SCRIPT لتطبيق ملف SQL مع سلاسل SQL أو DDL على نظام النسخ المتماثل بأكمله.

الترحيل عبر الإنترنت من الإصدارات السابقة من PostgreSQL


  1. إنشاء مستخدم النسخ متماثل مع امتيازات الخارق. يمكنك تكوين الحقوق بالتفصيل ، لكنها أكثر تعقيدًا.
  2. إنشاء قاعدة بيانات في الوجهة مع وصول TCP / IP.
  3. انسخ تعريفات الجدول من السيد إلى العبيد.
  4. تثبيت Slony-I. على الخوادم ذات الإصدار القديم من نظام التشغيل ، سيكون من الأسهل تثبيت Slony-I من الكود المصدري.
  5. تحديد الكتلة ، مجموعة من الجداول ، ومعلومات اتصال العقدة كقائمة أوامر slonik.
  6. قم بتشغيل البرنامج الخفي slon على كل خادم PostgreSQL. تحقق من الإخراج القياسي أو ملفات السجل لمعرفة أخطاء الاتصال.
  7. قم بتشغيل أوامر الاشتراك slonik لبدء المزامنة.
  8. اختبر طلبات القراءة فقط في الإصدار الجديد من Postgres.
  9. عندما يتم نسخ جميع البيانات وتزامنها ، قم بإيقاف التطبيقات وتوجيهها إلى خادم Postgres الجديد.
  10. استخدم عقدة إلغاء التثبيت في الإصدار الجديد من PostgreSQL لإزالة كافة آثار النسخ المتماثل Slony.

الانتقال إلى الإصدارات السابقة


استخدم نفس الإجراء للترقية إلى الإصدارات السابقة. باستخدام Slony ، يمكنك النسخ المتماثل من أي إصدار وإلى أي إصدار من PosgreSQL يدعمه الإصدار Slony. الحد الأدنى للإصدار المدعوم هو 8.4.


النتائج


لقد رأينا بشكل عام كيف يمكنك الترقية إلى الإصدار الجديد بأقل وقت توقف عن العمل باستخدام Slony. اكتشف المزيد في ندوة الويب لدينا.

Source: https://habr.com/ru/post/ar458334/


All Articles