You are currently viewing MySQL HA Cluster Kurulumu

MySQL HA Cluster Kurulumu

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 SistemiUygulamalarIP
mysqlMasterDebian Linux 12ClusterManager172.15.1.10
MysqlNode1Debian Linux 12Mysql Node172.15.1.11
MysqlNode2Debian Linux 12Mysql Node172.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.

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.

Bir yanıt yazın