文档章节

18.5.13.3 在线增加 MySQL Cluster 数据节点: 详细例子

l
 liangkiller
发布于 2015/05/11 16:51
字数 862
阅读 32
收藏 1

18.5.13.3 在线增加 MySQL Cluster 数据节点: 详细例子
https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-online-add-node-example.html

MySQL Cluster开始有1个组2个节点,增加到2个组4个节点。

开始的配置

[ndbd default]
DataMemory = 100M
IndexMemory = 100M
NoOfReplicas = 2
DataDir = /usr/local/mysql/var/mysql-cluster

[ndbd]
Id = 1
Hostname = x.1

[ndbd]
Id = 2
Hostname = x.2

[ndb_mgmd]
Id = 10
Hostname = x.10

[mysqld]
Id = 20
Hostname = x.20

[mysqld]
Id = 21
Hostname = x.21

在数据节点ID段和其他节点ID段留下一段空白。为新加节点留下空间。
x 表示:192.168.0


Step 1: 修改config.ini

[ndbd default]
DataMemory = 100M
IndexMemory = 100M
NoOfReplicas = 2
DataDir = /usr/local/mysql/var/mysql-cluster

[ndbd]
Id = 1
Hostname = x.1

[ndbd]
Id = 2
Hostname = x.2

[ndbd]
Id = 3
Hostname = x.3

[ndbd]
Id = 4
Hostname = x.4

[ndb_mgmd]
Id = 10
Hostname = x.10

[mysqld]
Id = 20
Hostname = x.20

[mysqld]
Id = 21
Hostname = x.21


Step 2:重启管理节点

(1)使用管理客户端停止管理节点

ndb_mgm> 10 STOP


(2) 从shell启动管理节点。使用--reload或--initial选项来重载配置文件。

shell> ndb_mgmd -f config.ini --reload


Step 3:滚动重启现有的数据节点

ndb_mgm> 1 RESTART
ndb_mgm> 2 RESTART


可以通过检查ndbinfo.nodes表来查看数据节点是否使用新的配置。

Step 4:滚动重启API节点

shell> mysqladmin shutdown
shell> mysqld_safe --ndbcluster --ndb-connectstring=x.10 &


Step 5:使用--initial启动新的数据节点

shell> ndbd -c x.10 --initial


不同于重启已存在的数据节点要等待一个数据节点启动好,可以并行启动新数据节点。

查看新节点是否启动好

ndb_mgm> SHOW


Step 6:创建节点组,使用CREATE NODEGROUP,参数是数据节点ID

ndb_mgm> CREATE NODEGROUP 3,4
ndb_mgm> SHOW


Step 7:重分配集群数据
当创建一个新节点组时,现有的数据和索引不会自动分配到新的节点组数据节点

ndb_mgm> ALL REPORT MEMORY


使用ndb_desc查看分区信息。查看ips表的情况

shell> ndb_desc -c x.10 -d n ips -p


可以在mysqld里运行ALTER ONLINE TABLE table_name  REORGANIZE PARTITION 语句来重分配数据。

另外,对每一张,ALTER ONLINE TABLE 语句要跟着OPTIMIZE TABLE 回收浪费的空间。可以从INFORMATION_SCHEMA.TABLES里获取所有NDBCLUSTER的表。

SELECT TABLE_SCHEMA,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='NDBCLUSTER';

NDBCLUSTER只有DDL操作能一次执行。必须等一个ALTER ONLINE TABLE ... REORGANIZE PARTITION 语句运行完才能运行下一个。

在新数据节点增加好后,新创建的表就不用ALTER ONLINE TABLE ...REORGANIZE PARTITION,会自动分发到所有节点。然后,之前的表如果没有ALTER ONLINE TABLE ... REORGANIZE PARTITION ,添加的新数据也不会分发到新数据节点。

可选过程,不用滚动重启

在配置时就先定义好节点组,但不使用。

[ndbd default]
DataMemory = 100M
IndexMemory = 100M
NoOfReplicas = 2
DataDir = /var/lib/mysql/
[ndbd]
Id = 1
Hostname = x.1
[ndbd]
Id = 2
Hostname = x.2
[ndbd]
Id = 3
Hostname = x.3
Nodegroup = 65536
[ndbd]
Id = 4
Hostname = x.4
Nodegroup = 65536
[ndb_mgmd]
Id = 10
Hostname = x.10
[mysqld]
Id = 20
Hostname = x.20
[mysqld]
Id = 21
Hostname = x.21

稍后上线的node 3,4可以配置为NodeGroup = 65536,node1,2启动

shell> ndbd -c 192.168.0.10 --initial

在管理节点配置NodeGroup=65536的数据节点就像 等待StartNoNodeGroupTimeout时间(默认15秒)后使用--nowait-nodes=3,4启动node1,2。

当想要增加第二节点组时,只需进行以下操作:

1 启动数据节点3,4

shell> ndbd -c 192.168.0.10 --initial


2 在管理节点使用CREATE NODEGROUP

ndb_mgm> CREATE NODEGROUP 3,4


3 在MYSQLD,为NDBCLUSTER表使用ALTER ONLINE TABLE ... REORGANIZE PARTITIION 和 OPTIMIZE TABLE 语句。


© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 1
码字总数 862
作品 0
厦门
MySQL Cluster 7.0 GA 发布

MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的...

红薯
2009/04/30
552
0
MySQL集群安装、负载均衡及备份恢复

MYSQL集群安装学习笔记 【一】服务器准备(操作系统linux皆可,我用的是RHEL6.4): 一个管理节点 10.101.4.32 两个数据节点 10.101.4.33 10.101.4.34 两个查询节点 10.101.4.36 10.101.4.3...

howlshadow
2015/01/16
0
0
MySQL Cluster(MySQL 集群) 初试

MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的...

红薯
2009/04/29
10.9K
12
Mysql Cluster 7.6.4 环境搭建

MySQL Cluster 介绍 MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统。不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能。和Oracle Real Cluster Appli...

59090939
06/26
0
0
[转载] MySQL Cluster 配置指南

网上看到一篇介绍 MySQL Cluster 配置指南的文章,发现真的很有参考价值,马上转录下来以供日后参考(本文出自 “持久之战的战场” 博客,请务必保留此出处http://vdata.blog.51cto.com/275...

长平狐
2012/11/19
860
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高三暑假我是怎么想开去学linux系统的

高三的时候,我有一句口头禅:“老了老了,现在做题越来越迟钝了”。当时整天日夜苦读,体重日益增加,脸色越来越黯淡,我在终于熬过了高考的时候,简直心里面乐得开了花。我终于可以去做自己...

linuxprobe16
19分钟前
0
0
Python 获得命令行参数的方法

需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2]

编程老陆
26分钟前
0
0
链队

队列用链表来表示时,需要用两个变量来记录队列两端的变化:theFront,theBack. 根据链接方向的不同,链队有两种链接方式(其实就是链表的头插入节点和尾插入节点,头删除节点和尾删除节点)。...

Frost729
30分钟前
0
0
IDEA toString() json模板

public java.lang.String toString() {java.lang.StringBuilder builder = new java.lang.StringBuilder();#set ($i = 0)#foreach ($member in $members)#if ($i == 0)builder.appen......

Mtok
40分钟前
0
0
Dubbo内核实现之SPI简单介绍

Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLo...

明理萝
45分钟前
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部