MySQL Cluster nədir? Centos 7 üzərində Mysql Cluster qurulması.

Günel İsmayilova
Kodera
Published in
6 min readAug 31, 2018

İ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.

cd ~ wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.6/mysql-cluster-community-7.6.7-1.el7.x86_64.rpm-bundle.tar

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/.

--

--