MySQLCluster集群部署(MySQLCLUSTER 7.4.7)

本文作为为Doctor Zhang,有问题可以给我发信:tieyingz@cs.cmu.edu


很久没有配置MysqlCluster了,今天准备做个实验,配置最新版本为7.4.7,配置过程也碰到了一些问题,希望朋友们有所借鉴(其中很多命令是用sudo完成的)


一、本文部署集群情况如下

1、物理机2台:

10.92.1.207

10.92.1.244


其中:

207部署1)管理节点;2)数据节点;3)SQL节点

244部署1)数据节点;2)SQL节点


2、如果已经存在MySql,需要先删除,方法:

如果能联网 yum remove mysql

否则手动删除mysql

先看看都安装了什么包:

# rpm -qa|grep MySQL

然后把这些包都卸载掉

rpm -e MySQL-server-5.5.21-1.linux2.6

rpm -e MySQL-client-5.5.20-1.linux2.6

二、下载安装包

1、从官网下载MySQLCluster

我下的最新版本为7.4.7:mysql-cluster-gpl-7.4.7-linux-glibc2.5-x86_64.tar.gz

2、把下好的tar包解压到/var/local下

tar -C /usr/local-zxvf mysql-cluster-gpl-7.4.7-linux-glibc2.5-x86_64.tar.gz
 
(可以安装到别的位置,但注意运行下面的mysql-install的时候一定要带上相应的datadir和basedir)

3、改名为mysql(名字太长不方便):

cd /usr/local
sudo mv mysql
-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz mysql

4、更改权限

groupadd mysql

useradd mysql -g mysql


#cd /usr/local/mysql

# sudo chown –R root . //把mysql的目录设置成所有者为root

#sudo chown –R mysql /data //把data目录设置所有者为mysql

#sudo chgrp –R mysql . //改成所属组为mysql

5、跑一遍安装脚本

#sudo scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

注意:这里一定要把--basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 加上,否则会最后启动MySQL服务的时候会出现"table mysql.plugin doesn't exist","Can\'t open the mysql.plugin table. Please run mysql_upgrade to create it."错误,以及"PID"获取失败的错误

6、设置mysql服务为开机自启动

cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod
+x /etc/rc.d/init.d/mysqld
chkconfig
--add mysqld

7、这六步,在两个服务器上都执行一次,数据节点和SQL节点就算安装好了。


三、配置管理节点


1、拷贝命令

cp /usr/local/mysql/bin/ndb_mgm,ndb_mgmd两个文件到/usr/local/bin

#cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin

2、配置文件

#mkdir /var/lib/mysql-cluster

#vim /var/lib/mysql-cluster/config.ini

输入下面内容(注意行与行之间不能有空行):

[ndbd default] NoOfReplicas=1 DataMemory=200M IndexMemory=20M [ndb_mgmd] NodeId=1 hostname=10.92.1.207 datadir=/var/lib/mysql-cluster/ [ndbd] NodeId=2 hostname=10.92.1.207 datadir=/usr/local/mysql/data/ [ndbd] NodeId=3 hostname=10.92.1.244 datadir=/usr/local/mysql/data/ [mysqld] hostname=10.92.1.207 [mysqld] hostname=10.92.1.244 [mysqld] [mysqld]
注意:对上面配置内容解释如下:

[NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。

[NDB_MGMD]:表示管理节点的配置,只有一个。

[NDBD]:表示每个数据节点的配置,可以有多个。

[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。

四、配置数据节点和SQL节点

1、配置文件

mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,修改10.92.1.207上的/ect/my.cnf

[mysqld]

ndbcluster #运行NDB存储引擎

datadir=/usr/local/mysql/data

basedir=/usr/local/mysql

port=3306

[mysql_cluster]

ndb-connectstring=10.32.34.116 #声明管理节点

2、拷贝该my.cnf到另一台10.92.1.244

#scp /etc/my.cnf 10.92.1.207:/etc/

五 启动

节点的启动顺序为管理节点->数据节点->SQL节点。

1、207上启动管理节点

#cd /usr/local/bin

# ./ndb_mgmd -f /var/lib/mysql-cluster/config.ini // ndb_mgmd是mysqlcluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中

注:如果mysql没有安装在/usr/local/mysql下,会提示你加上--dir**选项,随便选个刚才的mysql-cluster目录即可

2、207和244启动数据节点

安装后第一次启动数据节点时要加上--initial参数,其它时候不要加,除非是在备份、恢复或配置变化后重启时

#cd /var/local/mysql/bin/ndbd –initial

2012-03-28 02:01:38 [ndbd] INFO -- Angel connected to '10.32.33.120:1186'

2012-03-28 02:01:38 [ndbd] INFO -- Angel allocated nodeid: 36

出现这种信息表示启动成功.

3、207和244启动SQL节点

service mysqld start

4、用管理节点查看

#cd /usr/local/bin

#.ndb_mgm

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=2 @10.32.33.120 (mysql-5.5.20 ndb-7.2.5, Nodegroup: 0, Master)

id=3 @10.32.34.116 (mysql-5.5.20 ndb-7.2.5, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @10.32.34.116 (mysql-5.5.20 ndb-7.2.5)

[mysqld(API)] 4 node(s)

id=4 @10.32.33.120 (mysql-5.5.20 ndb-7.2.5)

id=5 @10.32.34.116 (mysql-5.5.20 ndb-7.2.5)

id=6 (not connected, accepting connect from any host)

id=7 (not connected, accepting connect from any host)

可以看到各个节点已经连接上了, mysql cluster配置完成.

如果看不到上述信息,可能是防火墙问题,你可以选择把CentOS的防火墙关掉,命令为:/etc/init.d/iptables stop


可以在任何一个节点使用mysql登录了操作了。


注意事项:

如果想远程登录,有可能会出现"MySQL ERROR 1130 (HY000): Host '192.168.1.8' is not allowed to connect to this MySQL server"错误。解决办法如下:从本地登录mysql,输入下面命令

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.8' IDENTIFIED BY 'password' WITH GRANT OPTION;


意思是允许远程以root登录,并且限定ip为192.163.1.8,链接密码位password。如果不想有IP限制为下面命令:

GRANT ALL PRIVILEGES ON *.* TO 'root' IDENTIFIED BY 'password' WITH GRANT OPTION;


六、停止集群


首先停止SQL节点:service mysqld stop
然后在ndb manage节点上使用该命令停止ndb集群: ndb_mgm -e shutdown


七、测试数据

连接任何一个sql节点:mysql -u 用户名 -p密码 -h 服务器IP地址-P 服务器端MySQL端口号 -D 数据库名

本例中:mysql -uroot -h 10.92.2.85

mysql> create database zxztest ;

mysql> use zxztest;
Database changed

mysql> create table test1(id int,name varchar(10)) engine=ndb ;

mysql> insert into test1 values(1,'zhaoxuezhi');

mysql> select * from test1 ;

+------+---------+
| id   | name    |
+------+---------+
|    1 | zhaoxuezhi | 
+------+---------+

登陆B节点,查看效果,库,表和数据已经同步。

从B节点插入一条数据,同样登陆A,也能看到数据已经同步。


注意:建表时一定要指明存储引擎为NDB,即engine=ndb,否则mysql默认建的时innodb的表,不会sharding到其他节点。写程序时建表也要指明ENGINE=NDB.


八、查看NDB各个节点本地存储的数据是否有变化

很多人不知道数据存储在哪,这里教大家一个方法:用lsof查看ndb打开的文件:

>sudo lsof -c ndb

发现其真正存储数据的位置在mysql/data/ndb_2_fs/下面,各个文件夹中的文件是以16.7M为单位存储的,临时文件达到16.7M后就另起一个,如图:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值