PmaControl logo PmaControl
  • مرحباً
  • PmaControl
    • وكلاء الذكاء الاصطناعي 13 وكلاء محليين
    • عروضنا المجتمع، السحابة، محليًا، المميز
    • التوثيق أدلة، API، الهندسة المعمارية
    • السوق المكونات الإضافية للمجتمع
    • عملاء أكثر من 28 شركة
    • الأسئلة الشائعة 25 سؤالا / 7 فئات
    قواعد البيانات
    • ماريا دي بي 31 مادة
    • ماي إس كيو إل 11 مادة
    • مجموعة جاليرا 6 عناصر
    • ماكس سكيل 3 عناصر
    • ProxySQL 2 عناصر
    • أمازون أورورا ماي إس كيو إل 0 العناصر
    • قاعدة بيانات أزور 0 العناصر
    • انقر البيت 0 العناصر
    • GCP CloudSQL 0 العناصر
    • بيركوناسيرفر 0 العناصر
    • متجر واحد 0 العناصر
    • تي دي بي 0 العناصر
    • سرعة 0 العناصر
    الحلول
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • Observabilité SQL المراقبة والتنبيهات والطوبولوجيا
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2
    • Migration & upgrade صفر توقف عن العمل، pt-osc، gh-ost
  • عروضنا
  • موارد
    • التوثيق الأدلة الفنية وواجهات برمجة التطبيقات
    • مركز تحسين MySQL مؤشر تخفيض السعر والمقاييس والإعدادات والحوادث
    • الأسئلة الشائعة 25 سؤالا متكررا
    • الشهادات ملاحظات العملاء وحالات الاستخدام
    • مدونة مقالات ورؤى
    • خريطة الطريق الميزات القادمة
    مجالات الخبرة
    • Observabilité SQL المراقبة والتنبيهات وطوبولوجيا Dot3
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2، ISO 27001
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Performance & optimisation ملخصات، شرح، ضبط
    • Migration & upgrade صفر توقف عن العمل، pt-osc
    روابط سريعة
    • جيثب ويكي 26 صفحة - التثبيت والمحرك والمكونات الإضافية
    • كود المصدر مستودع جيثب الرسمي
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • احجز عرضًا توضيحيًا 30 دقيقة - هندسة معمارية حقيقية
  • دعم 24 × 7
  • احجز عرضًا توضيحيًا
احجز عرضًا توضيحيًا
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
← العودة إلى بلوق

النسخ المتماثل متعدد المصادر مع MySQL 8.4

تم النشر بتاريخ 12 أبريل 2026 بواسطة Aurélien LEQUOY
mysql replication multi-source mysql-8.4
يشارك X LinkedIn Facebook Email PDF
النسخ المتماثل متعدد المصادر مع MySQL 8.4

مقدمة

يسمح النسخ المتماثل متعدد المصادر لـ MySQL 8.4 لنفس النسخة المتماثلة بتلقي المعاملات من عدة خوادم مصدر بالتوازي. يتم إرفاق كل مصدر بالنسخة المتماثلة عبر قناة نسخ منفصلة.

تستخدم هذه الآلية بشكل أساسي من أجل:

  • دمج خوادم متعددة في عقدة واحدة
  • التدفقات الإجمالية من عدة دول أو مواقع أو تطبيقات
  • مركزية قراءة البيانات
  • إعداد عقدة الإبلاغ أو المصالحة

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

ما الذي يدعمه MySQL 8.4 فعليًا

في MySQL 8.4:

  • نسخة متماثلة متعددة المصادر تفتح قناة واحدة لكل مصدر
  • يجب أن تشير كل قناة إلى مصدر مختلف
  • يمكن أن يعتمد النسخ المتماثل على مواضع GTID أو binlog
  • يمكن تطبيق مرشحات النسخ المتماثل لكل قناة
  • يجب أن تكون مستودعات بيانات التعريف المتماثلة في وضع TABLE، وهو السلوك الافتراضي في الإصدار 8.4

نقاط مهمة:

  • يتم استخدام المصادر المتعددة للدمج، وليس لإجراء عمليات أساسية متعددة مع المراجحة
  • لا يوجد كشف متكامل للصراع أو حله
  • لا يمكن لنفس النسخة المتماثلة فتح عدة قنوات لنفس المصدر

مثال للطوبولوجيا

مثال بسيط مع ثلاثة مصادر ومجمع:


text
production_de  ─┐
production_es  ─┼──> production_all84
production_it  ─┘

