النسخ المتماثل المنطقي وفك التشفير المنطقي في قاعدة بيانات Azure ل PostgreSQL - خادم مرن
قاعدة بيانات Azure ل PostgreSQL - يدعم الخادم المرن منهجيات استخراج البيانات المنطقية والنسخ المتماثل التالية:
- النسخ المتماثل المنطقي
- استخدام النسخ المتماثل المنطقي الأصلي PostgreSQL لنسخ كائنات البيانات المتماثلة. يسمح النسخ المتماثل المنطقي بالتحكم الدقيق في النسخ المتماثل للبيانات، بما في ذلك النسخ المتماثل للبيانات على مستوى الجدول.
- استخدام الامتداد المنطقي الذي يوفر النسخ المتماثل للتدفق المنطقي والمزيد من القدرات مثل نسخ المخطط الأولي لقاعدة البيانات ، ودعم TRUNCATE ، والقدرة على نسخ DDL وما إلى ذلك.
- فك التشفير المنطقي الذي يتم تنفيذه عن طريق فك تشفير محتوى سجل الكتابة المسبقة (WAL).
مقارنة النسخ المتماثل المنطقي وفك التشفير المنطقي
النسخ المتماثل المنطقي وفك التشفير المنطقي لهما العديد من أوجه التشابه. كلاهما:
- السماح لك بنسخ البيانات من Postgres.
- استخدم سجل الكتابة المسبقة (WAL) كمصدر للتغييرات.
- استخدم فتحات النسخ المتماثل المنطقية لإرسال البيانات. تمثل الفتحة دفقا من التغييرات.
- استخدم خاصية REPLICA IDENTITY الخاصة بالجدول لتحديد التغييرات التي يمكن إرسالها.
- لا تقم بتكرار تغييرات DDL.
تختلف التقنيتان: التكرار المنطقي:
- يسمح لك بتحديد جدول أو مجموعة من الجداول المراد نسخها المتماثلة.
- نسخ البيانات بين مثيلات PostgreSQL.
فك التشفير المنطقي:
- استخراج التغييرات عبر كافة الجداول في قاعدة بيانات.
- لا يمكن إرسال البيانات مباشرة بين مثيلات PostgreSQL.
ملاحظة
كما هو الحال في الوقت الحالي، لا يدعم الخادم المرن النسخ المتماثلة للقراءة عبر المناطق. استنادا إلى نوع عبء العمل، يمكنك اختيار استخدام ميزة النسخ المتماثل المنطقي لغرض التعافي من الكوارث (DR) عبر المناطق.
المتطلبات المسبقة للتكرار المنطقي وفك التشفير المنطقي
- انتقل إلى صفحة معلمات الخادم على البوابة الإلكترونية.
- اضبط معلمة
wal_levelالخادم علىlogical. - إذا كنت تريد استخدام ملحق pglogical ، فابحث عن المعلمات والمعلمات
azure.extensions، وحددpglogicalمن المربعshared_preload_librariesالمنسدل. - تحديث
max_worker_processesقيمة المعلمة إلى 16 على الأقل. خلاف ذلك ، قد تواجه مشكلات مثلWARNING: out of background worker slots. - احفظ التغييرات وأعد تشغيل الخادم لتطبيق
wal_levelالتغيير. - تأكد من أن مثيل PostgreSQL يسمح بحركة مرور الشبكة من مورد الاتصال.
- امنح المسؤول أذونات النسخ المتماثل للمستخدم.
ALTER ROLE <adminname> WITH REPLICATION; - قد ترغب في التأكد من أن الدور الذي تستخدمه له امتيازات على المخطط الذي تقوم بنسخه. خلاف ذلك ، قد تواجه أخطاء مثل
Permission denied for schema.
استخدام النسخ المتماثل المنطقي وفك التشفير المنطقي
النسخ المتماثل المنطقي الأصلي
يستخدم النسخ المتماثل المنطقي مصطلحي "الناشر" و "المشترك".
- الناشر هو قاعدة بيانات PostgreSQL التي ترسل البيانات منها.
- المشترك هو قاعدة بيانات PostgreSQL التي ترسل البيانات إليها.
فيما يلي بعض نماذج التعليمات البرمجية التي يمكنك استخدامها لتجربة النسخ المتماثل المنطقي.
الاتصال إلى قاعدة بيانات الناشر. إنشاء جدول وإضافة بعض البيانات.
CREATE TABLE basic(id SERIAL, name varchar(40)); INSERT INTO basic(name) VALUES ('apple'); INSERT INTO basic(name) VALUES ('banana');إنشاء منشور للجدول.
CREATE PUBLICATION pub FOR TABLE basic;الاتصال إلى قاعدة بيانات المشتركين. أنشئ جدولا بنفس المخطط الموجود على الناشر.
CREATE TABLE basic(id SERIAL, name varchar(40));أنشئ اشتراكا يتصل بالمنشور الذي أنشأته سابقا.
CREATE SUBSCRIPTION sub CONNECTION 'host=<server>.postgres.database.azure.com user=<admin> dbname=<dbname> password=<password>' PUBLICATION pub;يمكنك الآن الاستعلام عن الجدول على المشترك. سترى أنه تلقى بيانات من الناشر.
SELECT * FROM basic;يمكنك إضافة المزيد من الصفوف إلى جدول الناشر وعرض التغييرات على المشترك.
إذا لم تتمكن من رؤية البيانات، فقم بتمكين امتياز تسجيل الدخول وتحقق
azure_pg_adminمن محتوى الجدول.ALTER ROLE azure_pg_admin login;
قم بزيارة وثائق PostgreSQL لفهم المزيد حول النسخ المتماثل المنطقي.
الامتداد البجلوجي
فيما يلي مثال على تكوين pglogical في خادم قاعدة بيانات الموفر والمشترك. ارجع إلى وثائق الامتداد pglogical لمزيد من التفاصيل. تأكد أيضا من تنفيذ المهام المطلوبة مسبقا المذكورة أعلاه.
تثبيت ملحق pglogical في قاعدة البيانات في كل من موفر وخوادم قاعدة بيانات المشترك.
\C myDB CREATE EXTENSION pglogical;إذا كان مستخدم النسخ المتماثل غير مستخدم إدارة الخادم (الذي أنشأ الخادم)، فتأكد من تعيين
azure_pg_adminامتيازات للمستخدمreplication. بدلا من ذلك، يمكنك منح المستخدم المسؤول لمستخدم النسخ المتماثل. راجع الوثائق المنطقية للحصول على التفاصيل.GRANT azure_pg_admin, replication to myUser;أو
GRANT myAdminUser to myUser;في خادم قاعدة بيانات الموفر (المصدر/الناشر)، قم بإنشاء عقدة الموفر .
select pglogical.create_node( node_name := 'provider1', dsn := ' host=myProviderServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password=myPassword');إنشاء مجموعة نسخ متماثل.
select pglogical.create_replication_set('myreplicationset');إضافة كافة الجداول في قاعدة البيانات إلى مجموعة النسخ المتماثل.
SELECT pglogical.replication_set_add_all_tables('myreplicationset', '{public}'::text[]);كطريقة بديلة، يمكنك أيضا إضافة جداول من مخطط معين (على سبيل المثال، testUser) إلى مجموعة نسخ متماثل افتراضية.
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['testUser']);في خادم قاعدة بيانات المشتركين ، قم بإنشاء عقدة مشترك.
select pglogical.create_node( node_name := 'subscriber1', dsn := ' host=mySubscriberServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password=myPasword' );إنشاء اشتراك لبدء المزامنة وعملية النسخ المتماثل.
select pglogical.create_subscription ( subscription_name := 'subscription1', replication_sets := array['myreplicationset'], provider_dsn := 'host=myProviderServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password=myPassword');يمكنك بعد ذلك التحقق من حالة الاشتراك.
SELECT subscription_name, status FROM pglogical.show_subscription_status();
فك التشفير المنطقي
يمكن استهلاك فك التشفير المنطقي عبر بروتوكول البث أو واجهة SQL.
بروتوكول البث
غالبا ما يكون استهلاك التغييرات باستخدام بروتوكول البث هو الأفضل. يمكنك إنشاء المستهلك / الموصل الخاص بك ، أو استخدام خدمة تابعة لجهة خارجية مثل Debezium.
قم بزيارة وثائق wal2json للحصول على مثال باستخدام بروتوكول البث مع pg_recvlogical.
واجهة SQL
في المثال أدناه ، نستخدم واجهة SQL مع المكون الإضافي wal2json.
إنشاء فتحة.
SELECT * FROM pg_create_logical_replication_slot('test_slot', 'wal2json');إصدار أوامر SQL. على سبيل المثال:
CREATE TABLE a_table ( id varchar(40) NOT NULL, item varchar(40), PRIMARY KEY (id) ); INSERT INTO a_table (id, item) VALUES ('id1', 'item1'); DELETE FROM a_table WHERE id='id1';تستهلك التغييرات.
SELECT data FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'pretty-print', '1');سيبدو الإخراج كما يلي:
{ "change": [ ] } { "change": [ { "kind": "insert", "schema": "public", "table": "a_table", "columnnames": ["id", "item"], "columntypes": ["character varying(40)", "character varying(40)"], "columnvalues": ["id1", "item1"] } ] } { "change": [ { "kind": "delete", "schema": "public", "table": "a_table", "oldkeys": { "keynames": ["id"], "keytypes": ["character varying(40)"], "keyvalues": ["id1"] } } ] }قم بإسقاط الفتحة بمجرد الانتهاء من استخدامها.
SELECT pg_drop_replication_slot('test_slot');
قم بزيارة وثائق PostgreSQL لفهم المزيد حول فك التشفير المنطقي.
المراقبة
يجب مراقبة فك التشفير المنطقي. يجب إسقاط أي فتحة نسخ متماثل غير مستخدمة. تحتفظ الفتحات بسجلات Postgres WAL وكتالوجات النظام ذات الصلة حتى تتم قراءة التغييرات. إذا فشل المشترك أو المستهلك أو لم يتم تكوينه بشكل صحيح ، فسوف تتراكم السجلات غير المستهلكة وتملأ مساحة التخزين الخاصة بك. أيضا ، تزيد السجلات غير المستهلكة من خطر التفاف معرف المعاملة. يمكن أن تتسبب كلتا الحالتين في عدم توفر الخادم. لذلك ، من الأهمية بمكان أن يتم استهلاك فتحات النسخ المتماثل المنطقي بشكل مستمر. إذا لم تعد فتحة النسخ المتماثل المنطقي مستخدمة، فقم بإسقاطها على الفور.
سيشير العمود "نشط" في طريقة عرض pg_replication_slots إلى ما إذا كان هناك مستهلك متصل بفتحة.
SELECT * FROM pg_replication_slots;
قم بتعيين تنبيهات على مقاييس الخادم المرنة "الحد الأقصى للمعاملات المستخدمة " و "التخزين المستخدم " لإعلامك عند زيادة القيم عن الحدود العادية.
التقييدات
- تنطبق قيود النسخ المتماثل المنطقي كما هو موثق هنا.
- قراءة النسخ المتماثلة - قاعدة بيانات Azure ل PostgreSQL قراءة النسخ المتماثلة غير مدعومة حاليا مع خوادم مرنة.
- الفتحات وتجاوز فشل HA - لا تتوفر فتحات النسخ المتماثل المنطقي على الخادم الأساسي على خادم الاستعداد في منطقة توافر الخدمات الثانوية. ينطبق هذا الموقف عليك إذا كان الخادم الخاص بك يستخدم خيار التوافر العالي المتكرر للمنطقة. في حالة تجاوز الفشل إلى خادم الاستعداد، لن تتوفر فتحات النسخ المتماثل المنطقي في وضع الاستعداد.
الخطوات التالية
- تعرف على المزيد حول خيارات الشبكات
- تعرف على الإضافات المتوفرة في الخادم المرن
- تعرف على المزيد حول التوافر العالي