MySQL Cluster在线添加数据节点
增加或减少数据节点的数量和 NoOfReplicas(即副本数,通过管理节点的config.ini配置文件来设置)有关,一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas。首先必须确保新加入的数据节点作为新的group加入,默认2个node为1个group,Group数量 = NDB节点总数 / NoOfReplicas数。
1、修改管理节点的config.ini配置文件 ,添加如下一段:
[ndbd]
NodeId = 13
HostName = 192.168.137.106[ndbd]
NodeId = 14
HostName = 192.168.137.107
这里的NodeId不能跟已有的NodeId重复
2、配置节点
# 拷贝文件
\cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 修改配置文件
vim /etc/my.cnf
# my.cnf内容如下:
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/datandbcluster
ndb-connectstring = 192.168.137.101[mysql_cluster]
ndb-connectstring = 192.168.137.101
3、关闭管理节点,用reload方式启动管理节点:
#执行ndb_mgm进入管理命令界面
#找到管理节点的id,然后执行 管理节点id stop,退出
/usr/local/mysql/bin/ndb_mgmd -f /usr/local/mysql/etc/config.ini --reload #加上reload参数,使得修改过的config.ini生效
启动成功后用show查看,可以 看到新加入的数据节点,并且处于未连接状态。
4、滚动重启旧的数据存储节点服务(滚动重启,不能所有节点同时重启,如果同时停止,数据库前端查询就会出现错误)
ndb_mgm> 11 restart
Node 11: Node shutdown initiated
Node 11: Node shutdown completed, restarting, no start.
Node 11 is being restarted
ndb_mgm> Node 11: Start initiated (version 7.3.5)
Node 11: Started (version 7.3.5)
ndb_mgm> 12 restart
Node 12: Node shutdown initiated
Node 12: Node shutdown completed, restarting, no start.
Node 12 is being restarted
ndb_mgm> Node 12: Start initiated (version 7.3.5)
ndb_mgm> Node 12: Started (version 7.3.5)
5、滚动重启所有的数据查询节点服务
service mysqld restart
6、以初如化方式 启动新增加的数据存储节点
/usr/local/mysql/bin/ndbd --initial
启动后在管理节点上用show命令查看可以 看到新加入的节点已经启动并处于未分组状态
id=13 @192.168.137.106 (5.6.17-ndb-7.3.5, no nodegroup)
id=14 @192.168.137.107 (5.6.17-ndb-7.3.5, no nodegroup)
7、为新节点增加分组,在管理节点上ndb_mgm下输入以下命令:
ndb_mgm> create nodegroup 13,14
这时在管理节点上show,可以看到新节点已经分组。
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=11 @192.168.137.102 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, Master)
id=12 @192.168.137.103 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0)
id=13 @192.168.137.106 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 1)
id=14 @192.168.137.107 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 1)[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.137.101 (mysql-5.6.17 ndb-7.3.5)[mysqld(API)] 2 node(s)
id=81 @192.168.137.104 (mysql-5.6.17 ndb-7.3.5)
id=82 @192.168.137.105 (mysql-5.6.17 ndb-7.3.5)
8、重新分配集群数据(数据量表比较大时,会出现很多问题;我当时表里数据量为三千万条,一直报错,报错解决后提示成功,但数据没有迁移过去,最后没有弄,直接把表数据删除了……
现把网上找到的方法贴到下面:
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE = 'NDBCLUSTER';
ALTER ONLINE TABLE table_name REORGANIZE PARTITION
然后通过show命令或者使用ndb_desc命令查看
ndb_desc -c 192.168.137.101 -d tuge datasource -p
-c后面跟管理节点的ip,-d跟数据库的名字,datasource为表名,-p输出分区的详细信息
迁移之后空间还没有释放出来,需要通过optimize命令优化表,释放迁移走的空间(当optimize一个ndb大表的时候很慢,很容易出问题)
表的数据量很多的时候,最好自己编写脚本,实现数据的重新分区和优化。
参考:
http://blog.csdn.net/chenxingzhen001/article/details/7598509
MySQL Cluster在线添加数据节点的更多相关文章
- MySQL Cluster 4个数据节点压力测试--mysqlslap工具压400W写
锅巴哥的个人建议:cluster叫电信运营商版本,所以基本上在很大的用户并发量的情况下才会用到,对连接数的线性增长要求高的场景,千兆就不用想了, 没万兆就不用玩了. 很不幸,我的就是千兆网络,我的数据 ...
- KingbaseES R6 集群通过备库clone在线添加新节点
案例说明: KingbaseES R6集群可以通过图形化方式在线添加新节点,但是在添加新节点clone环节时,是从主库copy数据到新的节点,这样在生产环境,如果数据量大,将会对主库的网络I/O造成压 ...
- Windows Server 2008R2配置MySQL Cluster并将管理节点和数据节点配置成windows服务
说明:将mysql的管理节点和数据节点配置成windows服务是为了防止有人手误关闭管理节点或数据节点的dos命令窗口,管理节点或数据节点的命令窗口误关闭可能会造成mysql某台或某几台mysql不能 ...
- MySQL Cluster在线备份和恢复
备份方式 一般MySQL数据库都是用mysqldump命令进行数据备份,其生成的文件实际上是创建对象和导入对象的sql语句. 在MySQL Cluster集群上,可以在管理节点上使用start bac ...
- KingbaseES R3集群在线删除数据节点案例
案例说明: kingbaseES R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点:对于非管理节点的数据节点可以在线删除:但是对于管理节点,无法在线删除,如果删除管理 ...
- CentOS上安装Hadoop2.7,添加数据节点,运行wordcount
安装hadoop的步骤比较繁琐,但是并不难. 在CentOS上安装Hadoop2.7 1. 安装 CentOS,注:图形界面并无必要 2. 在CentOS里设置静态IP,手工编辑如下4个文件 /etc ...
- MyBatis+mysql查询和添加数据
项目结构: Menu package com.mstf.dao; import java.util.Scanner; import org.apache.ibatis.session.SqlSessi ...
- (转载)MySQl数据库-批量添加数据的两种方法
方法一:使用excel表格 方法二:使用insert语句(FileWriter批量写入) 使用excel表格 1.打开数据表,按照表的字段在excel中添加数据.注意:表中字段名必须和excel中的名 ...
- mysql 向字段添加数据或者删除数据
UPDATE table SET cids = CONCAT(cids , ',12') where id=id //向字段添加数据 //因为要用逗号分隔 所以在在前面加了一个逗号 UPDATE ta ...
随机推荐
- backbone学习总结(二)
今天来看下backbone的路由控制的功能.其实个人感觉backbone,模块就那么几个,熟悉它的框架结构,以及组成,就差不多. 废话不多说,我们来看看还剩下的功能. 关于路由和历史管理 通过 Bac ...
- 片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但
片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但片元着色器是一个更合适的名字, 因为此时的片元并不是一个真正意义上的像素.
- IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)
IntelliJ IDEA 乱码解决方案 (项目代码.控制台等) 最近IDE从eclipse改成IntelliJ IDEA 了,原因是公司大部分人都在用这个IDE,而且一直推荐用,所以尝尝鲜.换的第一 ...
- JS系列——Linq to js使用小结
前言:前面几篇介绍了下C#基础技术中的几个:反射.特性.泛型.序列化.扩展方法.Linq to Xml等,本来还有两三个知识点没有写完,比如委托.多线程.异步等,后面会陆续将它们补起来,以便作为一套完 ...
- Dribbble for windows phone 8
正如你看到文章的标题所示.这是一个Dribbble 基于windows phone 8的客户端.[开源项目] 对于大部分的开发人员来说很少关注Dribbble[不妨打开看看或是注册一个player账号 ...
- __getattitem_ \__setattitem__\__delitem__
class Foo: def __getitem__(self, item): print('getitem',item) return self.__dict__[item] def __setit ...
- MySQL远程连接丢失问题解决方法Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
最近远程连接mysql总是提示 Lost connection 很明显这是连接初始化阶段就丢失了连接的错误 其实问题很简单,都是MySQL的配置文件默认没有为远程连接配置好,只需要更改下MySQL的配 ...
- VS2015链接错误一则
以前天真的以为C是C++的子集,.c文件直接.cpp命名没什么影响: 后缀一改 链接器工具错误 LNK2019
- DropDownList控件
1.DropDownList控件 <asp:DropDownList runat="server" ID="DropDownList1" AutoPost ...
- Codeforces 2016 ACM Amman Collegiate Programming Contest B. The Little Match Girl(贪心)
传送门 Description Using at most 7 matchsticks, you can draw any of the 10 digits as in the following p ...