Sales5 min read1048 words

كيف يتم تكوين التكرار بين الخادم الرئيسي والثانوي في MySQL؟

Fatih Çevik

Fatih Çevik

PlusClouds Author

Cloud & SaaS

كيف يتم تنفيذ استنساخ MySQL Master-Slave؟

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

  • نحتاج إلى الحد الأدنى من جهازين ماديين أو افتراضيين. في هذه المقالة، سنستخدم جهازين افتراضيين بنظام Debian 10. نوصي بشدة باستخدام نفس التوزيعات. يجب أن يكون مُثبتًا نفس إصدار MySQL على كلا الجهازين الافتراضيين.
  • تكوين Firewall باستخدام UFW.
  • مطلوب خادم NTP مثبت ومتزامن على كلا من جهاز الماستر والعبد للتواصل بينهما.

الآن، بعد أن تحدثنا باختصار عن المتطلبات، يمكننا الانتقال إلى قسم التكوين.

1. تكوين NTP

ستكون خطوتنا الأولى هي إعداد نفس تكوين NTP على كلا الجهازين. إذا لم تكن قد قمت بتثبيته بعد، يمكنك تثبيته باستخدام الأمر التالي.

apt -y install ntp

الآن سنقوم بتكوين خوادم NTP التي قمنا بتثبيتها لتتزامن مع بعضها البعض. سنستخدم خوادم NTP من آسيا في مقالتنا.

*nano /etc/ntp.conf*
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst

بعد تعديل ملف التكوين، نقوم بحفظه وإعادة تشغيل خدمة NTP.

*/etc/init.d/ntp restart*

2. يجب أن تتعرف الأجهزة على بعضها

يجب على جميع الخوادم التي نستخدمها التعرف على بعضها البعض والتواصل بسلاسة. إذا كان متاحًا، يمكنك استخدام DNS محلي. نظرًا لأننا لا نملك DNS في مثالنا، سنقوم بتكوين ملف hosts.

*nano /etc/hosts*
master_server_ip master_server_hostname
slave_server_ip slave_server_hostname

تذكر أنه يجب إجراء جميع التكوينات التي سنقوم بها بشكل كامل على جميع الخوادم لا تنسى .

3. تكوين Firewall

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

apt -y install ufw

إذا كنت متصلاً باستخدام SSH، يجب عليك أولاً السماح بالمنفذ SSH بعد التثبيت. خلاف ذلك، قد تفقد اتصال SSH الخاص بك عند تشغيل خدمة UFW.

ufw allow 22
ufw allow from slave_server_ip to any port 3306
systemctl enable ufw
systemctl start ufw
ufw enable

أولاً، سمحنا بالمنفذ 22، أي منفذ SSH، ثم القاعدة التي كتبناها هي إذن المنفذ 3306 المستخدم بواسطة MySQL. لا تنسَ تغيير الجزء slave_server_ip بعنوان IP لجهاز العبد الخاص بك.

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

4. تكوين خادم الماستر

