من فضلك تسجيل الدخول أو تسجيل لتفعل ذلك.
“text”>”auto”>”-1″ دير=”auto”> النسخ المتماثل Spock Multi-Master لـ PostgreSQL

“https://github.com/pgEdge/spock/actions/workflows/spockbench.yml”>”https://github.com/pgEdge/spock/actions/workflows/spockbench.yml/badge.svg” البديل=”Regression Tests and Spockbench”>

“-1” دير=”auto”> جدول المحتويات

“-1” دير=”auto”> النسخ المتماثل Spock Multi-Master لـ PostgreSQL – المتطلبات الأساسية والمتطلبات

يوفر ملحق Spock النسخ المتماثل متعدد الأقسام لإصدارات PostgreSQL 15 والإصدارات الأحدث. خذ المتطلبات التالية بعين الاعتبار عند تصميم مجموعتك:

  • سوف تحتاج إلى تثبيت Spock التمديد على كل عقدة في مجموعتك. إذا كنت تقوم بإجراء ترقية رئيسية للإصدار، فمن الممكن أن تقوم العقدة القديمة بتشغيل إصدار حديث من pgLogical2 قبل ترقيتها لتصبح عقدة Spock.

  • في كل عقدة في مجموعتك، يجب أن يكون للجداول نفس الاسم وأن تكون موجودة في نفس المخطط. للتحقق من اسم الجدول واسم المخطط لجدول موجود، يمكنك الاتصال بقاعدة البيانات باستخدام”https://www.postgresql.org/docs/17/app-psql.html” rel=”nofollow”> بسكل واستخدام d أمر التعريف:

SELECT schemaname, tablename FROM pg_tables ORDER BY schemaname, tablename;

على سبيل المثال:

lcdb=# d               List of relations Schema |      Name      |   Type   |  Owner--------+----------------+----------+---------- public | table_a        | table    | ec2-user public | table_a_id_seq | sequence | ec2-user public | table_b        | table    | ec2-user public | table_b_id_seq | sequence | ec2-user public | table_c        | table    | ec2-user public | table_c_id_seq | sequence | ec2-user(6 rows)
  • يجب أن يحتوي كل جدول أيضًا على نفس الأعمدة والمفاتيح الأساسية، مع نفس أنواع البيانات في كل عمود. لمراجعة المعلومات التفصيلية لجميع الجداول ضمن مخطط معين، اتصل بقاعدة البيانات باستخدام psql واستخدم الأمر d schema_name.* يأمر؛ على سبيل المثال:
lcb=# d عامة.*                                   طاولة "public.table_a"      العمود | اكتب | الترتيب | لاغية | تقصير------------+-------------------------------------------+--------------------------------------------------------------- معرف | bigint                   | | ليست فارغة | ولدت دائما مثل اسم الهوية | نص                     | | ليست فارغة | الكمية | عدد صحيح                  | | ليست فارغة | create_at | الطابع الزمني مع المنطقة الزمنية | | ليست فارغة | الآن () الفهارس:    "table_a_pkey" المفتاح الأساسي، btree (معرف) التسلسل "public.table_a_id_seq"    اكتب | ابدأ | الحد الأدنى | الحد الأقصى | زيادة | دورات؟ | مخبأ--------+-------+---------------------------------------------------------------------------------------- bigint |     1 |       1 | 9223372036854775807 |         1 | لا |     1تسلسل عمود الهوية: عام.table_aمؤشر .id "public.table_a_pkey"  العمود | اكتب | مفتاح؟ | تعريف--------+--------+------+------------ معرف | bigint | نعم | بطاقة تعريفالمفتاح الأساسي، بتري، للطاولة "public.table_a"...
  • CHECK القيود و NOT NULL يجب أن تكون القيود هي نفسها أو أكثر تساهلاً في أي عقدة احتياطية تعمل كمشترك فقط.

لمزيد من المعلومات حول الوظائف المتقدمة لامتداد Spock، تفضل بزيارة”http://github.com/pgEdge/spock/blob/main/docs/features.md”>هنا.

“-1” دير=”auto”> بناء ملحق سبوك

