MySQL Cluster 集群部署
一、MySQL Cluster介紹
1. 基本概念
??MySQL Cluster簡單地講是一種MySQL集群的技術,是由一組計算機構成,每臺計算機可以存放一個或者多個節點,其中包括MySQL服務器,DNB Cluster的數據節點,管理其他節點,以及專門的數據訪問程序,這些節點組合在一起,就可以為應用提高可高性能、高可用性和可縮放性的Cluster數據管理
2. 訪問過程
??應用通常使用一定的負載均衡算法將對數據訪問分散到不同的SQL節點,SQL節點對數據節點進行數據訪問并從數據節點返回數據結果,管理節點僅僅只是對SQL節點和數據節點進行配置管理。MySQL NDB Cluster架構如圖如下:
3. MySQL Cluster 節點
3.1.管理節點:
??管理節點主要是用來對其他的節點進行管理。通常通過配置config.ini文件來配置集群中有多少需要維護的副本、配置每個數據節點上為數據和索引分配多少內存、IP地址、以及在每個數據節點上保存數據的磁盤路徑;
??管理節點通常管理Cluster配置文件和Cluster日志。Cluster中的每個節點從管理服務器檢索配置信息,并請求確定管理服務器所在位置的方式。如果節點內出現新的事件的時候,節點將這類事件的信息傳輸到管理服務器,將這類信息寫入到Cluster日志中;
一般在MySQL Cluster體系中至少需要一個管理節點,另外值得注意的是,因為數據節點和SQL節點在啟動之前需要讀取Cluster的配置信息,所以通常管理節點是最先啟動的;
3.2.SQL節點:
??SQL節點可以理解為應用程序和數據節點的一個橋梁,簡單地講就是mysqld服務器,應用不能直接訪問數據節點,只能通過SQL節點訪問數據節點來返回數據。任何一個SQL節點都是連接到所有的存儲節點的,所以當任何一個存儲節點發生故障的時候,SQL節點都可以把請求轉移到另一個存儲節點執行。通常來講,SQL節點越多越好,因為SQL節點越多,分配到每個SQL節點的負載就越小,系統的整體性能就越好;
3.3.數據節點:
??數據節點用來存放Cluster里面的數據,可以有很多個,MySQL Cluster在各個數據節點之間復制數據,任何一個節點發生了故障,始終會有另外的數據節點存儲數據。
二、卸載原有MySQL
1. 使用yum卸載
yum -y remove mysql mysql-server mysql-libs mysql-server2. 使用rpm查看并卸載
rpm -qa | grep -i mysql rpm -e MySQL-*3. 刪除MySQL相關分散文件夾
for i in ` find / -name mysql`; do rm -rf $i; done4. 刪除配置文件及默認密碼
rm -rf /etc/my.cnf rm -rf /root/.mysql_sercret三、MySQL Cluster的安裝
1. 節點配置說明
| 管理節點 | 192.168.75.11 | mgr |
| SQL節點 | 192.168.75.12 | ndb01 |
| SQL節點 | 192.168.75.13 | ndb02 |
| 數據節點 | 192.168.75.14 | ndb03 |
| 數據節點 | 192.168.75.15 | ndb04 |
2. 修改 /etc/hosts文件
??在/etc/hosts文件中追加如下信息,使局域網內集群可以通過主機名稱訪問(/etc/my.cnf、/data/mysql/config.ini配置文件中都以主機名作為參數):
192.168.75.11 mgr 192.168.75.12 ndb01 192.168.75.13 ndb02 192.168.75.14 ndb03 192.168.75.15 ndb043. 使用迅雷下載MySQL Cluster:
??Mysql Cluster
4. 安裝SQL節點,在ndb01、ndb02進行如下操作:
1) 創建MySQL用戶和組:
[root@localhost ~]# userdel mysql [root@localhost ~]# groupadd mysql[root@localhost ~]# useradd -g mysql mysql[root@localhost ~]# passwd mysql2) 創建MySQL文件存放路徑:
[root@localhost ~]# mkdir -p /data/mysql/db_file [root@localhost ~]# mkdir -p /data/mysql/bin_log [root@localhost ~]# mkdir -p /data/mysql/log3) 解壓安裝包并移動到/usr/local/mysql:
[root@localhost ~]# tar -xvf mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64.tar.gz [root@localhost ~]#mv mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64 /usr/local/mysql4) 更改/usr/local/mysql、/data的用戶和組:
[root@localhost ~]# chown -R mysql:mysql /data [root@localhost ~]# chown -R mysql:mysql /usr/local/mysql5) 安裝數據庫系統
[root@localhost ~]# su - mysql [mysql@localhost~]$/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/db_file/注意:記錄初始化數據庫生成的登陸MySQL數據庫root賬戶的臨時密碼
6) 創建/etc/my.cnf文件并添加SQL節點配置:
[mysqld] character_set_server=utf8 collation_server=utf8_bin max_allowed_packet = 128M event_scheduler =1 open_files_limit = 20480 max_connections = 3000 default-storage-engine=ndbcluster basedir=/usr/local/mysql/ datadir=/data/mysql/db_file user=mysql log-error=/data/mysql/log/sqlnode.err ndbcluster ndb-connectstring=mgr [mysql_cluster] ndb-connectstring=mgr7) 切換到root用戶添加環境變量:
在/ect/profile文件中添加:
export PATH =$PATH:/usr/local/mysql/bin保存退出,并且執行:
[root@localhost ~]# source /etc/profile8) 編輯 ~/.bashrc 并添加:source /etc/profile 使環境變量永久生效
9) 拷貝MySQL啟動文件并啟動MySQL
[root@localhost ~]#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server [root@localhost ~]#su - mysql [mysql@localhost ~]$/usr/local/mysql/support-files/mysql.server start [mysql@localhost ~]$/usr/local/mysql/bin/mysqld_safe --defaults-file=/ect/my.cnf --user=mysql &10) 進入數據庫并修改臨時密碼
[mysql@localhost ~]$ /usr/local/mysql/bin/mysql -u root -p Enter password:********* mysql> set password='root'; mysql> flush privileges;11) 重新登陸測試密碼后退出,關閉MySQL:
[mysql@localhost ~]$/usr/local/mysql/support-files/mysql.server stop5. 安裝數據節點,在ndb03、ndb04進行如下操作:
1) 創建用戶和組
[root@localhost ~]# userdel mysql [root@localhost ~]# groupadd mysql [root@localhost ~]# useradd -g mysql mysql [root@localhost ~]# passwd mysql2) 解壓安裝包并移動到/usr/local/mysql:
[root@localhost ~]# tar -xvf mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64.tar.gz [root@localhost ~]#mv mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64 /usr/local/mysql3) 創建MySQL文件存放路徑:
[root@localhost ~]# mkdir -p /data/mysql/db_file [root@localhost ~]# mkdir -p /data/mysql/log4) 創建 /etc/my.cnf 文件并添加SQL節點配置:
[mysqld] basedir=/usr/local/mysql/ datadir=/data/mysql/db_file user=mysql log-error=/data/mysql/log/sqlnode.err ndbcluster ndb-connectstring=mgr [mysql_cluster] ndb-connectstring=mgr5) 切換到root用戶添加環境變量:
在 /ect/profile 文件中添加:
export PATH =$PATH:/usr/local/mysql/bin保存退出,并且執行:
[root@localhost ~]# source /etc/profile6) 編輯 ~/.bashrc 并添加:source /etc/profile使環境變量永久生效
7) 注:建議用上述方式,因為以后使用過程中,可能會使用其他的管理工具查詢集群狀態,如 ndb_cofig 等。或者直接scp sql節點 將ndbd、ndbmtd拷貝至/usr/local/bin/目錄中
6. 安裝管理節點,在mgr進行如下操作:
1) 解壓安裝包并移動到/usr/local/mysql:
[root@localhost ~]# tar -xvf mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64.tar.gz [root@localhost ~]#mv mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64 /usr/local/mysql2) 創建管理節點文件存放路徑:
[root@localhost ~]# mkdir -p /data/mysql-cluster3) 切換到root用戶添加環境變量:
在 /ect/profile 文件中添加:
export PATH =$PATH:/usr/local/mysql/bin保存退出,并且執行:
[root@localhost ~]# source /etc/profile4) 編輯 ~/.bashrc 并添加: source /etc/profile 使環境變量永久生效
5) 創建并編輯管理節點配置文件:
[root@mgr ~]# vi /data/mysql-cluster/config.ini [ndbd default] # Number of data nodes NoOfReplicas=2 DataMemory=1024M StringMemory=5M MaxNoOfTables=1024 MaxNoOfAttributes=5000000 MaxNoOfOrderedIndexes=10000 MaxNoOfTriggers=10240 MaxNoOfConcurrentTransactions=4096 MaxNoOfLocalOperations=110000 MaxNoOfConcurrentOperations=100000 TransactionDeadLockDetectionTimeOut=15000[ndb_mgmd] NodeId=1 hostname=mgr datadir=/data/mysql-cluster[ndbd] NodeId=2 hostname=ndb03 datadir=/data/mysql/db_file StopOnError=0[ndbd] NodeId=3 hostname=ndb04 datadir=/data/mysql/db_file StopOnError=0[mysqld] NodeId=4 hostname=ndb01[mysqld] NodeId=5 hostname=ndb02四、啟動MySQL Cluster
??Cluster需要各個節點都進行啟動后才可以運行,節點的啟動順序為:
????管理節點——>數據節點——>SQL節點
??注:需要關閉各節點防火墻:
????[root@localhosrt ~]# systemctl stop firewalld
????[root@localhosrt ~]# systemctl disable firewalld
a) 啟動管理節點:
# 第一次啟動或者修改config.ini后需添加 –initial 進行初始化: [root@mgr mysql-cluster]# ndb_mgmd -f ./config.ini –initial # 啟動成功只提示: # MySQL Cluster Management Server mysql-5.7.23 ndb-7.6.7 # 查看進程: # [root@mgrmysql-cluster]# ps aux |grep ndb_mgmdb) 啟動數據節點
# 第一次啟動是添加 --initial,初始化數據節點,如在有數據情況下,該參數將刪除所有數據) [root@strong local]# ndbd --initial # 數據節點啟動成功提示: # 2020-03-26 15:37:48 [ndbd] INFO -- Angel connected to 'mgr:1186' # 2020-03-26 15:37:48 [ndbd] INFO -- Angel allocated nodeid: 3c) 啟動SQL節點
[root@ndb01 ~]# service mysql.server start[root@ndb02 ~]# service mysql.server startd) 節點全部啟動成功可通過管理節點查看狀態
—虛擬機不給力,臨時改用1個數據節點
[root@mgr ~]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 1 node(s) id=2 @192.168.75.14 (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0, *)[ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.75.11 (mysql-5.7.23 ndb-7.6.7)[mysqld(API)] 2 node(s) id=4 @192.168.75.12 (mysql-5.7.23 ndb-7.6.7) id=5 @192.168.75.13 (mysql-5.7.23 ndb-7.6.7)??ndb_mgm是ndb_mgmd(MySQL Cluster Server)的客戶端管理工具,通過它可以方便的檢查Cluster的狀態、啟動備份、關閉Cluster等功能。
通過上面的狀態信息,可以看到:
1)集群的管理服務端口是1186;
Connected to Management Server at: localhost:1186
2)集群的數據節點有1個;
[ndbd(NDB)] 1 node(s) id=2 @192.168.75.14 (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0, *)3)管理節點有一個;
[ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.75.11 (mysql-5.7.23 ndb-7.6.7)4)SQL節點有2個,且處于連接狀態;
id=4 @192.168.75.12 (mysql-5.7.23 ndb-7.6.7) id=5 @192.168.75.13 (mysql-5.7.23 ndb-7.6.7)五、測試Cluster
??使用Cluster,則表的存儲引擎必須為NDB,其他類型存儲引擎的數據不會保存到數據節點中,對于CLuster的一個重要功能就是防止單點故障
??在任意節點中新創建database,添加存儲引擎未NDB的表,都可在另外一個SQL節點中查詢到。數據一致。
關閉Cluster
[root@mgr ~]# ndb_mgm ndb_mgm>shutdown# 集群管理節點關閉后,數據節點自動關閉,SQL節點另需收到手動關閉。安裝過程所遇問題解決方式
問題1-1:初始化SQL節點之前使用yum安裝 libaio
yum install -y libaio //安裝后在初始化就OK了問題1-2:配置文件中盡量不要粘貼windows復制過來的空格,特別是數字前后
問題1-3:關閉各節點防火墻:[root@localhosrt ~]# systemctl stop firewalld
或者通過防火墻打開所需端口,不然管理節點與數據節點、SQL節點連接不上。
總結
以上是生活随笔為你收集整理的MySQL Cluster 集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 织梦模板被植入index.html,织梦
- 下一篇: 一天外汇交易走势时间分布