mysql cluster (mysql 集群)安装配置方案
一、說明
本文參考:http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.html
1.準備服務器
計劃建立有5個節(jié)點的MySQL CLuster體系,需要用到5臺服務器,但是我們做實驗時沒有這么多機器,可以只用3臺,提供5個節(jié)點的MySQL CLuster體系,將SQL節(jié)點和數(shù)據(jù)節(jié)點共用一臺機器,具體如下。
| 主機名 | 節(jié)點 | 對應的IP和端口 |
| DB-mgm | 管理節(jié)點 | 10.10.6.201:1186 |
| DB-node1 | 數(shù)據(jù)節(jié)點 | 10.10.6.211:2202 |
| DB-node1 | SQL節(jié)點 | 10.10.6.211:3306 |
| DB-node2 | 數(shù)據(jù)節(jié)點 | 10.10.6.212:2202 |
| DB-node2 | SQL節(jié)點 | 10.10.6.212:3306 |
2.準備軟件包
現(xiàn)在的mysql提供了一個專門作集群的安裝包,這樣就不用一個個的下載所需要的工具了。從官網(wǎng)下載。
http://cdn.mysql.com/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz
二、安裝
(一)數(shù)據(jù)節(jié)點和SQL節(jié)點(各兩臺)
1.添加mysql用戶和組,這是必需的。
[root@DB-node1 ~]# groupadd mysql
[root@DB-node1 ~]# useradd -g mysql mysql
[root@DB-node1 ~]#?
2.開始安裝,下載的版本是免編譯的,復制過來就可以用了。
[root@DB-node1 ~]# http://cdn.mysql.com/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz
[root@DB-node1 ~]# tar -zxvf mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
[root@DB-node1 ~]# ln -sv /usr/local/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64/ /usr/local/mysql
[root@DB-node1 ~]#
3.修改目錄權限,這也是必需的,不然第四步會報錯的。
[root@DB-node1 ~]# chown -R mysql.root /usr/local/mysql
[root@DB-node1 ~]# chown -R mysql.root /usr/local/mysql/
[root@DB-node1 ~]#?
4.安裝初始的數(shù)據(jù)庫表
[root@DB-node1 ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql
FATAL ERROR: Could not find ./bin/my_print_defaults
If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.
If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.
如果出現(xiàn)上面錯誤,說明沒有指定mysql目錄,需手工指定。
解決方法
[root@DB-node1 ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
5.設置mysql服務為開機自啟動并啟動
[root@DB-node1 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@DB-node1 ~]# chmod +x /etc/rc.d/init.d/mysqld?
[root@DB-node1 ~]# chkconfig --add mysqld?
[root@DB-node1 ~]# chkconfig --list mysqld????????
mysqld????????? 0:off?? 1:off?? 2:on??? 3:on??? 4:on??? 5:on??? 6:off
[root@DB-node1 ~]#
[root@DB-node1 ~]# service mysqld start
到這一步,在數(shù)據(jù)節(jié)點和SQL節(jié)點上就算安裝好了。
(二)管理節(jié)點
管理節(jié)點的安裝更簡單,只要在數(shù)據(jù)節(jié)點和SQL節(jié)點服務器上復制些文件出來就行了,雖然只有一步,[root@DB-mgm ~]# scp 10.10.6.211:/usr/local/mysql/bin/ndb_mgm* /usr/local/bin/
[root@DB-mgm ~]# ll /usr/local/bin/ndb*
-rwxr-xr-x 1 root root? 7137184 Apr 13 09:45 /usr/local/bin/ndb_mgm
-rwxr-xr-x 1 root root 16336025 Apr 13 09:45 /usr/local/bin/ndb_mgmd
[root@DB-mgm ~]#?
管理節(jié)點只要ndb_mgm和ndb_mgmd兩個文件和一個配置文件即可,因此把這三個文件復制到那里,那里就是管理節(jié)點了。ndb_mgmd是mysql cluster管理服務器,ndb_mgm是客戶端管理工具,等一下會用到它們的。到目前為止兩個SQL節(jié)點兩個數(shù)據(jù)節(jié)點和一個管理節(jié)點都安裝完成了,但是還不能工作,得進行配置,把這幾個節(jié)點聯(lián)系在一起協(xié)同工作。
三、配置
(一)數(shù)據(jù)節(jié)點和SQL節(jié)點(各兩臺)
mysql服務啟動時會默認加載/etc/my.cnf作為其配置文件,要將一個mysql服務器配置成一個數(shù)據(jù)節(jié)點和SQL節(jié)點也非常的簡單:
只要在內容結尾加上下面4行就將這個mysql服務器變成了一個數(shù)據(jù)節(jié)點和SQL節(jié)點。
ndbcluster???????????????????????????? \\運行NDB存儲引擎
ndb-connectstring=10.10.6.201????????? \\指定管理節(jié)點? 這兩行聲明其為SQL節(jié)點
[mysql_cluster]
ndb-connectstring=10.10.6.201????????? \\指定管理節(jié)點? 這兩行聲明其為數(shù)據(jù)節(jié)點
新建mysql的配置文件
[root@DB-node1 ~]# vi /etc/my.cnf
[root@DB-node1 ~]# more /etc/my.cnf?
[client]
port=3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
user= mysql
pid-file=/usr/local/mysql/mysqld.pid
log-error=/usr/local/mysql/mysqld.err
以下四行為新增加內容
ndbcluster???????????????????????????? \\運行NDB存儲引擎
ndb-connectstring=10.10.6.201????????? \\指定管理節(jié)點? 這兩行聲明其為SQL節(jié)點
[mysql_cluster]
ndb-connectstring=10.10.6.201????????? \\指定管理節(jié)點? 這兩行聲明其數(shù)據(jù)節(jié)點
[root@DB-node1 ~]#
注意兩臺服務器都得這樣配置。
(二)管理節(jié)點
管理節(jié)點的配置復雜一點,在管理服務器/usr/local/mysql/目錄中創(chuàng)建config.ini文件。
網(wǎng)上說 使用mysql-cluster,但是啟動時 總時有如下提示:
[root@DB-mgm ~]# ndb_mgmd -f /usr/local/mysql-cluster/config.ini?
MySQL Cluster Management Server mysql-5.6.23 ndb-7.4.5
2015-04-13 14:13:28 [MgmtSrvr] INFO???? -- The default config directory '/usr/local/mysql/mysql-cluster' does not exist. Trying to create it...
Failed to create directory '/usr/local/mysql/mysql-cluster', error: 2
2015-04-13 14:13:28 [MgmtSrvr] ERROR??? -- Could not create directory '/usr/local/mysql/mysql-cluster'. Either create it manually or specify a different directory with --configdir=<path>
[root@DB-mgm ~]#?
最后改成了/usr/local/mysql,就可以了
[root@DB-mgm ~]# mkdir /usr/local/mysql
[root@DB-mgm ~]# vi /usr/local/mysql/config.ini
[root@DB-mgm ~]# more /usr/local/mysql/config.ini?
[NDBD DEFAULT]
NoOfReplicas=1?????????? \\每個數(shù)據(jù)節(jié)點的鏡像數(shù)量
DataMemory=500M????????? \\每個數(shù)據(jù)節(jié)點中給數(shù)據(jù)分配的內存
IndexMemory=300M???????? \\每個數(shù)據(jù)節(jié)點中給索引分配的內存
[TCP DEFAULT]
portnumber=2202????????? \\數(shù)據(jù)節(jié)點的默認連接端口
[NDB_MGMD]?????????????? \\配置管理節(jié)點
hostname=10.10.6.201
datadir=/usr/local/mysql/??????????? \\管理節(jié)點數(shù)據(jù)(日志)目錄
[NDBD]
hostname=10.10.6.211????????????????? \\數(shù)據(jù)節(jié)點配置
datadir=/usr/local/mysql/data/??????? \\數(shù)據(jù)節(jié)點目錄
[NDBD]
hostname=10.10.6.212
datadir=/usr/local/mysql/data/
[MYSQLD]???????????????????????????? \\SQL節(jié)點目錄
hostname=10.10.6.211
[MYSQLD]
hostname=10.10.6.212
[root@DB-mgm ~]#
[NDBD DEFAULT]:表示每個數(shù)據(jù)節(jié)點的默認配置在每個節(jié)點的[NDBD]中不用再寫這些選項,只能有一個。
[NDB_MGMD]:表示管理節(jié)點的配置,只有一個。
[NDBD]:表示每個數(shù)據(jù)節(jié)點的配置,可以有多個。
[MYSQLD]:表示SQL節(jié)點的配置,可以有多個,分別寫上不同SQL節(jié)點的IP地址,也可以什么都不寫,只保留一個空節(jié)點,表示任意一個IP地址都可以進行訪問,此節(jié)點的個數(shù)表明了可以用來連接數(shù)據(jù)節(jié)點的SQL節(jié)點總數(shù)。
四、啟動
(一)管理節(jié)點
1.啟動管理節(jié)點
mysql cluster 需要各個節(jié)點都 進行啟動后才可以工作,節(jié)點的啟動順序為管理節(jié)點->數(shù)據(jù)節(jié)點->SQL節(jié)點。首先啟動管理節(jié)點
[root@DB-mgm ~]# ndb_mgmd -f /usr/local/mysql/config.ini?????????
MySQL Cluster Management Server mysql-5.6.23 ndb-7.4.5
2015-04-13 14:14:14 [MgmtSrvr] INFO???? -- The default config directory '/usr/local/mysql/mysql-cluster' does not exist. Trying to create it...
2015-04-13 14:14:14 [MgmtSrvr] INFO???? -- Sucessfully created config directory
2015-04-13 14:14:14 [MgmtSrvr] WARNING? -- at line 7: [TCP] portnumber is deprecated
[root@DB-mgm ~]#
[root@DB-mgm ~]# echo "/usr/local/bin/ndb_mgmd -f /usr/local/mysql/config.ini "? >>/etc/rc.local
[root@DB-mgm ~]#
命令行中的ndb_mgmd是mysql cluster的管理服務器,后面的-f表示后面的參數(shù)是啟動的參數(shù)配置文件。如果在啟動后過了幾天又添加了一個數(shù)據(jù)節(jié)點,這時修改了配置文件啟動時就必須加上--initial參數(shù),不然添加的節(jié)點不會作用在mysql cluster中。
./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
啟動時可能會報個WARNING,如WARNING? -- at line 7: [TCP] portnumber is deprecated,這個不用管。可以正常工作的。
2.查看有無啟動成功
[root@DB-mgm ~]# ls /usr/local/mysql/
config.ini? mysql-cluster? ndb_1_cluster.log? ndb_1_out.log? ndb_1.pid
[root@DB-mgm ~]#?
[root@DB-mgm ~]# netstat -tlnp | grep 1186
tcp??????? 0????? 0 0.0.0.0:1186??????????????? 0.0.0.0:*?????????????????? LISTEN????? 3075/ndb_mgmd???????
[root@DB-mgm ~]# 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.6.211)
id=3 (not connected, accepting connect from 10.10.6.212)
[ndb_mgmd(MGM)] 1 node(s)
id=1??? @10.10.6.201? (mysql-5.6.23 ndb-7.4.5)
[mysqld(API)]?? 2 node(s)
id=4 (not connected, accepting connect from 10.10.6.211)
id=5 (not connected, accepting connect from 10.10.6.212)
ndb_mgm> exit
[root@DB-mgm ~]#
(二)數(shù)據(jù)節(jié)點(兩臺)
安裝后第一次啟動數(shù)據(jù)節(jié)點時要加上--initial參數(shù),其它時候不要加,除非是在備份、恢復或配置變化后重啟時。
[root@DB-node1 ~]# /usr/local/mysql/bin/ndbd --initial
2015-04-13 14:49:59 [ndbd] INFO???? -- Angel connected to '10.10.6.201:1186'
2015-04-13 14:49:59 [ndbd] INFO???? -- Angel allocated nodeid: 2
[root@DB-node1 ~]# netstat -tlnp |grep 2202
tcp??????? 0????? 0 10.10.6.211:2202??????????? 0.0.0.0:*?????????????????? LISTEN????? 14780/ndbd??????????
[root@DB-node1 ~]#????
[root@DB-node1 ~]# echo /usr/local/mysql/bin/ndbd >>/etc/rc.local
[root@DB-node1 ~]#?
(三)SQL節(jié)點(兩臺)
[root@DB-node1 ~]# service? mysqld start
Starting MySQL SUCCESS!?
[root@DB-node1 ~]#?
(四)客戶端管理
這時就進入到客戶端或管理節(jié)點,可以對mysql cluster進行各項操作,進入后會有ndb_mgm > 提示符出現(xiàn),首先來查看各節(jié)點的連接情況,在ndb_mgm> 提示符下輸入show:
[root@DB-mgm ~]# 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??? @10.10.6.211? (mysql-5.6.23 ndb-7.4.5, Nodegroup: 0, *)
id=3??? @10.10.6.212? (mysql-5.6.23 ndb-7.4.5, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1??? @10.10.6.201? (mysql-5.6.23 ndb-7.4.5)
[mysqld(API)]?? 2 node(s)
id=4??? @10.10.6.211? (mysql-5.6.23 ndb-7.4.5)
id=5??? @10.10.6.212? (mysql-5.6.23 ndb-7.4.5)
ndb_mgm> exit
可以看到各個節(jié)點已經(jīng)連接上了,至此,mysql cluster配置完成。
(五)關閉
mysql cluster的關閉也很簡單,只需在ndb_mgm> 提示符下輸入 shutdown即可,這時會顯示各節(jié)點的關閉信息,再輸入exit即可退出ndb_mgm管理,回到shell中。雖然mysql cluster 關閉了,但是SQL節(jié)點的mysql服務并不會停止的。接下來就可以做各種試驗了。
五、測試
(一)在一個SQL節(jié)點新建一個測試數(shù)據(jù)庫,jedy_db
[root@DB-node1 mysql]# /usr/local/mysql/bin/mysql
mysql> create database jedy_db;
Query OK, 1 row affected (0.10 sec)
mysql> show databases;
+--------------------+
| Database?????????? |
+--------------------+
| information_schema |
| jedy_db??????????? |
| mysql????????????? |
| ndb_2_fs?????????? |
| ndbinfo??????????? |
| performance_schema |
| test?????????????? |
+--------------------+
7 rows in set (0.05 sec)
mysql> \q
Bye
[root@DB-node1 mysql]#?
(二)在另一個SQL節(jié)點查看
[root@DB-node2 mysql]# /usr/local/mysql/bin/mysql
mysql> show databases;
+--------------------+
| Database?????????? |
+--------------------+
| information_schema |
| jedy_db??????????? |
| mysql????????????? |
| ndb_3_fs?????????? |
| ndbinfo??????????? |
| performance_schema |
| test?????????????? |
+--------------------+
7 rows in set (0.06 sec)
mysql> \q
Bye
[root@DB-node2 mysql]#
所有配置完成
轉載于:https://www.cnblogs.com/jedy/p/4422547.html
總結
以上是生活随笔為你收集整理的mysql cluster (mysql 集群)安装配置方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 细数移动IM开发中的那些坑
- 下一篇: 20135331 文艺 java实验