您的位置:首页 > 数据库 > MySQL

MySQLCluster集群部署(MySQLCLUSTER 7.4.7)

2015-10-10 09:38 429 查看
本文作为为Doctor Zhang,有问题可以给我发信:tieyingz@cs.cmu.edu很久没有配置MysqlCluster了,今天准备做个实验,配置最新版本为7.4.7,配置过程也碰到了一些问题,希望朋友们有所借鉴(其中很多命令是用sudo完成的)

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

1、物理机2台:

10.92.1.20710.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.6rpm -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/localsudo mv mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz mysql

4、更改权限

groupadd mysqluseradd 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/mysqldchmod +x /etc/rc.d/init.d/mysqldchkconfig --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=1DataMemory=200MIndexMemory=20M[ndb_mgmd]NodeId=1hostname=10.92.1.207datadir=/var/lib/mysql-cluster/[ndbd]NodeId=2hostname=10.92.1.207datadir=/usr/local/mysql/data/[ndbd]NodeId=3hostname=10.92.1.244datadir=/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/databasedir=/usr/local/mysqlport=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 –initial2012-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_mgmndb_mgm> showCluster 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.85mysql> create database zxztest ;mysql> use zxztest;Database changedmysql> 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后就另起一个,如图:
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: