增加或减少数据节点的数量和 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/data

ndbcluster
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在线添加数据节点的更多相关文章

  1. MySQL Cluster 4个数据节点压力测试--mysqlslap工具压400W写

    锅巴哥的个人建议:cluster叫电信运营商版本,所以基本上在很大的用户并发量的情况下才会用到,对连接数的线性增长要求高的场景,千兆就不用想了, 没万兆就不用玩了. 很不幸,我的就是千兆网络,我的数据 ...

  2. KingbaseES R6 集群通过备库clone在线添加新节点

    案例说明: KingbaseES R6集群可以通过图形化方式在线添加新节点,但是在添加新节点clone环节时,是从主库copy数据到新的节点,这样在生产环境,如果数据量大,将会对主库的网络I/O造成压 ...

  3. Windows Server 2008R2配置MySQL Cluster并将管理节点和数据节点配置成windows服务

    说明:将mysql的管理节点和数据节点配置成windows服务是为了防止有人手误关闭管理节点或数据节点的dos命令窗口,管理节点或数据节点的命令窗口误关闭可能会造成mysql某台或某几台mysql不能 ...

  4. MySQL Cluster在线备份和恢复

    备份方式 一般MySQL数据库都是用mysqldump命令进行数据备份,其生成的文件实际上是创建对象和导入对象的sql语句. 在MySQL Cluster集群上,可以在管理节点上使用start bac ...

  5. KingbaseES R3集群在线删除数据节点案例

    案例说明: kingbaseES R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点:对于非管理节点的数据节点可以在线删除:但是对于管理节点,无法在线删除,如果删除管理 ...

  6. CentOS上安装Hadoop2.7,添加数据节点,运行wordcount

    安装hadoop的步骤比较繁琐,但是并不难. 在CentOS上安装Hadoop2.7 1. 安装 CentOS,注:图形界面并无必要 2. 在CentOS里设置静态IP,手工编辑如下4个文件 /etc ...

  7. MyBatis+mysql查询和添加数据

    项目结构: Menu package com.mstf.dao; import java.util.Scanner; import org.apache.ibatis.session.SqlSessi ...

  8. (转载)MySQl数据库-批量添加数据的两种方法

    方法一:使用excel表格 方法二:使用insert语句(FileWriter批量写入) 使用excel表格 1.打开数据表,按照表的字段在excel中添加数据.注意:表中字段名必须和excel中的名 ...

  9. mysql 向字段添加数据或者删除数据

    UPDATE table SET cids = CONCAT(cids , ',12') where id=id //向字段添加数据 //因为要用逗号分隔 所以在在前面加了一个逗号 UPDATE ta ...

随机推荐

  1. [普通平衡树splay]【学习笔记】

    参考: http://blog.csdn.net/clove_unique/article/details/50630280 gty课件 找一个好的风格太难了,自己习惯用struct,就强行用stru ...

  2. NOIP模拟赛20161016R2

    Problem 1 护花(flower.cpp/c/pas) [题目描述] 约翰留下他的N(N<=100000)只奶牛上山采木.他离开的时候,她们像往常一样悠闲地在草场里吃草.可是,当他回来的时 ...

  3. 解决win10卡顿现象

    前两天打开了windows defender,想着既然是window自带的防护工具,应该效果不错.经过测试之后 ,发现这个要占用很大内存,得不偿失.如果想要保证系统安全,甚至腾讯电脑管家做的都比这个w ...

  4. Spring BeanUtils 的对象复制 copyProperties

    Spring提供了一个非常棒的对象复制方法, 其参数的顺序和apache commons提供的同名方法是不一样的, 这个要小心. 源码 public static void copyPropertie ...

  5. CWMP开源代码研究2——easycwmp安装和学习

    声明:本文是对开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文所有笔记和代码可以到csdn下载:http://download.csdn.n ...

  6. docker创建镜像

    手动创建: docker run -d -p mynginx:v2 nginx rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest- ...

  7. IO(七)----转换流

    输入字节流的转换流:InputStreamReader 是字节流通向字符流的桥梁. 输出字节流的转换流:OutputStreamWriter  可以把输出字节流转换成输出字符流 .  是符流通向字节流 ...

  8. JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)

    前言:上篇 JS组件系列——表格组件神器:bootstrap table 简单介绍了下Bootstrap Table的基础用法,没想到讨论还挺热烈的.有园友在评论中提到了父子表的用法,今天就结合Boo ...

  9. ECMAScript 6 Features 中文版

    ECMAScript 6 Features 中文版 如词不达意,欢迎提 PR & issue 采用中英混排的方式进行译制,如不解请查看对应原文 本文档将与原作者的 文档 保持同步更新,欢迎关注 ...

  10. 处理 pcap 中的 mac 二进制字节流为可读格式

    import struct # 利用 struct 处理字节流中的mac地址 适用于小端地址操作系统 def mac2str(bi_mac): mac = "" for i in ...