في هذا المثال:

  • production_de يحتوي على قاعدة PRODUCTION
  • production_es يحتوي أيضًا على قاعدة PRODUCTION
  • production_it يحتوي أيضًا على قاعدة PRODUCTION
  • production_all84 يستقبل التدفقات الثلاثة لكنه يعيد تعيينها إلى قواعد مختلفة:
    • PRODUCTION_DE
    • PRODUCTION_ES
    • PRODUCTION_IT

تمنع عملية إعادة التعيين هذه التدفقات الثلاثة من الكتابة إلى نفس قاعدة البيانات الموجودة في النسخة المتماثلة.

المتطلبات الأساسية

على كل مصدر:

  • server-id منفردة
  • تمكين السجل الثنائي
  • وصول TCP/IP إلى المنفذ MySQL
  • مستخدم النسخ المتماثل مخصص

في النسخة المتماثلة متعددة المصادر:

  • server-id منفردة
  • relay_log تم تكوينه
  • MySQL 8.4
  • الاستعادة الأولية للبيانات قبل بدء النسخ

تكوين المصدر النموذجي

مثال على الحد الأدنى من التكوين على المصدر:

[mysqld]
bind-address = 0.0.0.0
server-id = 186
log_bin = mysql-bin
binlog_format = ROW
binlog_row_image = FULL
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1

نفس المنطق في المصادر الأخرى، مع server-id مختلف على كل خادم.

التكوين النموذجي للنسخة المتماثلة المجمعة

مثال:

[mysqld]
bind-address = 0.0.0.0
server-id = 189
log_bin = mysql-bin
relay_log = mysql-relay-bin
binlog_format = ROW
binlog_row_image = FULL
skip_replica_start = ON
read_only = ON
super_read_only = ON
`

skip_replica_start=ON` مفيد أثناء مرحلة التجميع أو الصيانة، لأنه يتجنب إعادة التشغيل التلقائي للقنوات قبل التحقق من الصحة.

إنشاء حساب النسخ المتماثل

على كل مصدر:

CREATE USER 'repl'@'10.68.68.%' IDENTIFIED BY 'Repl84Geo2026x';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'10.68.68.%';

يظل الامتياز REPLICATION SLAVE هو الذي تم توثيقه بواسطة MySQL لهذا النوع من التجميع في 8.4.

تحميل البيانات الأولية

قبل إرفاق قناة، يجب عليك تحميل بيانات البداية على النسخة المتماثلة.

مثال مع مقالب مأخوذة من المصادر:

mysqldump --single-transaction --set-gtid-purged=OFF PRODUCTION > PRODUCTION_de.sql
mysqldump --single-transaction --set-gtid-purged=OFF PRODUCTION > PRODUCTION_es.sql
mysqldump --single-transaction --set-gtid-purged=OFF PRODUCTION > PRODUCTION_it.sql

ثم على النسخة المتماثلة:

CREATE DATABASE PRODUCTION_DE;
CREATE DATABASE PRODUCTION_ES;
CREATE DATABASE PRODUCTION_IT;

وقم باستيراد عمليات التفريغ الثلاثة إلى قواعد البيانات المستهدفة الثلاثة المقابلة.

استرجاع إحداثيات binlog

إذا لم نعمل في GTID، فيجب علينا استرجاع كل مصدر:

  • اسم ملف binlog
  • وضع البداية

مثال:

SHOW BINARY LOG STATUS;

ستبدأ النسخة المتماثلة بعد ذلك من هذه الإحداثيات بـ SOURCE_LOG_FILE وSOURCE_LOG_POS.

إنشاء القنوات

في MySQL 8.4، يتم تكوين كل مصدر باستخدام CHANGE REPLICATION SOURCE TO ... FOR CHANNEL.

مثال للمصدر الألماني:

CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='10.68.68.186',
  SOURCE_PORT=3306,
  SOURCE_USER='repl',
  SOURCE_PASSWORD='Repl84Geo2026x',
  SOURCE_LOG_FILE='mysql-bin.000001',
  SOURCE_LOG_POS=158,
  SOURCE_AUTO_POSITION=0,
  GET_SOURCE_PUBLIC_KEY=1
FOR CHANNEL 'production_de';

نفس المبدأ ل:

  • production_es
  • production_it

مرشحات لكل قناة

تأتي قوة المصادر المتعددة من التصفية لكل قناة على حدة.

إذا كانت المصادر الثلاثة لها قاعدة PRODUCTION، فيمكننا إعادة كتابتها على جانب النسخة المتماثلة:

