共計 9857 個字符,預計需要花費 25 分鐘才能閱讀完成。
這篇文章主要講解了“怎么配置 MySQL Cluster”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“怎么配置 MySQL Cluster”吧!
##MySQL Cluster 的配置說明
管理節點(1 個)10.10.10.9
SQL 節點(2 個)10.10.10.10
10.10.10.11
Data 節點(2 個)10.10.10.10
10.10.10.11
## 配置主機 IP
[root@mysql9 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mysql9 ## 因為是克隆的虛擬機,所以需要修改主機名
[root@mysql9 ~]# cat /etc/hosts
127.0.0.1 localhost mysql9 ## 因為是克隆的虛擬機,所以需要修改主機名,后面的主機名每臺機器不一樣。
10.10.10.9 mysql9
10.10.10.10 mysql10
10.10.10.11 mysql11
## 上面所做的操作,在所有服務器上面都要執行!
## 禁用 selinux
修改 /etc/selinux/config 文件
將 SELINUX=enforcing 改為 SELINUX=disabled
重啟機器即可。
查看 selinux 狀態:
[root@CentOS ~]# getenforce
## 關閉 iptables ## 這個不知道是什么東西,浪費我大量的時間,不關閉的話,啟動 Data 節點會報錯:
-bash-4.1$ ndbd –initial
Unable to connect with connect string: nodeid=0,10.10.10.9:1186
Retrying every 5 seconds. Attempts left: 12 11 10 9 8 7 6 5 4 3 2 1, failed.
2015-12-18 23:11:55 [ndbd] ERROR — Could not connect to management server, error:
## 下面關閉它:
[root@mysql9 ~]# service iptables stop
iptables:將鏈設置為政策 ACCEPT:filter [確定]
iptables:清除防火墻規則: [確定]
iptables:正在卸載模塊: [確定]
[root@mysql9 ~]# chkconfig iptables off
## 上面所做的操作,在所有服務器上面都要執行!
## 添加用戶和組
[root@db ~]# groupadd mysql
[root@db ~]# useradd -r -g mysql mysql
[root@localhost data]# passwd mysql
更改用戶 mysql 的密碼。
新的 密碼:
無效的密碼:過短
無效的密碼:過于簡單
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
## 上面所做的操作,在所有服務器上面都要執行!
##MySQL Cluster 的安裝配置
[root@CentOS tmp]# cd /tmp/
[root@CentOS tmp]# ll mysql-cluster-gpl-7.4.8-linux-glibc2.5-i686.tar.gz
-rw-r–r–. 1 root root 472807612 12 月 18 01:11 mysql-cluster-gpl-7.4.8-linux-glibc2.5-i686.tar.gz
[root@CentOS tmp]# tar zxf mysql-cluster-gpl-7.4.8-linux-glibc2.5-i686.tar.gz -C /usr/local/
[root@CentOS tmp]# cd /usr/local/
[root@CentOS local]# mv mysql-cluster-gpl-7.4.8-linux-glibc2.5-i686/ mysql
[root@CentOS local]# chown -R mysql:mysql /usr/local/mysql
[root@CentOS local]# vi /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
[root@localhost bin]# source /etc/profile
## 上面所做的操作,在所有服務器上面都要執行!
## 初始化數據庫
[root@CentOS local]# mkdir -p /data/3306
[root@CentOS local]# chown -R mysql:mysql /data
[root@CentOS local]# su – mysql
su: 警告:無法切換到目錄 /home/mysql: 沒有那個文件或目錄
-bash-4.1$ mkdir -p /home/mysql
mkdir: 無法創建目錄 /home/mysql : 權限不夠
-bash-4.1$ exit
logout
[root@CentOS local]# mkdir -p /home/mysql
[root@CentOS local]# su – mysql
-bash-4.1$ cd /usr/local/mysql
-bash-4.1$ ./scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/data/3306
-bash-4.1$ cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
-bash-4.1$ vi /etc/my.cnf
[client]
port = 3306
socket = /data/3306/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
user = mysql
socket = /data/3306/mysql.sock
pid-file = /data/3306/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3306
log-bin = /data/3306/mysql-bin
lower_case_table_names=1
max_connections=1000
character_set_server=utf8
character_set_client=utf8
[mysql]
default-character-set=utf8
[root@localhost mysql]# cd /usr/local/mysql
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod 777 /etc/rc.d/init.d/mysqld
[root@CentOS mysql]# service mysqld start
Starting MySQL….. [確定]
[root@CentOS mysql]# netstat -tulnp | grep mysql
tcp 0 0 :::3306 :::* LISTEN 2057/mysqld
[root@CentOS mysql]# service mysqld status
MySQL running (2057) [確定]
[root@CentOS mysql]# service mysqld stop
Shutting down MySQL.. [確定]
## 上面所做的操作,在所有服務器上面都要執行!由于我是虛擬機,就是做一遍,其它的復制。
# 管理節點,其實不需要 mysqld 二進制文件,只需要 MySQL Cluster 服務端程序(ndb_mgmd)和監聽客戶端程度(ndb_mgm)。
## 這里因為是克隆的虛擬機,就一起在管理節點上面也安裝了 mysqld 服務,但后面配置就不會再提到要配置它的地方了。
## 管理節點配置步驟
## 在 mysql 用戶下面執行!
(1)在服務器 10.10.10.9 的 /data 下創建目錄 mysql-cluster,并在目錄中創建配置文件 config.ini。
-bash-4.1$ cd /data/
-bash-4.1$ mkdir mysql-cluster
-bash-4.1$ cd mysql-cluster/
-bash-4.1$ touch config.ini
(2)根據這里的測試集群環境,config.ini 文件配置如下:
-bash-4.1$ vi config.ini
## 配置文件里面的配置,在等號兩邊最好加上空格,本人在這里是吃了大虧,耽誤了大量的時間、精力。
## 一度以為沒有是哪里沒有配對,結果后來最終發現還是配置文件的問題導致后面啟不來!
[ndbd default]
noofreplicas = 1 #每個數據節點的鏡像數量
datamemory = 50M #每個數據節點中給數據分配的內存(這個 M 一定要大寫)
indexmemory = 20M # 每個數據節點中給索引分配的內存
[ndb_mgmd]
# 配置管理節點
hostname = 10.10.10.9 #管理節點 IP
datadir = /data/mysql-cluster # 管理節點數據目錄,管理節點啟動成功后在該目錄下面會存在很多日志信息等。
[ndbd]
hostname = 10.10.10.10 ## 指定 data 節點選項
datadir = /data/mysql-cluster/data
[ndbd]
hostname = 10.10.10.11 ## 指定 data 節點選項
datadir = /data/mysql-cluster/data
[mysqld]
hostname = 10.10.10.10 ## 指定 sql 節點選項
[mysqld]
hostname = 10.10.10.11 ## 指定 sql 節點選項
上面的配置文件中,包括很多的組,組名用“[]”括起來,這里我們最關心的是 3 類節點組的配置,分別定義如下。
? [NDB_MGMD]:表示管理節點的配置,只能有一個。
? [NDBD DEFAULT]:表示每個數據節點的默認配置,在每個節點的 [NDBD] 中不用再寫這些選項。只能有一個。
? [NDBD]:表示每個數據節點的配置,可以有多個。
? [MYSQLD]:表示 SQL 節點的配置,可以有多個,分別寫上不同 SQL 節點的 IP 地址;也可以不用寫 IP 地址,只保留一個空節點,表示任意一個 IP 地址都可以進行訪問。此節點的個數表明了可以用來連接數據節點的 SQL 節點總數。
每個節點都要有一個獨立的 id 號,可以手工填寫,比如“id=2”,也可以不寫,系統會按照配置文件的填寫順序自動分配。
##SQL 節點和 Data 節點的配置
#SQL 節點,可以將之視為傳統的 MySQL Server。Data 節點,也是一個 MySQL Server,并在 my.cnf 中指定少數幾個參數即可。
## 這里由于環境限制,SQL 節點和 Data 節點的是放在同一臺虛擬機上面的,環境中其實也僅僅安裝了一個 mysqld 服務。后面提到的修改 my.cnf 配置,就是這個。
## 網上很多地方都提到 SQL 節點和 Data 節點跟普通的 mysqld 服務沒上面區別,要把普通的 mysqld 變為 SQL 節點和 Data 節點只需要在 my.cnf 配置里面添加少數幾個參數即可。
## 但我還是不太明白,后面啟動 Data 節點并沒有用到任何 mysqld 相關的大小,所以我理解,其實 Data 節點也是不需要安裝 mysqld 服務的。需要 bin 里面的命令。
## 在 mysql 用戶下面執行!在 10.10.10.10 和 10.10.10.11 上面都要做!
SQL 節點和數據節點的配置非常簡單,只需要在對 MySQL 的配置文件(my.cnf)中增加如下內容即可(參數含義見后面注釋):
[root@CentOS ~]# chown mysql:mysql /etc/my.cnf
[root@CentOS ~]# su – mysql
-bash-4.1$ vi /etc/my.cnf
[mysqld]
ndbcluster #運行 NDB 存儲引擎
ndb-connectstring=10.10.10.9 #定位管理節點
[mysql_cluster]
ndb-connectstring=10.10.10.9 #定位管理節點
[mysqld_safe]
log-error = /data/mysql-cluster/data/mysqld.log
pid-file = /data/mysql-cluster/data/mysqld.pid
## 創建目錄
-bash-4.1$ mkdir -p /data/mysql-cluster/data
##Cluster 的啟動
Cluster 需要各個節點都進行啟動后才可以運行,節點的啟動順序為管理節點 – 數據節點 – SQL 節點。
(1)在管理節點上,從系統 shell 發出下述命令以啟動管理節點進程:(10.10.10.9)
-bash-4.1$ pwd
/data/mysql-cluster
-bash-4.1$ ndb_mgmd -f ./config.ini
MySQL Cluster Management Server mysql-5.6.27 ndb-7.4.8
-bash-4.1$ ndb_mgm
— NDB Cluster — Management Client —
ndb_mgm show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 10.10.10.10) ## 可以看見未連接(not connected),這是因為還沒有啟動
id=3 (not connected, accepting connect from 10.10.10.11)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.10.9 (mysql-5.6.27 ndb-7.4.8)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 10.10.10.10) ## 可以看見未連接(not connected),這是因為還沒有啟動
id=5 (not connected, accepting connect from 10.10.10.11)
ndb_mgm exit
-bash-4.1$ ps -ef | grep ndb
mysql 2312 1785 0 18:58 pts/1 00:00:00 ndb_mgm
mysql 2457 1 0 19:24 ? 00:00:03 ndb_mgmd -f ./config.ini
mysql 2495 1595 0 19:31 pts/0 00:00:00 grep ndb
(2)在每臺數據節點服務器上(本例為 10.10.10.10 和 10.10.10.11),運行下述命令啟動 ndbd 進程:
ndbd 進程是使用 NDB 存儲引擎處理表中數據的進程。通過該進程,存儲節點能夠實現分布式事務管理、節點恢復、在線備份等相關的任務。
注意:僅應在首次啟動 ndbd 時,或在備份/恢復或配置變化后重啟 ndbd 時使用“–initial”參數,這很重要。原因在于,該參數會使節點刪除由早期 ndbd 實例創建的、用于恢復的任何文件,包括恢復用日志文件。
-bash-4.1$ ndbd –initial ##10.10.10.10
2015-12-19 01:29:05 [ndbd] INFO — Angel connected to 10.10.10.9:1186
2015-12-19 01:29:05 [ndbd] INFO — Angel allocated nodeid: 2
-bash-4.1$ ndbd –initial ##10.10.10.11
2015-12-19 01:37:36 [ndbd] INFO — Angel connected to 10.10.10.9:1186
2015-12-19 01:37:36 [ndbd] INFO — Angel allocated nodeid: 3
(3)依次啟動 SQL 節點上的 MySQL 服務(本例為 10.10.10.10 和 10.10.10.11)。
-bash-4.1$ service mysqld start
也可以用:-bash-4.1$ mysqld_safe –defaults-file=/etc/my.cnf 2 1 /dev/null
(4)節點全部成功啟動后,用 ndb_mgm 工具的 show 命令查看集群狀態:
##ndb_mgm 工具是 ndb_mgmd(MySQL Cluster Server)的客戶端管理工具,通過它可以方便地檢查 Cluster 的狀態、啟動備份、關閉 Cluster 等功能。
ndb_mgm show
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @10.10.10.10 (mysql-5.6.27 ndb-7.4.8, Nodegroup: 0, *)
id=3 @10.10.10.11 (mysql-5.6.27 ndb-7.4.8, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.10.9 (mysql-5.6.27 ndb-7.4.8)
[mysqld(API)] 2 node(s)
id=4 @10.10.10.10 (mysql-5.6.27 ndb-7.4.8)
id=5 @10.10.10.11 (mysql-5.6.27 ndb-7.4.8)
## 測試 MySQL Cluster
## 上文提到過,如果要使用 Cluster,則表的存儲引擎必須為 NDB,其他類型存儲引擎的數據將不會保存到數據節點中。
1.NDB 存儲引擎測試
(1)在任意一個 SQL 節點(這里用 10.10.10.10)的 test 庫中創建測試表 t1,設置存儲引擎為 NDB,并插入兩條測試數據:
mysql create table t1(id int) engine=ndb;
mysql insert into t1 values(1);
mysql insert into t1 values(2);
(2)在另外一個 SQL 節點(10.10.10.11),查詢 test 庫中的 t1 表,結果如下:
mysql select * from t1; ## 顯然,兩個 SQL 節點查詢到的數據是一致的。
(3)在 SQL 節點 10.10.10.10 上將測試表 t1 的存儲引擎改為 MyISAM,再次插入測試記錄:
mysql alter table t1 engine=myisam;
mysql insert into t1 values(3);
(4)在 SQL 節點 10.10.10.11 上再次查詢表 t1,結果如下:
mysql select * from t1; ## 可以發現,表 t1 已經無法查詢。
ERROR 1146 (42S02): Table test.t1 doesn t exist
(5)在 SQL 節點 10.10.10.10 上再次將 t1 的存儲引擎改為 NDB:
mysql alter table t1 engine=ndb;
(6)在 SQL 節點 10.10.10.11 上再次查詢,結果如下:
mysql select * from t1;
+——+
| id |
+——+
| 2 |
| 3 |
| 1 |
+——+
3 rows in set (0.01 sec)
## 顯然,表 t1 的數據被再次同步到了數據節點。所有 SQL 節點又都可以正常查詢數據。
## 其實可以發現,數據文件還是存放在 mysqld 的 datadir 目錄里面;而前面指定的“/data/mysql-cluster/data”這些目錄放的是集群相關的東西。
2.單點故障測試——SQL 節點發生單點故障。
(1)將 SQL 節點 10.10.10.10 上的 MySQL 服務停止。
-bash-4.1$ mysqladmin -uroot -p shutdown
(2)查看一下 Cluster 的狀態。
ndb_mgm show
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @10.10.10.10 (mysql-5.6.27 ndb-7.4.8, Nodegroup: 0, *)
id=3 @10.10.10.11 (mysql-5.6.27 ndb-7.4.8, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.10.9 (mysql-5.6.27 ndb-7.4.8)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 10.10.10.10)
id=5 @10.10.10.11 (mysql-5.6.27 ndb-7.4.8)
(3)從節點 10.10.10.11 上查看表 t1,結果如下。
mysql select * from t1;
+——+
| id |
+——+
| 2 |
| 3 |
| 1 |
+——+
3 rows in set (0.01 sec)
## 關閉 MySQL Cluster
Cluster 的關閉命令很簡單,只需要在 shell 下執行如下命令即可:-bash-4.1$ ndb_mgm -e shutdown
也可以用 ndb_mgm 工具進入管理界面后,使用 shutdown 命令關閉:ndb_mgm shutdown
然后再其它節點上關閉 mysqld:-bash-4.1$ service mysqld stop
或者:mysqladmin -uroot -p shutdown
## 日志管理
MySQL Cluster 提供了兩種日志,分別是集群日志(clusterlog)和節點日志(node log)。前者記錄了所有 Cluster 節點生成的日志,后者僅僅記錄了數據節點的本地事件。在大多數情況下,我們都推薦使用集群日志,因為它在一個地方記錄了所有節點的數據,更便于進行管理。
clusterlog 一般記錄在和配置文件(config.ini)同一個目錄下,文件名格式為 ndb__cluster.log,其中 nodeid 為管理節點號。
可以使用 ndb_mgm 客戶端管理工具打開或者關閉日志,具體操作如下。
(1)在 shell 中執行 ndb_mgm 命令。
-bash-4.1$ ndb_mgm
— NDB Cluster — Management Client —
ndb_mgm
(2)執行 clusterlog info 命令查看當前日志狀態。
ndb_mgm clusterlog info
Connected to Management Server at: localhost:1186
Severities enabled: INFO WARNING ERROR CRITICAL ALERT
(3)當前日志是打開的,用 clusterlog off 命令關閉日志。
ndb_mgm clusterlog off
Cluster logging is disabled
(4)再次查看日志狀態,發現已經關閉。
ndb_mgm clusterlog info
Cluster logging is disabled.
(5)執行 clusterlog on 命令將再次打開日志。
ndb_mgm clusterlog on
Cluster logging is enabled.
ndb_mgm clusterlog info
Severities enabled: INFO WARNING ERROR CRITICAL ALERT
感謝各位的閱讀,以上就是“怎么配置 MySQL Cluster”的內容了,經過本文的學習后,相信大家對怎么配置 MySQL Cluster 這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!