如何在Debian 10上設置3節點MySQL 8集群

如何在Debian 10上設置3節點MySQL 8集群

MySQL是一個免費的開源關係數據庫管理系統。它用於存儲數據以用於各種目的,包括數據倉庫,電子商務和日誌記錄應用程序。 MySQL Cluster是一種以低成本提供可伸縮性和可用性的技術。

在本教程中,您將使用一個主節點存儲集群配置,並使用兩個數據節點存儲集群數據。每個節點的IP地址如下所示。

  • 主節點或管理者節點104.245.33.61
  • 數據節點1-104.245.32.195
  • 數據節點2-69.87.218.169

先決條件

  • 三台運行Debian 10的服務器(一台用於管理器節點,另一台用於數據節點)。
  • 為每台服務器設置了root密碼。

入門

首先,您需要將所有服務器更新到最新版本。您可以使用以下命令更新所有內容:

apt-get update -y

所有服務器更新完畢後,您可以繼續執行下一步。

MySQL Cluster Manager安裝和設置

首先,您需要在主節點上安裝MySQL Cluster Management Package。默認情況下,該軟件包不包含在Debian 10默認存儲庫中。因此,您需要從MySQL官方下載它 網站..

您可以使用以下命令下載它。

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

下載deb文件後,請使用以下命令進行安裝:

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

安裝完成後,使用以下命令創建一個目錄來存儲您的集群配置。

mkdir /var/lib/mysql-cluster

然後使用以下命令創建一個新的配置文件:

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

添加以下行。

[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

完成後,保存文件,將其關閉,然後使用以下命令啟動集群管理器:

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

您應該獲得以下輸出:

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

現在,使用以下命令殺死正在運行的服務器:

pkill -f ndb_mgmd

接下來,為MySQL Cluster Manager創建一個systemd服務文件來管理服務。

nano /etc/systemd/system/ndb_mgmd.service

添加以下行。

[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

保存並關閉文件,然後使用以下命令重新加載systemd守護程序:

systemctl daemon-reload

然後啟動集群管理器,並使用以下命令使集群管理器在系統重新引導時啟動。

systemctl start ndb_mgmdsystemctl enable ndb_mgmd

現在,您可以使用以下命令檢查服務的狀態:

systemctl status ndb_mgmd

您應該獲得以下輸出:

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

完成後,您可以繼續下一步。廣告

數據節點安裝和配置

然後在另一台服務器上創建一個數據節點程序包,並將其配置為與MySQL Cluster Manager通信。

首先,使用以下命令在兩個數據節點上安裝所需的依賴項:

apt-get install libclass-methodmaker-perl -y

安裝所有依賴項後,請使用以下命令下載最新版本的MySQL數據節點deb文件。

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

下載完成後,使用以下命令安裝下載的文件。

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

默認情況下,數據節點將所有配置保存在/etc/my.cnf文件中。

因此,使用以下命令在兩個數據節點上創建一個新的/etc/my.cnf文件。

nano /etc/my.cnf

如下所示添加群集IP。

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

保存並關閉文件,然後在兩個數據節點上創建一個數據目錄。

mkdir -p /usr/local/mysql/data

現在,使用以下命令啟動數據節點:

ndbd

您應該獲得以下輸出:

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

然後使用以下命令殺死正在運行的ndbd進程:

pkill -f ndbd

然後,使用以下命令在兩個數據節點上創建ndbd systemd服務文件。

nano /etc/systemd/system/ndbd.service

添加以下行。

[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

保存並關閉文件,然後使用以下命令重新加載systemd守護程序:

systemctl daemon-reload

然後啟動ndbd服務,並使用以下命令在系統重新引導時啟動它。

systemctl start ndbdsystemctl enable ndbd

您還可以使用以下命令檢查ndbd服務的狀態:

systemctl status ndbd

您應該獲得以下輸出:

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

MySQL服務器安裝與配置

然後下載MySQL服務器和客戶端軟件包,並將它們安裝在MySQL集群管理器節點上。

首先,使用以下命令下載最新版本的MySQL Cluster Bundle:

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

然後使用以下命令將下載的文件解壓縮到/ opt目錄中。

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

然後將目錄更改為/ opt並使用以下命令安裝所需的依賴項。

cd /optapt-get install libaio1 libmecab2 libnuma1 psmisc -y

然後使用以下命令安裝MySQL Common deb文件:

dpkg -i mysql-common*

然後使用以下命令安裝MySQL客戶端軟件包:

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.debdpkg -i mysql-client_8.0.24-1debian10_amd64.debdpkg -i mysql-cluster-community-server*

如果遇到依賴項錯誤,請運行以下命令:

apt-get install -f

然後使用以下命令安裝MySQL Server軟件包:

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

在安裝過程中,系統將提示您設置MySQL根密碼。

安裝MySQL服務器後,您需要編輯MySQL主配置文件以定義集群IP。

nano /etc/mysql/my.cnf

添加以下行。

[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

完成後,保存文件並關閉它。然後重新啟動MySQL服務,以便可以在系統重新啟動時啟動它。

systemctl restart mysqlsystemctl enable mysql

您可以使用以下命令檢查MySQL服務器的狀態:

systemctl status mysql

您應該看到以下輸出:

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

完成後,您可以繼續下一步。

測試一個MySQL集群

您已經成功安裝並配置了3節點MySQL集群。接下來,您需要檢查其是否正常運行。

首先,登錄到MySQL Cluster Manager節點,然後使用以下命令登錄到MySQL:

mysql -u root -p

輸入MySQL的root密碼,並使用以下命令檢查集群信息。

mysql> SHOW ENGINE NDB STATUS G

如果一切正常,您應該獲得以下輸出:

*************************** 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)

然後使用以下命令退出MySQL Shell:

mysql> exit

然後運行另一個測試以驗證群集是否正常運行。

使用以下命令連接集群管理控制台:

ndb_mgm

您應該看到以下輸出:

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

然後運行以下命令以檢查所有數據。

ndb_mgm> SHOW

您應該獲得以下輸出:

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)

要檢查第一個數據節點的狀態,請運行以下命令:

ndb_mgm> 2 STATUS

您應該看到以下輸出:

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

要檢查第二個數據節點的狀態,請運行以下命令:

ndb_mgm> 3 STATUS

您應該看到以下輸出:

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

結論

恭喜!您已經在Debian 10服務器上成功安裝並設置了3節點MySQL集群。現在,您可以在生產環境中使用此設置,以實現可伸縮性和可用性。

Source

Sidebar