CHANGE REPLICATION FILTER
  REPLICATE_REWRITE_DB=((PRODUCTION,PRODUCTION_DE))
FOR CHANNEL 'production_de';

CHANGE REPLICATION FILTER
  REPLICATE_REWRITE_DB=((PRODUCTION,PRODUCTION_ES))
FOR CHANNEL 'production_es';

CHANGE REPLICATION FILTER
  REPLICATE_REWRITE_DB=((PRODUCTION,PRODUCTION_IT))
FOR CHANNEL 'production_it';

هذه النقطة مهمة:

  • يجب أن تكون القناة موجودة قبل التقديم CHANGE REPLICATION FILTER ... FOR CHANNEL
  • إذا لم تكن القناة موجودة بعد، فسيقوم MySQL بإرجاع خطأ

بدء القنوات

START REPLICA FOR CHANNEL 'production_de';
START REPLICA FOR CHANNEL 'production_es';
START REPLICA FOR CHANNEL 'production_it';

وبعد ذلك، إذا ظلت النسخة المتماثلة سلبية:

SET GLOBAL read_only = ON;
SET GLOBAL super_read_only = ON;

التحقق

التحكم في كل قناة على حدة:

SHOW REPLICA STATUS FOR CHANNEL 'production_de'\G
SHOW REPLICA STATUS FOR CHANNEL 'production_es'\G
SHOW REPLICA STATUS FOR CHANNEL 'production_it'\G

المؤشرات المتوقعة:

  • Replica_IO_Running: Yes
  • Replica_SQL_Running: Yes
  • Seconds_Behind_Source: 0 أو قريب من 0
  • Replicate_Rewrite_DB تم تعريفه بشكل صحيح

الفحص الوظيفي:

SELECT * FROM PRODUCTION_DE.germany_feed;
SELECT * FROM PRODUCTION_ES.spain_feed;
SELECT * FROM PRODUCTION_IT.italy_feed;

العمليات الحالية

إيقاف قناة واحدة:

STOP REPLICA FOR CHANNEL 'production_es';

إعادة تشغيل قناة واحدة:

START REPLICA FOR CHANNEL 'production_es';

إعادة ضبط القناة:

RESET REPLICA ALL FOR CHANNEL 'production_es';

إزالة عامل تصفية إعادة الكتابة على القناة:

CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB=() FOR CHANNEL 'production_es';

ما يجب تجنبه

  • تقارب عدة مصادر نحو نفس القاعدة المستهدفة دون تجزيء
  • افترض أن MySQL سيحل تعارضات المفاتيح أو الجدولة
  • استخدم عدة إصدارات مختلفة من MySQL دون إجراء فحوصات توافق صارمة
  • ننسى أن SOURCE_PASSWORD في CHANGE REPLICATION SOURCE TO محدود الطول
  • تطبيق المرشحات قبل إنشاء القناة

تحديد المواقع الفنية

يعد MySQL 8.4 متعدد المصادر مناسبًا لـ:

  • توحيد متعدد البلدان
  • التقارير المركزية
  • المصالحة
  • انتعاش العديد من التدفقات المستقلة

وهو غير مناسب بمفرده لـ:

  • سيد متعدد حقيقي للكتابة المتزامنة
  • بنية الإجماع
  • حل الصراعات تلقائيا

الخلاصة

مع MySQL 8.4، أصبح النسخ المتماثل متعدد المصادر نظيفًا وناضجًا وقابل للاستخدام لتجميع خوادم مصادر متعددة في نسخة متماثلة واحدة.

المخطط الموصى به بسيط:

  1. قم بالفصل بوضوح بين أدوار المصدر والمجمع
  2. فرض server-id واحد في كل مكان
  3. قم بتحميل لقطة أولية
  4. إنشاء قناة لكل مصدر
  5. تطبيق مرشحات إعادة الكتابة لكل قناة
  6. تحقق من كل قناة بشكل مستقل

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

مصادر رسمية

  • MySQL 8.4 — النسخ المتماثل متعدد المصادر
  • تكوين النسخ المتماثل متعدد المصادر
  • إضافة مصادر تعتمد على السجل الثنائي
  • المرشحات المعتمدة على القناة
  • تغيير مصدر النسخ المتماثل إلى
يشارك X LinkedIn Facebook Email PDF
← العودة إلى بلوق

تعليقات (0)

لا توجد تعليقات حتى الآن.

اترك تعليقا

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
إشعارات قانونية GitHub اتصال
لا تنتظر وقوع الحادث حتى تفهم هندستك المعمارية. © 2014-2026 PmaControl — 68Koncept