MySQL Cluster nədir? Centos 7 üzərində Mysql Cluster qurulması.
İlk öncə Database Cluster haqqında kiçik məlumat verim. Database clustering eyni datanın bir neçə node-larda (normalda bir kompyuterdə bir node saxlanılır.) saxlanılmasıdır. Müsbət tərəfləri:
1. Data redundancy (Məlumatların təkrarı) — bu düşündüyümüz təkrar deyil. Datanın əlaqəsiz olaraq təkrar saxlanılması deyildir yəni. Məqsəd elə dataların təkrar saxlanmasıdır. Data nodelar arasında sinxron olaraq saxlanılır (dəyişiklik olanda digərlərinə də eyni anda ötürüləcək). Onlardan biri sıradan çıxarsa datanın eynisi digərində olacaq.


2. Scalability (Load balancing) — əgər 3 node-mız varsa gələn trafiki 3 kompyuter arasında böləcək. Giriş portu bir dənə olacaq amma trafik olan node-lar arasında bölünəcək ki, güc birinə düşməsin.

3. Availability (yararlı olmaqlıq) — bu sadəcə olaraq serverimizin işlək vəziyətdə olmağını yəni yaralı olmağını nəzərdə tutur. Bunun həmişə ən yüksək səviyyədə olmağı bizə lazımdır.
4. Monitoring — Xüsusi skriptlər yazmaq olar ki, müəyyən etdiyimiz vaxtlarda işləsin və serverin vəziyyəti barədə bizim istədiyimiz məlumatları ekrana versin.
Database cluster qurarkən node iki halda ola bilər 1. Master (həm yazmaq həm oxumaq olur) 2. Slave (ancaq oxumaq olur. Öz datasını masterdən götürür.). Məsələn bir master iki slave node varsa data master node-a yazılır ordan da slave node-lara ötürülür və ya bütün node-lar master olarsa istənilən node-a data yazmaq mümkün olacaq və yazılan data digər node-lara da ötürüləcək.
Mysql cluster yaratmaq üçün 3 növ node lazımdır. Hər node ayrı serverə yüklənəcək. 1. Management node (NDB) — idarəedici node. Onun vasitəsilə yeni node yaratmaq, quraşdırmaq, yenidən başlatmaq (restart), silmək və backup etmək mümkündür. Yəni cluster-də olan digər node-ları idarə etmək üçündür. 2. Data Nodes (NDBD) — bu dataların node-lar arasında sinxronizə və replikasiya olunan hissəsidir. 3. SQL Nodes (MySQLD) — qoşulanların database cluster-nə qoşulmaq üçün olan interfeys serverləridir.
Tələblər: 1 Management node, 2 Data node və 2 SQL node (5 virtual maşın hər birinə Centos 7 Minimal setup).
Mənim NDB-min ip-si: 192.168.53.144
NDBD: 192.168.53.139, 192.168.53.140
MySQLD: 192.168.53.141, 192.168.53.143
Mərhələ 1. Package-lərin yüklənməsi.
Root istifadəçi kimi bu 192.168.53.144 node-a qoşulmaq. Normalda centosu yükləyərkən root istifadəçi yaratmış olmalısınız. Mysql cluster-ın proqramını aşağıdakı linkdən yükləmək olar. İstəyirsiniz desktop-a yükləyib ordan filezilla ilə serverə atın istəyirsiniz wget ilə linki yazaraq bir başa serverə yükləyin.
Sonra aşağıdakı server paketləri yükəyin. MySQL cluster package-i yükləyərkən Mariadb-libs error verir ona görə də onu silmək lazım gəlir. Onu sildiyimiz üçün özü ilə bizə bəzi lazım olan package-ləri də sildiyindən ondan sonra əlavə package-lər yükləyirik. Aşağıdakı package-ləri yükləməsəniz MySQL package-lərini yükləməyə çalışarkən müxtəlif errorlar ilə qarşılaşacaqsınız.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
yum install epel-release
yum -y install perl-Class-MethodMaker
yum -y install perl-DBI
yum install net-tools
Sonra isə yüklədiyimiz zip-i ya unzip edin (bunun üçün əlavə package yükləməyə ehtiyac olacaq) ya da desktopdan zipin içindəki faylları filezilla ilə serverə atın və atdığınız yerdə aşağıdakı komandaları yazın:
rpm -Uvh mysql-cluster-community-common-7.6.7–1.el7.x86_64.rpm
rpm -Uvh mysql-cluster-community-libs-7.6.7–1.el7.x86_64.rpm
rpm -Uvh mysql-cluster-community-client-7.6.7–1.el7.x86_64.rpm
rpm -Uvh mysql-cluster-community-server-7.6.7–1.el7.x86_64.rpm
rpm -Uvh mysql-cluster-community-management-server-7.6.7–1.el7.x86_64.rpm
rpm -Uvh mysql-cluster-community-ndbclient-7.6.7–1.el7.x86_64.rpm
rpm -Uvh mysql-cluster-community-data-node-7.6.7–1.el7.x86_64.rpm
Bu mərhələyə kimi proses serverlərin 5-də də eyni qaydada gedir.
Mərhələ 2. Management Node quraşdırılması.
Yuxarıdakı mərhələlərdən sonra davamı olaraq İdarəetmə node-u yaratmaq üçün aşağıdakıları etmək lazımdır. Öncə konfiqurasiya faylları üçün direktoriya yaratmaq:
mkdir -p /var/libs/mysql-cluster
Sonra konfiqurasiya faylını yaradıb için doldurmaq.
cd /var/libs/mysql-cluster
vi config.ini
Aşağıdakıları faylın içinə atın və öz ip adreslərinizi qeyd edin.
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.53.144
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=256M # Memory allocate for data storage
IndexMemory=128M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.53.139
[ndbd]
#Data Node db3
HostName=192.168.53.140
[mysqld]
#SQL Node db4
HostName=192.168.53.141
[mysqld]
#SQL Node db5
HostName=192.168.53.143
Yadda saxlayıb çıxın. Aşağıdakını yazın.
ndb_mgmd — config-file=/var/lib/mysql-cluster/config.ini
Nəticə:
INFO — The default config directory ‘/usr/mysql-cluster’ does not exist. Trying to create it…
INFO — Successfully created config directory
Yuxarıdakılardan sonra deməli management node işə düşmüş olur. İndi isə ndb_mgm komandası ilə yoxlayaq.
ndb_mgm
show