ستحتاج إلى إنشاء ملحق Spock على شجرة مصدر PostgreSQL مصححة والتي قمت بتطبيق إصدار خاص عليها .diff الملفات من spock/patches/Postgres-version دليل. الخطوات عالية المستوى لبناء Postgres وامتداد spock هي:

  1. احصل على”https://www.postgresql.org/docs/current/install-getsource.html” rel=”nofollow”> مصدر بوستجرس.

  2. انسخ ملفات التصحيح إلى المستودع الأساسي؛ التصحيحات الخاصة بكل إصدار من إصدارات Postgres موجودة في دليل فرعي خاص بالإصدار من”https://github.com/pgEdge/spock/tree/main/patches”> سبوك الريبو. ثم قم بتطبيق كل تصحيح، استخدم الأمر:

patch -p1

لاحظ أنه يجب عليك تطبيق التصحيحات بالترتيب الرقمي المحدد بواسطة بادئاتها في ملف spock المستودع (على سبيل المثال، pg16-015-patch-name، ثم pg16-020-patch-name، ثم pg16-025-patch-name).

  1. configure, make، و make install خادم Postgres كما هو موضح في ملف”https://www.postgresql.org/docs/current/install-make.html” rel=”nofollow”> وثائق PostgreSQL.

  2. عند اكتمال البناء، قم بإضافة موقع الخاص بك pg_config الملف الخاص بك PATH عامل:

export PATH=path_to_pg_config_file

  1. ثم، استنساخ pgedge/spock مستودع:

    git clone https://github.com/pgEdge/spock.git

  2. التالي، make وثم make install سبوك.

  3. ثم قم بتحديث Postgres الخاص بك postgresql.conf ملف، الإعداد:

    shared_preload_libraries='spock'track_commit_timestamp=on # needed for conflict resolution
  4. ثم اتصل بالخادم واستخدم CREATE EXTENSION أمر لإنشاء ملحق spock على كل عقدة في قاعدة البيانات التي ترغب في نسخها:

    CREATE EXTENSION spock;

“-1” دير=”auto”> بناء وثائق سبوك

تستخدم وثائق سبوك”https://www.mkdocs.org” rel=”nofollow”> مكدوكس مع”https://squidfunk.github.io/mkdocs-material/” rel=”nofollow”> موضوع المواد لإنشاء وثائق HTML ثابتة من ملفات Markdown في ملف docs دليل.

لإنشاء الوثائق وتشغيل خادم تطوير للمعاينة المباشرة:

  1. إنشاء بيئة بايثون الافتراضية:

    python3 -m venv spock-docs-venv
  2. تفعيل البيئة الافتراضية:

    source spock-docs-venv/bin/activate
  3. تثبيت MkDocs:

    pip install mkdocs mkdocs-material
  4. قم بتشغيل خادم MkDocs المحلي للاختبار:

    mkdocs serveINFO    -  Building documentation...INFO    -  Multirepo plugin importing docs...INFO    -  Cleaning site directoryINFO    -  Multirepo plugin is cleaning up temp_dir/INFO    -  Documentation built in 0.18 secondsINFO    -  [14:32:14] Watching paths for changes: 'docs', 'mkdocs.yml'INFO    -  [14:32:14] Serving on http://127.0.0.1:8000/

“-1” دير=”auto”> التكوين الأساسي والاستخدام

قبل تكوين مجموعة النسخ المتماثل، ستحتاج إلى تنفيذ الخطوات التالية على كل عقدة في المجموعة:

  • قم ببناء Postgres وSpock، وأنشئ امتداد Spock.
  • تهيئة قواعد بيانات متطابقة.
  • تعديل postgresql.conf ملف لدعم فك التشفير المنطقي والنسخ المتماثل التلقائي لـ DDL.
  • تعديل pg_hba.conf file وأي جدران حماية للتأكد من أن لديك اتصال بين العقد.

إعدادات التكوين

تعديل postgresql.conf الملف، مضيفا:

wal_level='logical'max_worker_processes=10   # one per database needed on provider node                            # one per node needed on subscriber nodemax_replication_slots=10  # one per node needed on provider nodemax_wal_senders=10        # one per node needed on provider nodeshared_preload_libraries='spock'track_commit_timestamp=on # needed for conflict resolution

ستحتاج أيضًا إلى تمكين النسخ المتماثل التلقائي لـ ddl على كل عقدة؛ أضف هذه GUCs إلى postgresql.conf الملف كذلك:

spock.enable_ddl_replication=onspock.include_ddl_repset=on

