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.gz2、把下好的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 . //改成所属组为mysql5、跑一遍安装脚本
#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/bin2、配置文件
#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后就另起一个,如图:相关文章推荐
- 安装mysql数据库
- mysql 分析查找执行效率慢的SQL语句
- mysql学习------二进制日志
- mysql备份
- 21分钟 MySQL 入门教程
- MySQL核心基础(一)之数据库介绍
- MySQL的EVENT调度器详解
- 黄聪:MYSQL提交一批ID,查询数据库中不存在的ID并返回
- mysql闪退解决
- MySQL快速复制数据库数据表的方法
- Mysql复制表结构、表数据的方法
- mysql数据库字段内容替换案例
- (mysql)触发器、事件、事务、函数
- [每日一答] [20151008] 使用ZIP包安装MySQL数据库
- mysql 常用命令行
- Ubuntu下mysql无法重启
- MySQL技术之旅-MySQL的前世今生
- mysql插入数据过大, Lost connection to MySQL server
- Mysql学习笔记(八)由触发器回顾外键约束中的级联选项
- mysql命令大全