Mərhələ 3. MySQL Cluster Data Node quraşdırılması.
2 centos server istifadə edəcik. Hər iksinə qoşulub ssh root@192.168.53.139 mərhələ 1-in komandalarını təkrarlaryırıq. Sonra conf faylı yaradıb:
vi /etc/my.cnf
içinə atırıq.
[mysqld]
ndbcluster
ndb-connectstring=192.168.53.144 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.53.144 # IP address of Management Node
yadda saxla və çıx. Yenə direktory yaratmaq
mkdir -p /var/lib/mysql-cluster
və data node-u işə salmaq
ndbd

Qeyd 1.Mən my.cnf faylında management node-un ip adresini yazarkən portu da qeydm etdim məndə qoşulmada problem yaradırıdı deyə sizdə yaratmırsa ehtiyac yoxdur. (bu şəkildə 192.168.53.144:1186).
Qeyd 2. Bütün serverlərdə firewalld və selinux-u söndürmək lazımdır yoxsa qoşulmanın qarşısını alacaq.
service firewalld stop
setenforce 0
vi /etc/selinux/config (faylı edit edib “selinux” sözünün qarşısında “disabled” yazın)
Mərhələ 4. SQL node quraşdırılması.
Bu mərhələ SQL node quraşdırılması üçündür hasnı ki, proqramın databazaya girişini təmin edir. 2 centos isitifadə olunacaq. Qoşuluruq mərhələ 1-i edirik.
Aşağıdakı faylı yaradırıq:
vi /etc/my.cnf
içinə atırıq.
[mysqld]
ndbcluster
ndb-connectstring=192.168.53.144 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.53.144 # IP address for server management node
yadda saxla çıx. Və SQL node-u MySQL serverini başlatmaqla işə sal (hər iksində):
service mysql start
Mərhələ 5. Nəticəni görmək.
Management node-a qoşuluruq.
ssh root@192.168.53.144
ndb_mgm
ndb_mgm> show

Mərhələ 6. Test
Test etmək üçün SQL node-lardan birinə qoşulun.
cd ~
less /var/log/messages | grep pass
burada sizə MySQL tərəfindən yaradılmış kodu görəcəksiniz o kodu copy edin.

sudo mysql_secure_installation
yazıb gələn yeni kodu yazın gələn sualları cavablayın.
Qeyd 3. Yeni kodunuz bir böyük hərf, rəqəm və işarələrdən ibarət olmalıdır.
mysql -u root –p
istifadəçi yaradın
CREATE USER ‘root’@’%’ IDENTIFIED BY ‘aqwe123’;
show databases; (var olan databazalara baxıb mysql db-ni seçirik)
use mysql;
yaratdığımız useri görmək üçün
select user, host from user;

grant all privileges to gunel;
Qeyd 4. Bir neçə terminal ilə rahat işləyə bilmək üçün Cmder proqramından istifadə edə bilərsiniz http://cmder.net/.