تحتاج أيضًا إلى تكوين pg_hba.conf ملف للسماح بالاتصالات بين العقد الخاصة بك والتأكد من أن جدران الحماية لا تمنع الوصول. تتم معالجة اتصالات النسخ المتماثل المنطقية بواسطة pg_hba.conf كاتصالات منتظمة بقاعدة بيانات الموفر.

بعد تعديل ملفات التكوين، أعد تشغيل خادم Postgres؛ على سبيل المثال:

pg_ctl -D /path/to/data_directory restart

تكوين النسخ المتماثل

أولا، سوف نقوم باستدعاء spock.node_create الأمر على كل عقدة في الكتلة. على سبيل المثال، يقوم الأمر التالي بإنشاء عقدة مسماة n1 التي يمكن الوصول إليها عبر سلسلة الاتصال المحددة مع dsn عامل:

SELECT spock.node_create(    node_name :='n1',    dsn :='host=10.0.0.5 port=5432 dbname=acctg');

استخدم الأمر التالي لإنشاء عقدة باسم n2:

SELECT spock.node_create(    node_name :='n2',    dsn :='host=10.0.0.7 port=5432 dbname=acctg');

بعد ذلك، قم بإنشاء الاشتراكات بين العقد. نظرًا لأن هذا نسخ متماثل متعدد الماجستير، فإن كل عقدة تعمل كمشترك ومزود. يقوم الأمر الأول بإنشاء اشتراك بين n1 و n2:

SELECT spock.sub_create(    subscription_name :='sub_n1n2',    provider_dsn :='host=10.0.0.7 port=5432 dbname=acctg');

الأمر الذي تم استدعاؤه على n1 يحدد اسم الاشتراك (sub_n1n2) وسلسلة الاتصال الخاصة بالعقدة التي تشترك فيها (n2). بعد ذلك، قم بإنشاء اشتراك على n2 الذي يتصل به n1:

SELECT spock.sub_create(    subscription_name :='sub_n2n1',    provider_dsn :='host=10.0.0.5 port=5432 dbname=acctg');

لبدء النسخ المتماثل، سنقوم بإضافة الجداول مع”https://www.postgresql.org/docs/current/pgbench.html” rel=”nofollow”>pgbench; وبما أننا قمنا بتمكين النسخ المتماثل التلقائي لـ DDL، فسنضيف الجداول n1، وسيتم نشرها تلقائيًا إلى n2:

/path to pgbench/pgbench -i -s 10 acctg

وبعد ذلك، لتأكيد النسخ المتماثل، يمكنك الاتصال بكليهما n1 و n2 باستخدام psql وتحقق من وجود جداول pgbench.

نوع بي أس كيو إل (17.x). "help" للمساعدة. bench=# dt قائمة مخطط العلاقات | الاسم | اكتب | المالك --------+-------------------+-------+--------- عام | pgbench_accounts | الجدول | بوستجرس العامة | pgbench_branches | الجدول | بوستجرس العامة | pgbench_history | الجدول | بوستجرس العامة | pgbench_tellers | الجدول | بوستجرس (4 صفوف)

نشر مجموعات Spock في الحاويات وباستخدام Ansible

تستضيف مواقع pgEdge Github مستودعات تحتوي على عناصر يمكنك استخدامها لتبسيط نشر مجموعة spock؛ لمزيد من المعلومات، قم بزيارة:

“-1” دير=”auto”> الترقية

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

بعد ذلك، لترقية إصدار spock الذي تستخدمه لإدارة مجموعة النسخ المتماثل، يمكنك إزالة ملحق spock وإنشائه وترقيته كما تفعل مع أي ملحق آخر”https://www.postgresql.org/docs/17/extend-extensions.html#EXTEND-EXTENSIONS-UPDATES” rel=”nofollow”> ملحق PostgreSQL.

لمراجعة ترخيص spock، قم بزيارة”http://github.com/pgEdge/spock/blob/main/LICENSE.md”>هنا.

اقرأ المزيد

كيا EV2 بالإضافة إلى ثلاثة موديلات GT الساخنة قادمة في يناير
نيوزويك تعيد تعريف تجربة القراءة: صفحة رئيسية ذكية مدعومة بالذكاء الاصطناعي

Reactions

0
0
0
0
0
0
بالفعل كان رد فعل لهذا المنصب.

ردود الفعل