標籤:mysql-cluster 安裝7.35
周氏一族,整理技術文檔,給下一代留點教程......
網路架構
192.168.0.202 管理節點(MGM)
192.168.0.203 儲存節點(NDB)
192.168.0.204 查詢節點(API)
準備材料(可以到官網下載,解壓拿出來這兩個包)
MySQL-Cluster-client-gpl-7.3.5-1.el6.x86_64.rpm
MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm
開始安裝之前,還是再三告知,mgm管理節點,只需要bin/ndb_mgmd 和 bin/ndb_mgm ;ndb儲存節點,只需要 bin/ndb_mgm,知道這一點,那麼應該就很容易理解我們下面的配置了
192.168.0.202 配置如下:
1、清理本機內建任何跟mysql有關的包
[[email protected] ~]# rpm -qa |grep mysql
mysql-5.1.61-4.el6.x86_64
mysql-libs-5.1.61-4.el6.x86_64
mysql-devel-5.1.61-4.el6.x86_64
[[email protected] ~]# yum -y remove mysql-5.1.61-4.el6.x86_64 mysql-libs-5.1.61-4.el6.x86_64 mysql-devel-5.1.61-4.el6.x86_64
2、安裝,因為mgm只需要用到mysql-cluster-server 這個包裡面的兩個bin檔案,但是請注意,這裡我是直接安裝整個,雖然有點多此一舉,不過算了啦,懶得去拿那兩個包,直接rpm好了,自己知道就行了。
[[email protected] ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:MySQL-Cluster-server-gp########################################### [100%]
3、建立檔案夾
[[email protected] ~]# mkdir /var/lib/mysql/data
[[email protected] ~]# mkdir /var/lib/mysql-cluster
[[email protected] ~]# mkdir /var/run/mysqld
[[email protected] ~]# chmod -R 1777 /var/lib/mysql
[[email protected] ~]# chmod -R 1777 /var/lib/mysql-cluster/
[[email protected] ~]# chmod -R 1777 /var/run/mysqld/
有必要解釋一下,mysql/data 這個是存放資料庫,mysql-cluster這個是管理節點配置路徑,run/mysqld這個是mysql運行後台pid路徑,當然,這些你都可以根據你自己需要修改。
4、進入/var/lib/mysql-cluster目錄,建立config.ini設定檔;
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
# IP address of the first management node
NodeId=1
hostname=192.168.0.202
datadir=/var/lib/mysql-cluster
[ndbd]
# IP address of the Storage Server (NDBD) node 1
hostname=192.168.0.203
datadir=/var/lib/mysql/data
[mysqld]
hostname=192.168.0.204
[mysqld]
[mysqld]
5、啟動 管理 節點 服務,記得指定配置路徑,否則系統會預設建立到
[[email protected] ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/ MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5 [[email protected]_server ~]# 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 (not connected, accepting connect from 192.168.0.203)
[ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.202 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 3 node(s) id=3 (not connected, accepting connect from 192.168.0.204) id=4 (not connected, accepting connect from any host) id=5 (not connected, accepting connect from any host) |
可以看到,起來了,但是,請注意下面三個情況:
情況一:如果,你是雙管理節點,那麼此時此刻,是不可能起來的,他要等另外一個管理節點的串連,報錯如下
[[email protected] ~]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 ERROR Message: The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node 2 to connect.
Could not get configuration * 4012: Failed to get configuration * The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node 2 to connect. ndb_mgm> |
情況二:如果你是雙管理節點,而且兩者都把管理節點服務啟動了,並且,都正常,然後把其中一個管理節點關掉,另外一個管理節點show一下,沒問題。
情況三:如果你是雙管理節點,而且兩者都把管理節點服務啟動了,並且,都正常,然後把整個叢集關閉,或者你就類比意外斷電,所有機器都shutdown,開機,你會發現,這時候的管理節點,一個也能show,不需要等待兩個管理節點一起up才能show。
總結:
單管理節點,沒有任何問題,直接啟動服務,就能show
雙管理節點,有問題,第一次,有且初次開機的時候,需要等待雙方協商握手之後,才能完整,打個必須,兩個人一起上洗手間,A上完了,不能走,必須等B也上完,才能一起牽手離開;但是,第二次的時候,A上完,就能獨自離開了,因為它已經知道它還有另外一個B,心裡知道就行了,不用管B的死活了。同樣道理,B也是一樣;
192.168.0.203 配置如下:
1、清理本機內建任何跟mysql有關的包
[[email protected] ~]# rpm -qa |grep mysql
mysql-5.1.61-4.el6.x86_64
mysql-libs-5.1.61-4.el6.x86_64
mysql-devel-5.1.61-4.el6.x86_64
[[email protected] ~]# yum -y remove mysql-5.1.61-4.el6.x86_64 mysql-libs-5.1.61-4.el6.x86_64 mysql-devel-5.1.61-4.el6.x86_64
2、安裝,因為ndb只需要用到mysql-cluster-server 這個包裡面的一個bin檔案(ndbd),但是請注意,這裡我是直接安裝整個,有點多此一舉。
[[email protected] ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:MySQL-Cluster-server-gp########################################### [100%]
3、建立檔案夾
[[email protected] ~]# mkdir /var/lib/mysql/data
[[email protected] ~]# mkdir /var/lib/mysql-cluster
[[email protected] ~]# mkdir /var/run/mysqld
[[email protected] ~]# chmod -R 1777 /var/lib/mysql
[[email protected] ~]# chmod -R 1777 /var/lib/mysql-cluster/
[[email protected] ~]# chmod -R 1777 /var/run/mysqld/
有必要解釋一下,mysql/data 這個是存放資料庫,mysql-cluster這個是管理節點配置路徑,run/mysqld這個是mysql運行後台pid路徑,當然,這些你都可以根據你自己需要修改。
4、建立/etc/my.cnf
[client] socket=/var/lib/mysql/mysql.sock
[mysqld] max_connections=100 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster] ndb-connectstring=192.168.0.202 |
5、啟動ndb節點
[[email protected] ~]# ndbd --initial
2014-07-15 19:12:35 [ndbd] INFO -- Angel connected to ‘192.168.0.202:1186‘
2014-07-15 19:12:35 [ndbd] INFO -- Angel allocated nodeid: 2
6、到管理節點,show 一下看看
ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 1 node(s) id=2 @192.168.0.203 (mysql-5.6.17 ndb-7.3.5, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.202 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 3 node(s) id=3 (not connected, accepting connect from 192.168.0.204) id=4 (not connected, accepting connect from any host) id=5 (not connected, accepting connect from any host) |
很明顯,已經串連上來了。
192.168.0.204 配置如下:
1、清理本機內建任何跟mysql有關的包
[[email protected] ~]# rpm -qa |grep mysql
mysql-5.1.61-4.el6.x86_64
mysql-libs-5.1.61-4.el6.x86_64
mysql-devel-5.1.61-4.el6.x86_64
[[email protected] ~]# yum -y remove mysql-5.1.61-4.el6.x86_64 mysql-libs-5.1.61-4.el6.x86_64 mysql-devel-5.1.61-4.el6.x86_64
2、安裝,mysql-cluster-server 和 mysql-cluster-client
[[email protected] ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:MySQL-Cluster-server-gp########################################### [100%]
[[email protected] ~]# rpm -ivh MySQL-Cluster-client-gpl-7.3.5-1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:MySQL-Cluster-client-gp########################################### [100%]
3、建立檔案夾
[[email protected] ~]# mkdir /var/lib/mysql/data
[[email protected] ~]# mkdir /var/lib/mysql-cluster
[[email protected] ~]# mkdir /var/run/mysqld
[[email protected] ~]# chmod -R 1777 /var/lib/mysql
[[email protected] ~]# chmod -R 1777 /var/lib/mysql-cluster/
[[email protected] ~]# chmod -R 1777 /var/run/mysqld/
有必要解釋一下,mysql/data 這個是存放資料庫,mysql-cluster這個是管理節點配置路徑,run/mysqld這個是mysql運行後台pid路徑,當然,這些你都可以根據你自己需要修改。
4、建立/etc/my.cnf
[client] socket=/var/lib/mysql/mysql.sock
[mysqld] max_connections=100 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock ndbcluster ndb-connectstring=192.168.0.202
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid |
5、啟動sql服務
[[email protected] ~]# /etc/init.d/mysql start
Starting MySQL....... SUCCESS!
[[email protected] ~]#
6、到管理節點,show一下,看看mysql—api是不是已經起來
ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 1 node(s) id=2 @192.168.0.203 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.202 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 3 node(s) id=3 @192.168.0.204 (mysql-5.6.17 ndb-7.3.5) id=4 (not connected, accepting connect from any host) id=5 (not connected, accepting connect from any host) |
7、到此,整個叢集算是完成。
問題總結:
1、如果要擴大叢集,例如增加一台ndb節點,那要怎麼搞
管理節點,刪除/var/lib/mysql-cluster/ 下面ndb開頭的所有檔案
管理節點,修改/var/lib/mysql-cluster/config.ini,增加ndb叢集id和hostname
儲存節點,修改my.cnf,增加[mysql_cluster] ndb-connectstring=192.168.0.202
2、如果,有一天,突然,想把203這台ndb節點,附加上api節點,那麼就會有一個蛋疼的事情出現,理論上,mysql-cluster各個節點,都是獨立的,管它是同一台還是不同台,都是正常的;但是,如果你加上去的話,你就要注意一個事情
同一台機器的 ndb 節點和 sql節點,必須ndb節點先啟動,才能啟動sql節點,否則sql節點,是永遠都連不上叢集,千萬切忌,我就是糾結這個問題,老是不啟動ndb節點,在疑問自己,為什麼sql節點啟動了,管理節點看不到sql節點狀態。
3、關閉叢集的命令
先關閉 查詢節點 mysqladmin -uroot -p shutdown 密碼在 /root/.mysql_secret
再關閉 叢集節點 ndb_mgm -e shutdown
本文出自 “周氏一族” 部落格,謝絕轉載!