تحدثنا فى المقالة السابقة عن تعريف ال high availability واهميته بالنسبة للسيرفرات وايضا تحدثنا عن مشكلة ال Split brain واهم مميزات Prrcona Server ولكن فه هذه المقالة سنستخدم منظومة تتكون من ثلاثة سيرفرات بدل من استخدام ال galera كحكم كما فى الصورة التالية :
خطوات بناء منظومة High Availability تعمل بال Percona Xtradb CLuster :
بالاعتماد على ثلاثة سيرفرات , وعلى نظام تشغيل Centos 6.8 .
Server1 = db01.dimofinf.net = 172.216.0.101
Server2 = db02.dimofinf.net = 172.216.0.102
Server3 = db03.dimofinf.net = 172.216.0.103
ملاحظة هامة جدا : الشرح التالي لا يناسب سيرفرات تم تنصيب عليها
cPanel أو ايا من لوحات التحكم الأخرى , وانما نفترض أن السيرفرات الثلاثة تعمل بنظام تشغيل fresh وبدون أي لوحات تحكم كذلك يجب ايقاف ال SELINUX على سيرفرات المنظومة , والتأكد من فتح المنافذ المناسبة في الجدار الناري
الأوامر التالية سيتم تنفيذها على الثلاثة سيرفرات .
أولا : نقوم بتنصيب الrepo الخاص بمنتجات Percona , لنتمكن من تحميل الحزم المناسبة باستخدام ال yum , وذلك بتنفيذ الأمر التالي على :
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
ثانيا : نقوم بتنصيب ال repo الخاصة بال extra packages , لأننا سنحتاج الى عدة حزم من متطلبات عمل ال percona :
yum install epel-release -y
ثالثا : نقوم بتنصيب المكتبة libev :
yum install libev -y
رابعا : نقوم بتنصيب السيرفر المستخدم والجاليرا :
yum install Percona-XtraDB-Cluster-server Percona-XtraDB-Cluster-galera-2 -y
خامسا : نقوم بالآن بتعديل إعدادات خادم قواعد البيانات , عن طريق حذف محتويات الملف /etc/my.cnf , ووضع المحتوى التالي بداخله ( سنقوم بشرح هذه التعديلات تاليا ) , ثم حفظ الملف .
[mysqld]
datadir=/var/lib/mysql
user=mysql
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address=gcomm://172.216.0.101,172.216.0.102,172.216.0.103
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_sst_method=xtrabackup
wsrep_cluster_name=dimofinf_cluster
wsrep_sst_auth=”dimofinf:sstuserpassword”
wsrep_node_address=172.216.0.103
لاحظ انه يجب عليك القيام بتغيير القيم التالية :
wsrep_cluster_address = ضع هنا مجموعة الايبيهات الخاصة بسيرفرات المنظومة
wsrep_node_address= ضع هنا الاي بي الخاص بالسيرفر الذي تقوم بضبط هذا الملف عليه
wsrep_sst_auth= ضع هنا اسم المستخدم وكلمة المرور الخاصة بالمستخدم الذي سيقوم بنقل السناب شوت لأي سيرفر ينضم للمنظومة
سادسا : نقوم بنسخ الملف بين كل السيرفرات في المنظومة , ونقوم فقط بتعديل wsrep_node_address حسب كل سيرفر , بينما يتم ترك بقية الخيارات متشابهة .
سابعا : نقوم الآن بتنفيذ الأمر التالي على سيرفر واحد فقط , هذا الأمر سيقوم ببدء تشغيل المنظومة :
service mysql bootstrap-pxc
يفترض أن تحصل على نتيجة كما في الصورة التالية :
اضغط على الصورة لمشاهدة الحجم الكامل
الآن , سنقوم بانشاء المستخدم المسؤول عن نقل السناب شوت من قواعد البيانات لبقية سيرفرات المنظومة , وهو في هذه الحالة , وحسب ما قمنا بإضافته في ملف my.cnf , هو المستخدم : dimofinf, وكلمة المرور sstuserpassword , نقوم باضافته على السيرفر واعطاؤه الصلاحيات اللازمة بالأوامر التالية :
create user ‘dimofinf’@’localhost’ identified by ‘sstuserpassword’ ;
grant reload, lock tables , replication client on *.* to ‘dimofinf’@’localhost’ ;
flush privileges ;
ثامنا : الآن نقوم بالتأكد من حالة الكلاستر , قبل البدء في اضافة بقية السيرفرات للمنظومة , وذلك عن طريق الأمر :
show status like ‘wsrep_cluster%’ ;
لاحظ حجم الكلاستر كما في الصورة التالية :
تاسعا : الآن نقوم بتشغيل بقية السيرفرات بالأمر التالي :
service mysql start
والآن يمكن التأكد من حجم الكلاستر عن طريق تنفيذ :
show status like ‘wsrep_cluster%’ ;
في أيا من سيرفرات المنظومة , ستلاحظ ظهور العدد الحقيقي للسيرفرات الآن
بهذا نكون قد أنهينا الشرح المبسط لطريقة إعداد بيئة High Availability لخادم قاعدة بيانات باستخدام Percona XtraDB Cluster .
ان كان موقعك في حاجة إلى استقرار دائم أو توزيع للحمل , لا تتردد في البدء باستخدام أحد أنظمة ال High Availability , وان كنت في حاجة الى فريق من مهندسي الأنظمة المحترفين في تخطيط وتطبيق بيئة عمل ال High Availability لكل الخدمات , فلا تتردد في التواصل معنا من خلال فتح تذكرة ow.ly/n8vy30b5SEd , سيسعدنا بشدة تقديم هذه الخدمة لك .
المصدر : Hosting Support م/عمرو سمير .
Author: Dimofinf Blog