一、安裝前規划
1、安裝軟件版本:mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64.tar.gz
2、安裝規划:
主機名 |
Ip地址 |
角色 |
db01 |
192.168.100.131 |
管理節點 |
db02 |
192.168.100.132 |
SQL節點 |
db03 |
192.168.100.133 |
SQL節點 |
db04 |
192.168.100.134 |
data節點 |
db05 |
192.168.100.135 |
data節點 |
3、配置/etc/hosts文件(所有節點):
192.168.100.231 db01
192.168.100.232 db02
192.168.100.233 db03
192.168.100.234 db04
192.168.100.235 db05
二、安裝NDB Cluster
1、SQL節點安裝:
在每一個被指定為SQL節點的主機上,使用root用戶執行以下步驟:
1)檢查你的操作系統上是否已經創建了mysql組及mysql用戶,一些操作系統在安裝時會預創建mysql組及mysql用戶,如果你的操作系統上沒有創建這些,那么通過如下步驟創建mysql組及mysql用戶。
shell> groupadd mysql
shell> useradd -g mysql -s /bin/false mysql
2)在本地操作系統下載mysql軟件目錄中,解壓安裝軟件,並移動到/usr/local/目錄下,根據需要是否使用軟連接(ln -s)。
shell> cd /mnt
shell> tar -C /usr/local -xzvf mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64.tar.gz
shell> ln -s /usr/local/mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64 /usr/local/mysql
3)進入到本地的mysql安裝目錄,並且通過mysqld --initialize命令初始化mysql系統數據庫。
shell> cd mysql
shell> mysqld --initialize
當然,你也可以進入mysql安裝目錄,通過mysql_install_db命令初始化mysql系統數據庫。
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
然而,這種方式是不推薦使用的,因為mysql_install_db將被棄用在以后的版本中。
4)為mysql服務器和data目錄設置必要的權限。
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
5)copy mysql啟動腳本到/etc/rc.d/init.d/下,並且設置可執行文件,然后通過chkconfig命令添加為服務。
shell> cp support-files/mysql.server /etc/rc.d/init.d/
shell> chmod +x /etc/rc.d/init.d/mysql.server
shell> chkconfig --add mysql.server
記住,必須在每一台SQL節點上執行以上步驟。
2、data節點安裝:
安裝data節點不需要mysql二進制文件,僅需要在NDB cluster的data節點執行ndbd(single-treaded) or ndbmtd(multi-threaded),mysql二進制安裝文件也包含在以上的tar包中。
以root用戶登錄操作系統,執行以下步驟安裝data 節點在每一台data 節點服務器上。
1)進入到mysql下載目錄下,並且抓取這個ndbd和ndbmtd二進制文件到/usr/local/bin/目錄下,
shell> cd /mnt
shell> tar -zxvf mysql-5.7.17-ndb-7.5.6-linux-i686-glibc23.tar.gz
shell> cd mysql-5.7.17-ndb-7.5.6-linux-i686-glibc23
shell> cp bin/ndbd /usr/local/bin/ndbd
shell> cp bin/ndbmtd /usr/local/bin/ndbmtd
在ndbd和ndbdmtd已經復制到/usr/local/bin/下后,你也可以刪除mysql解壓目錄和下載文件,並且這是非常安全的。
2)進入到/ust/local/bin/目錄下,將步驟1 copy的ndbd和ndbmtd文件設置為可執行文件。
shell> cd /usr/local/bin
shell> chmod +x ndb*
執行以上這些步驟在每一台data節點服務器上。
3、Management 節點安裝:
安裝管理節點不需要mysql二進制文件,僅需要安裝NDB cluster management server (ndb_mgmd),並且你可能還想安裝management client (ndb_mgm),所有的這些都可以在tar包中發現。
以root用戶身份登錄操作系統,執行安裝ndb_mgmd 和ndb_mgm命令在management節點服務器上。
1)進入到mysql解壓目錄,抓取ndb_mgmd和ndb_mgm二進制文件copy到/usr/local/bin/目錄下。
shell> cd /var/tmp
shell> tar -zxvf mysql-5.7.17-ndb-7.5.6-linux2.6-i686.tar.gz
shell> cd mysql-5.7.17-ndb-7.5.6-linux2.6-i686
shell> cp bin/ndb_mgm* /usr/local/bin
你也可以刪除mysql解壓目錄和下載文件,並且這是非常安全的。
2)進入到/ust/local/bin/目錄下,將步驟1 copy的ndb_mgmd和ndb_mgm文件設置為可執行文件。
shell> cd /usr/local/bin
shell> chmod +x ndb_mgm*
三、配置NDB Cluster
這里描述如何通過最小化配置部署一個NDB cluster集群。
說明:每一個data節點和SQL節點需要配置一個my.cnf文件,並且提供兩個選項的說明:其中一個告訴哪里可以找到management節點;另一個告訴mysql 服務器這個主機是否啟動NDB Cluster存儲引擎。
管理節點需要配置一個congin.ini的配置文件,它描述了集群存在幾個副本,在每一個節點為數據和索引各分配多少內存,數據節點在哪里,每一個數據節點中在磁盤的哪里保存數據,以及存在哪些SQL節點。
1、配置數據節點和SQL節點
數據節點和SQL節點在my.cnf文件所需要的配置相當簡單,並且這個文件應該放在/etc/目錄下,可以通過任何編輯器對其進行編輯,例如:
shell> vi /etc/my.cnf
每個數據節點和SQL節點配置可以參考如下內容:
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=192.168.0.10 # location of management server
本例中每個sql節點和data節點/etc/my.cnf示例配置如下:
[mysqld] basedir=/usr/local/mysql/ datadir=/usr/local/mysql/data/ user=mysql log-error=/usr/local/mysql/data/sqlnode.err ndbcluster ndb-connectstring=db01 [mysql_cluster] ndb-connectstring=db01 |
2、配置管理節點
配置管理節點的第一步是創建目錄和創建配置文件本身(以root用戶身份執行)。
shell> mkdir /var/lib/mysql-cluster
shell> cd /var/lib/mysql-cluster
shell> vi config.ini
管理節點的config.ini配置文件內容可能如下:
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[tcp default]
# TCP/IP options:
portnumber=2202 # This the default; however, you can use any
# port that is free for all the hosts in the cluster
# Note: It is recommended that you do not specify the port
# number at all and simply allow the default value to be used
# instead
[ndb_mgmd]
# Management process options:
hostname=192.168.0.10 # Hostname or IP address of MGM node
datadir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
hostname=192.168.0.30 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
[ndbd]
# Options for data node "B":
hostname=192.168.0.40 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
[mysqld]
# SQL node options:
hostname=192.168.0.20 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
本例中管理節點config.ini文件內容如下:
[ndbd default] NoOfReplicas=1 DataMemory=100M IndexMemory=80M [tcp default] portnumber=2202 [ndb_mgmd] hostname=db01 datadir=/var/lib/mysql-cluster [ndbd] hostname=db04 datadir=/usr/local/mysql/data [ndbd] hostname=db05 datadir=/usr/local/mysql/data [mysqld] hostname=db02 [mysqld] hostname=db03 |
說明:mysql cluster默認管理節點端口號是1186,;默認數據節點端口號是2202;然而,集群可以自動獲得端口為哪些自由的數據節點。
四、啟動集群
在成功配置后啟動集群並不是很困難,每個解決節點必須分別被啟動,首先啟動管理節點,其次啟動數據節點,最后再啟動SQL節點。
1、在管理節點主機上,在shell中輸入如下內容用於啟動管理節點:
shell> ndb_mgmd -f /var/lib/mysql-cluster/config.ini
2、在每一個數據節點上,shell下運行ndbd命令用於啟動數據節點:
shell> ndbd
3、在每一個sql節點上,通過mysql啟動命令啟動SQL節點:
shell>service mysqld start
如果一切順利,集群可以正確啟動,現在你可以進行一些測試操作。你可以使用管理節點客戶端測試工具ndb_mgm,輸出當前的集群配置信息及運行狀態。
ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.100.234 (mysql-5.6.34 ndb-7.4.13, Nodegroup: 0, *) id=3 @192.168.100.235 (mysql-5.6.34 ndb-7.4.13, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.100.231 (mysql-5.6.34 ndb-7.4.13) [mysqld(API)] 2 node(s) id=4 @192.168.100.232 (mysql-5.6.34 ndb-7.4.13) id=5 @192.168.100.233 (mysql-5.6.34 ndb-7.4.13) |
五、關閉集群
想要關閉集群,在管理節點主機的shell下輸入如下命令:
shell> ndb_mgm -e shutdown
這個-e命令可以安全的kill掉運行 ndb_mgm, ndb_mgmd, ndbd 或者 ndbmtd的進程。
如果想要關閉sql節點,應該使用mysql停止服務方法。