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 ...
随机推荐
- Python3的decode()与encode()
python3的decode()与encode() Tags: Python Python3 对于从python2.7过来的人,对python3的感受就是python3对文本以及二进制数据做了比较清晰 ...
- Intellij Idea中定制getter setter的模板
Alt + Ins, 调出快捷菜单后选择 Getter and Setter, 在对话框里, 选择对应的template, 右侧点开后, 可以新建自己的模板并编辑 将getter和setter都生成到 ...
- flask+sqlite3+echarts3+ajax 异步更新数据
结构: /www | |-- /static |....|-- jquery-3.1.1.js |....|-- echarts.js(echarts3是单文件!!) | |-- /templates ...
- [转]Java线程安全总结
最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣.已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profi ...
- npm+node+cordova+ionic 版本匹配
npm 2.15.8 node 4.4.7 cordova 6.1.0 ionic 1.7.16
- Android开发环境的演变
之前安装过eclipse,给我的感觉是,好生麻烦.刚开始自己装花了好多时间.隐约还记得有两个小tips: 1)打开时出现 “failed to load the JNI shared library ...
- classpath: VS classpath*:
同名资源存在时,classpath: 只从第一个符合条件的classpath中加载资源,而classpath*: 会从所有的classpath中加载符合条件的资源 classpath*:需要遍历所有的 ...
- Android中Shape的使用
先看一下文档对Shape Drawable的描述: Shape Drawable An XML file that defines a geometric shape, including color ...
- Java语法
java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...
- BZOJ 1878: [SDOI2009]HH的项链
1878: [SDOI2009]HH的项链 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3548 Solved: 1757[Submit][Statu ...