目標
在多台centos7 x64機器上部署mysql-cluster服務,實現基於ndbcluster引擎的mysql集群服務
環境
-
三台安裝了centos7 x64系統的服務器(基本處於裸機狀態),IP分別為192.168.1.2、192.168.1.3、192.168.1.4。
各個機器功能如下:
192.168.1.2:mgm節點
192.168.1.3:sql節點+data節點
192.168.1.4:sql節點+data節點 -
從mysql官網下載的mysql-cluster壓縮包:mysql-cluster-gpl-7.4.9-linux-glibc2.5-x86_64.tar.gz 附上下載地址:https://dev.mysql.com/downloads/cluster/ 我使用的是7.4.9版本,官方目前最新的是7.5.7,差別應該不大。
3.此環境使用的root用戶進行的搭建
開始搭建
- 步驟1
將mysql-cluster-gpl-7.4.9-linux-glibc2.5-x86_64.tar.gz上傳到三個機器,並解壓。解壓完成后,修改路徑,保證所有的文件位於/usr/mysql-cluster
下(此路徑在配置文件中會用到) - 步驟2
將config.ini
文件復制到192.168.1.2
的/usr/mysql-cluster
下,config.ini
文件內容如下:
[ndbd default] NoOfReplicas=2 MaxNoOfTables=1024 MaxNoOfUniqueHashIndexes=1024 MaxNoOfOrderedIndexes=1024 MaxNoOfAttributes=10000 [ndb_mgmd] HostName=192.168.1.2 DataDir=/usr/mysql-cluster/data [ndbd] HostName=192.168.1.3 DataDir=/usr/mysql-cluster/data [ndbd] HostName=192.168.1.4 DataDir=/usr/mysql-cluster/data [mysqld] HostName=192.168.1.3 [mysqld] HostName=192.168.1.4
此時就可以啟動mgm
節點了,啟動命令如下:
bin/ndb_mgmd --config-file=/usr/mysql-cluster/config.ini --configdir=/usr/mysql-cluster
之后查看mgm節點狀態,命令如下:
bin/ndb_mgm -e show
步驟3
注意:此步驟需要在192.168.1.3
和192.168.1.4
分別執行一次。
先上傳m.cnf配置文件到/usr/mysql-cluster
下,其內容如下,其中user=root
配置僅當mysql需要運行在root用戶下時才需要配置:
[mysqld]
character_set_server=utf8 basedir=/usr/mysql-cluster datadir=/usr/mysql-cluster/data ndbcluster ndb-connectstring=192.168.1.2 user=root [mysql_cluster] ndb-connectstring=192.168.1.2
然后初始化mysql:
scripts/mysql_install_db --basedir=/usr/mysql-cluster --datadir=/usr/mysql-cluster/data
最后啟動data節點和sql節點(注意必須先啟動兩台機器上的data節點,然后再啟動sql節點,因為sql節點啟動時需要依賴所有的data節點)。
啟動data節點命令:bin/ndbd --defaults-file=my.cnf --initial
注意,僅僅第一次啟動data節點時需要附帶–initial參數,以后就不需要了。
啟動sql節點命令:bin/mysqld_safe --defaults-file=my.cnf &
之后可在mgm節點即192.168.1.2機器上使用bin/ndb_mgm -e show
命令查看到各個節點的連接順序
最后,如果需要停止各個整個集群系統,只需要在192.168.1.2機器上執行bin/ndb_mgm -e shutdown
命令即可。然后在各個節點上可以看到ndbd進程已經終止了(mysqld進程並不會終止,因為mysqld進程也可以作為非集群服務存在,也就說各個sql節點是可以作為普通的mysql服務被調用的)
可能遇到的問題
- 提示
libaio.so.1
這個庫不存在,只要執行yum install libaio.so*
命令安裝所需的庫即可 - 提示
Data::Dumper
模塊不存在,只要執行yum install perl-Data-Dumper
命令安裝所需庫即可。
最后
- 整個集群啟動的順序是mgm –> 所有的data節點 –>所有的sql節點。
- 所有的sql節點是等效的,連接到任何一個都可以訪問到所有的數據。
- 當某個data節點掛掉后,整個集群服務扔可正常運行,當data節點啟動后,其數據會被自動同步。
- 所有的sql節點,各自的用戶名/密碼是獨立的,且初始密碼需要用戶手動設置。
- 新建的表必須使用ndbcluster引擎才能使用到集群這個功能,否則與普通的mysql沒區別。