Daha önce Postgresql için HA Cluster kurulumu ve üzerine Zabbix HA Cluster kurulumu yazıları yazmıştım. Bugün de MySQL için HA Cluster kurulumundan bahsetmek istiyorum. Öncelikli olarak yapımızda PostgreSql de olduğu gibi 3 adet sunucumuz olacak bunlar neler.
Sunucular | İşletim Sistemi | Uygulamalar | IP |
mysqlMaster | Debian Linux 12 | ClusterManager | 172.15.1.10 |
MysqlNode1 | Debian Linux 12 | Mysql Node | 172.15.1.11 |
MysqlNode2 | Debian Linux 12 | Mysql Node | 172.15.1.12 |
1. Adım – Cluster Manager Kurulumu ve Konfigurasyonu
Öncelikli olarak, aşağıdaki şekilde cluster manager son sürümünü indirelim. Tüm paketlerin linklerine Buradan ulaşabilirsiniz.
wget https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster-community-management-server_8.4.0-1debian12_amd64.deb
İndirme işlemi tamamlandıktan sonra aşağıdaki komut ile kurulumu gerçekleştirelim:
sudo dpkg -i ./mysql-cluster-community-management-server_8.4.0-1debian12_amd64.deb
Devamında, aşağıdaki komut ile cluster konfigurasyon dosyamızı oluşturalım:
sudo mkdir /var/lib/mysql-cluster
sudo nano /var/lib/mysql-cluster/config.ini
Ve dosya içeriğini aşağıdaki şekilde düzenleyelim:
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
[ndb_mgmd]
# Management process options:
hostname=172.15.1.10 # Hostname of the manager
datadir=/var/lib/mysql-cluster # Directory for the log files
[ndbd]
hostname=172.15.1.11 # Hostname/IP of the first data node
NodeId=2 # Node ID for this data node
datadir=/usr/local/mysql/data # Remote directory for the data files
[ndbd]
hostname=172.15.1.12 # Hostname/IP of the second data node
NodeId=3 # Node ID for this data node
datadir=/usr/local/mysql/data # Remote directory for the data files
[mysqld]
# SQL node options:
hostname=172.15.1.10 # In our case the MySQL server/client is on the same Droplet as the cluster manager
Dosyayı kaydedip kapatalım ve aşağıdaki, komut ile Manager’e başlatalım:
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Bu komut çalıştıktan sonra çıktısı aşağıdaki gibi olacaktır:
MySQL Cluster Management Server mysql-8.4.0 ndb-8.4.0
2024-08-07 04:31:49 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2024-08-07 04:31:49 [MgmtSrvr] INFO -- Sucessfully created config directory
Gördüğünüz gibi MySQL Cluster Manager yüklendi ve çalışıyor. Şimdi çalışan sunucuyu sonlandıralım ve Cluster manager için bir systemd dosyası oluşturalım:
sudo pkill -f ndb_mgmd
sudo nano /etc/systemd/system/ndb_mgmd.service
Dosya içeriğini aşağıdaki gibi düzenleyelim:
[Unit]
Description=MySQL NDB Cluster Management Server
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Daha sonra dosyayı kaydedip kapatalım ve değişiklikleri uygulamak için systemd daemon’ını yeniden yükleyelim:
sudo systemctl daemon-reload
sudo systemctl start ndb_mgmd
sudo systemctl enable ndb_mgmd
systemctl status ndb_mgmd
Komutları sıraslı ile çalıştırdıktan sonra servis status çıktısı aşağıdaki gibi olmalıdır:
● ndb_mgmd.service - MySQL NDB Cluster Management Server
Loaded: loaded (/etc/systemd/system/ndb_mgmd.service; enabled; preset:>
Active: active (running) since Wed 2024-08-07 12:50:58 +03; 44min ago
Main PID: 2273 (ndb_mgmd)
Tasks: 12 (limit: 2261)
Memory: 12.0M
CPU: 47.724s
CGroup: /system.slice/ndb_mgmd.service
└─2273 /usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Mysql Cluster Manager kurulumumuzu tamamladık. Şimdi artık Node ların kurulumuna geçelim.
2.Adım – Data Node Kurulumu ve Konfigurasyonu
Öncelikli olarak, kurulum paketini indirerek işlemlereimize başlayalım:
wget https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster-community-data-node_8.4.0-1debian12_amd64.deb
Aşağıdaki komut ile gerekli bağımlılık paketlerinin kurulumunu yapalım:
sudo apt install -y libclass-methodmaker-perl
Sonrasında aşağıdaki komut ile indirdiğimiz paketi kuralım:
sudo dpkg -i ./mysql-cluster-community-data-node_8.4.0-1debian12_amd64.deb
Bir sonraki adım veri düğümü yapılandırma dosyasını oluşturmaktır:
sudo nano /etc/my.cnf
Dosya içeriğini aşağıdaki şekilde yazalım:
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=172.15.1.10 # location of cluster manager
Dosyayı kaydedip kapattıktan sonra, aşağıdaki komut ile data klasörünü oluşturalım:
sudo mkdir -p /usr/local/mysql/data
Akabinde aşağıdaki komutu çalıştıralım.
sudo /usr/sbin/ndbd
Bu komutun çıktısı şu şekilde olmalıdır:
2024-08-07 07:26:42 [ndbd] INFO -- Angel connected to '172.15.1.10:1186'
2024-08-07 07:26:43 [ndbd] INFO -- Angel allocated nodeid: 2
Aşağıdaki komut ile çalışan işlemi durduralım ve Data Node servis haline getirelim.
pkill -f ndbd
sudo nano /etc/systemd/system/ndbd.service
Dosya içeriğini aşağıdaki gibi düzenleyelim:
[Unit]
Description=MySQL NDB Data Node Daemon
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndbd
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Dosyayı kaydedip kapatalım ve servis ayarları için aşağıdaki komutları sırası ile çalıştıralım:
sudo systemctl daemon-reload
sudo systemctl start ndbd
sudo systemctl enable ndbd
systemctl status ndbd
Komutları çalıştırdıktan sonra servis durumunun çıktısı aşağıdaki gibi olmalıdır:
● ndbd.service - MySQL NDB Data Node Daemon
Loaded: loaded (/etc/systemd/system/ndbd.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-08-07 07:33:11 EDT; 14s ago
Main PID: 2768 (ndbd)
Tasks: 46 (limit: 2261)
Memory: 767.3M
CPU: 437ms
CGroup: /system.slice/ndbd.service
├─2768 /usr/sbin/ndbd
└─2769 /usr/sbin/ndbd
Aug 07 07:33:11 mysqlNode1 systemd[1]: Starting ndbd.service - MySQL NDB Data Node Daemon...
Aug 07 07:33:11 mysqlNode1 ndbd[2767]: 2024-08-07 07:33:11 [ndbd] INFO -- Angel connected to '172.15.1.10:1186'
Aug 07 07:33:11 mysqlNode1 ndbd[2767]: 2024-08-07 07:33:11 [ndbd] INFO -- Angel allocated nodeid: 2
Aug 07 07:33:11 mysqlNode1 systemd[1]: Started ndbd.service - MySQL NDB Data Node Daemon.
Artık 3üncü adımımıza geçebiliriz ve MySQL server kurulumumuzu yapabiliriz.
Not: Bu 2 inci adımın tüm işlemlerinin aynısını Node2 üzerinde de yapmayı unutmayınız.
3. Adım – MySQL Server Kurulum ve Konfigurasyonu
Bu adımdaki kurulumları yapmak için, mysqlMaster (ClusterMaster) sunucumuza bağlanıyoruz ve kurulumlara başlıyoruz.
Öncelikle aşağıdaki komut ile gerekli dosyaları indirelim.
wget https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster_8.4.0-1debian12_amd64.deb-bundle.tar
Sonrasında, kurulum dosyalarını çıkaracağımız klasörü oluşturalım ve dosyaları bu klasöre çıkaralım:
mkdir install
tar -xvf mysql-cluster_8.0.31-1ubuntu20.04_amd64.deb-bundle.tar -C install/
Devamında, aşağıdaki komutları sırası ile çalıştıralım:
cd install
sudo apt install libaio1 libmecab2
sudo dpkg -i *.deb
sudo apt install -f
Akabinde, aşağıdaki komut ile MySQL config dosyamızı düzenlemek için aşağıdaki komutu çalıştıralım:
sudo nano /etc/mysql/my.cnf
Dosyanın en altına aşağıdaki satırları ekleyelim:
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=172.15.1.10 # location of management server
Ve hemen sonrasında mysql servisini restart edelim:
sudo systemctl restart mysql
Böylelikle kurulumlarımızı tamamladık ve bundan sonraki adımda kurulumumuzun testlerini yapacağız.
4.Adım – MySQL Cluster Test
Bu noktada, MySQL çoklu düğüm kümesi çalışır durumdadır. Şimdi, onu test etme zamanı. İlk olarak, aşağıdaki komutu kullanarak MySQL kabuğuna giriş yapalım:
mysql -u root -p
Login olduktan sonra aşağıdaki komutu çalıştıralım:
SHOW ENGINE NDB STATUS \G
Komutun çıktısı aşağıdaki gibi olmalıdır:
*************************** 1. row ***************************
Type: ndbclus
Name: connection
Status: cluster_node_id=4, connected_host=172.15.1.10, connected_port=1186, number_of_data_nodes=2, number_of_ready_data_nodes=2, connect_count=0
*************************** 2. row ***************************
Type: ndbclus
Name: NdbTransaction
Status: created=2, free=2, sizeof=392
*************************** 3. row ***************************
Type: ndbclus
Name: NdbOperation
Status: created=4, free=4, sizeof=944
*************************** 4. row ***************************
Type: ndbclus
Name: NdbIndexScanOperation
Status: created=0, free=0, sizeof=1152
*************************** 5. row ***************************
Type: ndbclus
Name: NdbIndexOperation
Status: created=0, free=0, sizeof=952
*************************** 6. row ***************************
Type: ndbclus
Name: NdbRecAttr
Status: created=0, free=0, sizeof=88
*************************** 7. row ***************************
Type: ndbclus
Name: NdbApiSignal
Status: created=16, free=16, sizeof=144
*************************** 8. row ***************************
Type: ndbclus
Mysql konsolundan çıkalım.
EXIT;
Burada, aşağıdaki komutu kullanarak Küme yönetim konsolunu açalım:
ndb_mgm
Sonrasında, aşağıdaki komutu çalıştırarak, cluster tesimizi tamamlayalım, sizin komut çıktınızda aşağıdaki gibi olmalıdır:
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @172.15.1.11 (mysql-8.4.0 ndb-8.4.0, Nodegroup: 0, *)
id=3 @172.15.1.12 (mysql-8.4.0 ndb-8.4.0, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @172.15.1.10 (mysql-8.4.0 ndb-8.4.0)
[mysqld(API)] 1 node(s)
id=4 @172.15.1.10 (mysql-8.4.0 ndb-8.4.0)
Böylelikle işlemlerimizin sonuna gelmiş olduk, Ben tekrar bu MySQL’i Zabbix için kullanıp teslerime devam edeceğim.