GNU/Linux >> Belajar Linux >  >> Debian

Cara Setup Tiga Node MySQL 8 Cluster di Debian 10

MySQL adalah sistem manajemen database relasional, open-source, dan gratis. Ini digunakan untuk menyimpan data dalam berbagai tujuan termasuk, pergudangan data, e-commerce, dan aplikasi logging. MySQL Cluster adalah teknologi yang menyediakan skalabilitas dan ketersediaan dengan biaya rendah.

Dalam tutorial ini, kita akan menggunakan satu node master untuk menyimpan konfigurasi cluster dan dua node data untuk menyimpan data cluster. Alamat IP setiap node ditunjukkan di bawah ini:

  • Node Master atau Manajer - 104.245.33.61
  • Data Node1 - 104.245.32.195
  • Data Node2 - 69.87.218.169

Prasyarat

  • Tiga server menjalankan Debian 10, satu untuk node manajer dan yang lainnya adalah node data.
  • Kata sandi root disiapkan di setiap server.

Memulai

Pertama, Anda perlu memperbarui semua server ke versi terbaru. Anda dapat memperbarui semua dengan perintah berikut:

apt-get update -y

Setelah semua server diperbarui, Anda dapat melanjutkan ke langkah berikutnya.

Instal dan Siapkan Manajer Cluster MySQL

Pertama, Anda perlu menginstal paket manajemen cluster MySQL pada node Master. Secara default, paket ini tidak disertakan dalam repositori default Debian 10. Jadi, Anda perlu mengunduhnya dari situs web resmi MySQL.

Anda dapat mengunduhnya dengan perintah berikut:

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb

Setelah mengunduh file deb, instal menggunakan perintah berikut:

dpkg -i mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb

Setelah instalasi selesai, buat direktori untuk menyimpan konfigurasi cluster dengan perintah berikut:

mkdir /var/lib/mysql-cluster

Selanjutnya, buat file konfigurasi baru dengan perintah berikut:

nano /var/lib/mysql-cluster/config.ini

Tambahkan baris berikut:

[ndbd default]
NoOfReplicas=2  # Number of replicas

[ndb_mgmd]
# Management process options:
hostname=104.245.33.61 #IP of the MySQL Cluster Manager
datadir=/var/lib/mysql-cluster
[ndbd]
hostname=104.245.32.195 #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=69.87.218.169 #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=104.245.33.61 #IP of the MySQL Cluster Manager

Simpan dan tutup file jika sudah selesai kemudian jalankan cluster manager dengan perintah berikut:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

Anda akan mendapatkan output berikut:

MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.24
2021-05-10 08:23:05 [MgmtSrvr] INFO     -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2021-05-10 08:23:05 [MgmtSrvr] INFO     -- Sucessfully created config directory

Sekarang, matikan server yang sedang berjalan dengan perintah berikut:

pkill -f ndb_mgmd

Selanjutnya, buat file layanan systemd untuk MySQL Cluster Manager untuk mengelola layanan:

nano /etc/systemd/system/ndb_mgmd.service

Tambahkan baris berikut:

[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

Simpan dan tutup file kemudian muat ulang daemon systemd dengan perintah berikut:

systemctl daemon-reload

Selanjutnya, mulai Cluster Manager dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:

systemctl start ndb_mgmd
systemctl enable ndb_mgmd

Anda sekarang dapat memeriksa status layanan dengan perintah berikut:

systemctl status ndb_mgmd

Anda akan mendapatkan output berikut:

    ? ndb_mgmd.service - MySQL NDB Cluster Management Server
   Loaded: loaded (/etc/systemd/system/ndb_mgmd.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:23:53 UTC; 6s ago
  Process: 984 ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini (code=exited, status=0/SUCCESS)
 Main PID: 985 (ndb_mgmd)
    Tasks: 12 (limit: 2359)
   Memory: 6.5M
   CGroup: /system.slice/ndb_mgmd.service
           ??985 /usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

May 10 08:23:53 master systemd[1]: Starting MySQL NDB Cluster Management Server...
May 10 08:23:53 master ndb_mgmd[984]: MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.24
May 10 08:23:53 master systemd[1]: Started MySQL NDB Cluster Management Server.

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Instal dan Konfigurasi Node Data

Selanjutnya, kita akan membuat paket data node di server lain dan mengkonfigurasinya untuk berkomunikasi dengan MySQL Cluster Manager.

Pertama, instal dependensi yang diperlukan pada kedua node data dengan perintah berikut:

apt-get install libclass-methodmaker-perl -y

Setelah semua dependensi terinstal, unduh file deb MySQL Data Nodes versi terbaru dengan perintah berikut:

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb

Setelah unduhan selesai, instal file yang diunduh dengan perintah berikut:

dpkg -i mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb

Secara default, node data menyimpan semua konfigurasi di file /etc/my.cnf.

Jadi buat file /etc/my.cnf baru di kedua node data dengan perintah berikut:

nano /etc/my.cnf

Tambahkan IP cluster seperti yang ditunjukkan di bawah ini:

[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=104.245.33.61 #IP of the MySQL Cluster Manager

Simpan dan tutup file kemudian buat direktori data pada kedua node data:

mkdir -p /usr/local/mysql/data

Sekarang, mulai node data dengan perintah berikut:

ndbd

Anda akan mendapatkan output berikut:

2021-05-10 08:27:13 [ndbd] INFO     -- Angel connected to '104.245.33.61:1186'
2021-05-10 08:27:13 [ndbd] INFO     -- Angel allocated nodeid: 2

Selanjutnya, matikan proses ndbd yang sedang berjalan dengan perintah berikut:

pkill -f ndbd

Selanjutnya, buat file layanan systemd untuk ndbd di kedua node data dengan perintah berikut:

nano /etc/systemd/system/ndbd.service

Tambahkan baris berikut:

[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

Simpan dan tutup file kemudian muat ulang daemon systemd dengan perintah berikut:

systemctl daemon-reload

Selanjutnya, jalankan layanan ndbd dan buat untuk memulai pada sistem reboot dengan perintah berikut:

systemctl start ndbd
systemctl enable ndbd

Anda juga dapat memeriksa status layanan ndbd menggunakan perintah berikut:

systemctl status ndbd

Anda akan mendapatkan output berikut:

? ndbd.service - MySQL NDB Data Node Daemon
   Loaded: loaded (/etc/systemd/system/ndbd.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:28:28 UTC; 12s ago
  Process: 740 ExecStart=/usr/sbin/ndbd (code=exited, status=0/SUCCESS)
 Main PID: 741 (ndbd)
    Tasks: 46 (limit: 2359)
   Memory: 827.1M
   CGroup: /system.slice/ndbd.service
           ??741 /usr/sbin/ndbd
           ??742 /usr/sbin/ndbd

May 10 08:28:28 data1 systemd[1]: Starting MySQL NDB Data Node Daemon...
May 10 08:28:28 data1 ndbd[740]: 2021-05-10 08:28:28 [ndbd] INFO     -- Angel connected to '104.245.33.61:1186'
May 10 08:28:28 data1 ndbd[740]: 2021-05-10 08:28:28 [ndbd] INFO     -- Angel allocated nodeid: 2
May 10 08:28:28 data1 systemd[1]: Started MySQL NDB Data Node Daemon.

Instal dan Konfigurasi Server MySQL

Selanjutnya kita akan mendownload dan menginstal paket MySQL Server dan Client pada MySQL Cluster Manager Node.

Pertama, unduh versi terbaru MySQL Cluster Bundle menggunakan perintah berikut:

wget https://cdn.mysql.com/Downloads/MySQL-Cluster-8.0/mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar

Selanjutnya, ekstrak file yang diunduh di dalam direktori /opt dengan perintah berikut:

tar -xvf mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar -C /opt

Selanjutnya, ubah direktori ke /opt dan instal dependensi yang diperlukan dengan perintah berikut:

cd /opt
apt-get install libaio1 libmecab2 libnuma1 psmisc -y

Selanjutnya, instal file MySQL Common deb dengan perintah berikut:

dpkg -i mysql-common*

Selanjutnya, instal paket MySQL Client dengan perintah berikut:

dpkg -i mysql-cluster-community-client_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-core_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-plugins_8.0.24-1debian10_amd64.deb
dpkg -i mysql-client_8.0.24-1debian10_amd64.deb
dpkg -i mysql-cluster-community-server*

Jika Anda mendapatkan kesalahan ketergantungan, jalankan perintah berikut:

apt-get install -f

Selanjutnya, instal paket MySQL Server dengan perintah berikut:

dpkg -i mysql-server_8.0.24-1debian10_amd64.deb

Selama instalasi, Anda akan diminta untuk menyetel kata sandi root MySQL.

Setelah menginstal server MySQL, Anda perlu mengedit file konfigurasi utama MySQL dan menentukan IP cluster:

nano /etc/mysql/my.cnf

Tambahkan baris berikut:

[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=104.245.33.61  #IP of the MySQL Cluster Manager

Simpan dan tutup file setelah Anda selesai. Selanjutnya, restart layanan MySQL dan aktifkan untuk memulai pada sistem reboot:

systemctl restart mysql
systemctl enable mysql

Anda dapat memeriksa status server MySQL dengan perintah berikut:

systemctl status mysql

Anda akan melihat output berikut:

? mysql.service - MySQL Cluster Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:35:04 UTC; 7s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 1950 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 1985 (mysqld)
   Status: "Server is operational"
    Tasks: 47 (limit: 2359)
   Memory: 372.0M
   CGroup: /system.slice/mysql.service
           ??1985 /usr/sbin/mysqld

May 10 08:35:01 master systemd[1]: Starting MySQL Cluster Community Server...
May 10 08:35:04 master systemd[1]: Started MySQL Cluster Community Server.

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Uji Cluster MySQL

Sekarang, kami telah berhasil menginstal dan mengkonfigurasi Cluster MySQL tiga node. Selanjutnya, Anda perlu memverifikasi apakah itu berfungsi atau tidak.

Pertama, login ke node MySQL Cluster Manager dan login ke MySQL dengan perintah berikut:

mysql -u root -p

Berikan kata sandi root MySQL Anda kemudian periksa informasi cluster dengan perintah berikut:

mysql> SHOW ENGINE NDB STATUS \G

Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut:

*************************** 1. row ***************************
  Type: ndbclus
  Name: connection
Status: cluster_node_id=4, connected_host=104.245.33.61, 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
  Name: NdbLabel
Status: created=0, free=0, sizeof=200
*************************** 9. row ***************************
  Type: ndbclus
  Name: NdbBranch
Status: created=0, free=0, sizeof=32
*************************** 10. row ***************************
  Type: ndbclus
  Name: NdbSubroutine
Status: created=0, free=0, sizeof=72
*************************** 11. row ***************************
  Type: ndbclus
  Name: NdbCall
Status: created=0, free=0, sizeof=24
*************************** 12. row ***************************
  Type: ndbclus
  Name: NdbBlob
Status: created=0, free=0, sizeof=592
*************************** 13. row ***************************
  Type: ndbclus
  Name: NdbReceiver
Status: created=0, free=0, sizeof=128
*************************** 14. row ***************************
  Type: ndbclus
  Name: NdbLockHandle
Status: created=0, free=0, sizeof=48
*************************** 15. row ***************************
  Type: ndbclus
  Name: binlog
Status: latest_epoch=897648164875, latest_trans_epoch=820338753551, latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0, latest_applied_binlog_epoch=0
15 rows in set (0.00 sec)

Sekarang, keluar dari shell MySQL dengan perintah berikut:

mysql> exit

Sekarang, kami akan melakukan pengujian lain untuk memastikan bahwa cluster berfungsi dengan baik.

Hubungkan konsol manajemen Cluster dengan perintah berikut:

ndb_mgm

Anda akan melihat output berikut:

-- NDB Cluster -- Management Client --
ndb_mgm>

Sekarang, jalankan perintah berikut untuk memeriksa semua data ndoes:

ndb_mgm> SHOW

Anda akan mendapatkan output berikut:

Connected to Management Server at: 104.245.33.61:1186
Cluster Configuration
---------------------
[ndbd(NDB)]	2 node(s)
id=2	@104.245.32.195  (mysql-8.0.24 ndb-8.0.24, Nodegroup: 0, *)
id=3	@69.87.218.169  (mysql-8.0.24 ndb-8.0.24, Nodegroup: 0)

[ndb_mgmd(MGM)]	1 node(s)
id=1	@104.245.33.61  (mysql-8.0.24 ndb-8.0.24)

[mysqld(API)]	1 node(s)
id=4	@104.245.33.61  (mysql-8.0.24 ndb-8.0.24)

Untuk memeriksa status node data pertama, jalankan perintah berikut:

ndb_mgm> 2 STATUS

Anda akan melihat output berikut:

Node 2: started (mysql-8.0.24 ndb-8.0.24)

Untuk memeriksa status node data kedua, jalankan perintah berikut:

ndb_mgm> 3 STATUS

Anda akan melihat output berikut:

Node 3: started (mysql-8.0.24 ndb-8.0.24)

Kesimpulan

Selamat! Anda telah berhasil menginstal dan menyiapkan Cluster MySQL tiga node di server Debian 10. Anda sekarang dapat menggunakan penyiapan ini di lingkungan produksi untuk mencapai skalabilitas dan ketersediaan.


Debian
  1. Cara menginstal Percona XtraDB Cluster untuk MySQL di Debian 8

  2. Cara Menginstal osquery di Debian 10

  3. Cara Menginstal MySQL di Debian 11

  1. Cara mengatur vsftpd di Debian

  2. Cara Menginstal MySQL di Debian 9

  3. Cara Setup Server Rsyslog di Debian 11

  1. Cara Memasang Cluster CockroachDB di Debian 11

  2. Cara Menginstal Cluster MySQL di Ubuntu 16.04

  3. Cara Menginstal Kerangka Komputasi Apache Spark Cluster di Debian 10