يقع ملف تكوين خادم MySQL في Debian 10 باسم **mysqld.cnf** تحت المجلد **/etc/mysql/mysql.conf.d/**. أولاً، نفتح خادمنا الماستر باستخدام محرر **nano**. إذا كان لديك محرر مختلف تفضله، يمكنك استخدامه أيضًا.

nano /etc/mysql/mysql.conf.d/mysqld.cnf

بعد فتح الملف، أولاً نقوم بتعديل عنوان الاتصال. يجب تعديل السطر المضاف أدناه إذا لم يكن موجودًا.

bind-address = master_server_ip

بعد إجراء تعديل bind-address، ابحث عن سطر **server-id**. إذا لم يكن موجودًا، أضفه كما في السابق. يمكنك إعطاء قيمة 1، يجب أن تكون هذه القيمة فريدة للخوادم.

server-id = 1

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

log_bin = /var/log/mysql/mysql-bin.log

أخيرًا، يجب تحديد قاعدة البيانات أو قواعد البيانات التي سيتم النسخ المتماثل لها.

binlog_do_db = testdb

بعد الانتهاء من التعديلات، احفظ عن طريق الضغط على CTRL + X، Y و ENTER.

بعد الخروج، نعيد تشغيل خدمة MySQL.

systemctl restart mysql

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

mysql -u root -p
CREATE USER 'slave_user'@'slave_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';
لاحظ أن هذا الأمر يحدد أن مستخدم العبد سيستخدم ملحق مصادقة mysql native password. بدلاً من ذلك، يمكن استخدام آلية المصادقة الافتراضية لـ MySQL والتي هي caching_sha2_password، ولكن لهذا، يجب أن يتم إنشاء اتصال مشفر بين خادم الماستر والعبد. سيكون هذا النوع من الإعداد مثاليًا لبيئات الإنتاج، إلا أن تكوين الاتصال المشفر غير متوفر في هذا الدليل.
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_server_ip';
FLUSH PRIVILEGES;

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

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


عند أخذ الإحداثيات، يجب علينا التأكد من أن أي مستخدم لم يقم بتغيير أي بيانات من خلال قفل قاعدة البيانات لفترة قصيرة.
FLUSH TABLES WITH READ LOCK;

بعد ذلك، قم بتشغيل الكود التالي لعرض حالة ملفات السجل الثنائي.

SHOW MASTER STATUS;

```

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 | 899 | testdb | | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

```

ستحصل على مخرجات مشابهة لما سبق.

إذا لم يكن لديك قاعدة بيانات حتى الآن على خادم الماستر، يجب عليك أولاً إلغاء القفل وإنشاء قاعدة البيانات.

UNLOCK TABLES;
CREATE DATABASE testdb;

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

5. تكوين خادم العبد

في هذه الخطوة، نقوم بتغيير ملف التكوين بنفس الطريقة التي قمنا بها على خادم الماستر. نظرًا لأن الخطوات قد تم توضيحها أعلاه، فنحن نتجاوزها بسرعة.

nano /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = testdb

أخيرًا، نضيف توجيه relay-log الذي يحدد مسار ملف السجل العابر على خادم العبد.

relay-log = /var/log/mysql/mysql-relay-bin.log

بعد الانتهاء من التعديلات، نعيد تشغيل خدمة MySQL هنا أيضاً.

systemctl restart mysql

الآن، نحن جاهزون لاختبار عملية النسخ المتماثل. ندخل إلى قشرة MySQL على خادم العبد.

mysql -u root -p

الآن جاء دور عملية النسخ المتماثل. نقوم بإدخال المعلومات التي يجب علينا إدخالها لخادم العبد من خادم الماستر.

CHANGE REPLICATION SOURCE TO
SOURCE_HOST='master_server_ip',
SOURCE_USER='slave_user',
SOURCE_PASSWORD='password',
SOURCE_LOG_FILE='mysql-bin.000001',
SOURCE_LOG_POS=899;
START REPLICA;

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

SHOW REPLICA STATUS\G

يمكننا رؤية حالة النسخ المتماثل على خادم العبد باستخدام الأمر أعلاه.

```

*************************** 1. row ***************************

Replica_IO_State: Waiting for master to send event

Source_Host: 'slave_server_ip'

Source_User: slave_user

Source_Port: 3306

Connect_Retry: 60

Source_Log_File: mysql-bin.000001

Read_Source_Log_Pos: 1273

Relay_Log_File: mysql-relay-bin.000003

Relay_Log_Pos: 729

Relay_Source_Log_File: mysql-bin.000001

```

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

الأسئلة الشائعة

ما المتطلبات الأساسية trước البدء في تنفيذ استنساخ MySQL Master-Slave؟

يوجد جهازان فعليًا أو افتراضيين كحد أدنى، ويفضلان بنظام Debian 10 ونفس إصدار MySQL على كلاهما. كما يجب إعداد Firewall باستخدام UFW وتثبيت خادم NTP متزامن على كلا الخادمين، والتأكد من أن الأجهزة يمكنها التعرف على بعضها إما عبر DNS محلي أو ملف hosts.

كيف أقوم بتثبيت NTP وتكوينه لضمان مزامنة الوقت؟

قم بتثبيت ntp على كلا الخادمين باستخدام apt -y install ntp. ثم عدل ملف /etc/ntp.conf لإضافة خوادم asia.pool.ntp.org iburst ثم أعد تشغيل خدمة NTP.

كيف أجعل الأجهزة تعرف بعضها البعض إذا لم يوجد DNS محلي؟

قم بتعديل /etc/hosts على جميع الخوادم بإضافة سطور تربط master_server_ip بـ master_server_hostname و slave_server_ip بـ slave_server_hostname. وتأكد أن جميع الإعدادات التي سنقوم بها مطبقة على كل الخوادم بشكل كامل.

كيف أفتح المنافذ الضرورية في UFW لضمان وصول MySQL بين الخادمين؟

ثبت ufw إذا لم يكن موجوداً، ثم السماح بالمنفذ SSH إذا كنت تستخدم SSH، وبعدها السماح للاتصال من slave_server_ip إلى المنفذ 3306، ثم تمكين ufw وتشغيله.

ما هي خطوات تهيئة خادم الماستر في MySQL؟

افتح الملف /etc/mysql/mysql.conf.d/mysqld.cnf على خادم الماستر وتعديل bind-address ليكون master_server_ip، ثم أضف أو عدل server-id ليكون 1، وحدد log_bin ومسار binlog_do_db إلى testdb. ثم أعد تشغيل MySQL وأنشئ مستخدم slave_user@slave_server_ip ومنحه صلاحية REPLICATION SLAVE، ثم FLUSH PRIVILEGES.

كيف أحصل على معلومات ملف السجل الثنائي من Master؟

قم بإجراء FLUSH TABLES WITH READ LOCK ثم نفّذ SHOW MASTER STATUS لعرض حالة ملف السجل وموقعه مثل File و Position. إذا لم تكن لديك قاعدة بيانات جاهزة، أطلق UNLOCK TABLES ثم أنشئ قاعدة البيانات testdb.

ما هي خطوات إعداد خادم العبد لاستنساخ البيانات؟

على العبد، عدّل ملف /etc/mysql/mysql.conf.d/mysqld.cnf بحيث يكون server-id 2 وlog_bin ومسار binlog_do_db إلى testdb وأضف relay-log. ثم أعد تشغيل MySQL، وبعدها ادخل إلى قشرة MySQL على العبد واستخدم CHANGE REPLICATION SOURCE TO مع المصدر والاسماء والدخول، ثم START REPLICA وتحقق بواسطة SHOW REPLICA STATUS.

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

يمكنك مشاهدة حالة النسخ المتماثل باستخدام الأمر SHOW REPLICA STATUS\G على خادم العبد، وسترى معلومات مثل Replica_IO_State و Source_Log_File و Read_Source_Log_Pos. إذا كان كل شيء مضبوطاً بشكل صحيح، ستظهر حالة تعبر عن التزامن وبدء استقبال الأحداث من Master.

قراءة ذات صلة

المنشورات الموسومة بـ:

أفضل 11 قالب بريد إلكتروني لتوليد العملاء المحتملين بين الشركات (B2B)
Sales

أفضل 11 قالب بريد إلكتروني لتوليد العملاء المحتملين بين الشركات (B2B)

يظل البريد الإلكتروني البارد واحدًا من أكثر القنوات عائدًا على الاستثمار في مبيعات B2B، ولكن فقط عندما يتم استخدامه بشكل صحيح. القالب الخاطئ، أو النبرة الخاطئة، أو التوقيت غير المناسب قد يؤدي إلى حذف رسالتك فورًا، أو إلغاء الاشتراك، أو الأسوأ من ذلك، وضعها في قائمة الرسائل المزعجة. من ناحية أخرى، يمكن أن يفتح قالب البريد الإلكتروني الصحيح لتوليد العملاء المحتملين في B2B الأبواب أمام صفقات مع مؤسسات كبرى، وشراكات استراتيجية، وخط مبيعات لا ينضب أبدًا. في هذا الدليل، نقوم بتفصيل 11 قالبًا مجربًا وفعالًا للبريد الإلكتروني لتوليد العملاء المحتملين في B2B، ونشرح سبب نجاح كل واحد منها، ونوضح لك كيف يمكن للأدوات الذكية الحديثة مثل Eaglet وLeadOcean من PlusClouds أتمتة العملية بالكامل حتى يعمل تواصلك على مدار الساعة، حتى أثناء نومك.

أتمتة WhatsApp: الطريقة الجديدة لتحويل العملاء المحتملين إلى مبيعات
Sales

أتمتة WhatsApp: الطريقة الجديدة لتحويل العملاء المحتملين إلى مبيعات

Dijital dünyada rekabet artık sadece “daha fazla lead toplamak” üzerinden ilerlemiyor. Asıl fark yaratan, elde ettiğiniz lead’lere ne kadar hızlı, doğru ve kişiselleştirilmiş şekilde ulaştığınız. Bu noktada WhatsApp, yüksek etkileşim oranlarıyla en güçlü iletişim kanallarından biri olurken; n8n gibi araçlar sayesinde bu süreci tamamen otomatik ve ölçeklenebilir hale getirmek mümkün. Bu yazıda, n8n kullanarak WhatsApp otomasyonu kurmayı, Eaglet ve Leadocean gibi platformlardan gelen lead’leri satışa dönüştürmeyi ve bu süreci nasıl optimize edebileceğinizi detaylı şekilde ele alıyoruz.

الدخل التابع مع واتساب في عام 2026
Sales

الدخل التابع مع واتساب في عام 2026

2026 itibarıyla affiliate marketing artık sadece trafik üretmekle ilgili değil. Asıl farkı yaratan şey, o trafiği doğrudan satışa dönüştürebilmek. İşte burada WhatsApp devreye giriyor. 2026’da WhatsApp ile Affiliate Gelir nasıl elde edilir? E-posta açılma oranları düşerken, WhatsApp mesajlarının okunma oranı %90’ların üzerinde. Yani doğru stratejiyle WhatsApp, affiliate gelir için en güçlü “son temas noktası” haline geliyor. Ama burada kritik fark şu: Manuel mesaj atanlar değil, otomasyon kuranlar kazanıyor.

2026’da Instagram ve TikTok’tan Affiliate Gelir Üretmek
Sales

2026’da Instagram ve TikTok’tan Affiliate Gelir Üretmek

2026’da tüketici davranışı kökten değişti. İnsanlar artık bir ürünü Google’a yazıp uzun uzun araştırmıyor. Karşılarına çıkan, sorunlarını anlayan ve onları ikna eden bir videodan tek tıkla satın alıyor. Bu yeni düzene Sosyal Ticaret (Social Commerce) diyoruz. Ve bu oyunun iki ana sahnesi var: Instagram ve TikTok. Ancak burada da eski dönem kapandı. Sadece video paylaşarak, “takipçi kasarak” para kazanma dönemi bitti. Bugün Instagram ve TikTok’ta gerçekten kazananlar, kendini influencer olarak değil; affiliate odaklı dijital yayıncı olarak konumlandıranlar. Bu yazıda, Instagram ve TikTok’u bir vitrin olmaktan çıkarıp affiliate gelir üreten satış makinelerine nasıl dönüştürebileceğinizi adım adım ele alıyoruz.