文档章节

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 配置指南

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

长平狐
2012/11/19
860
0
Mysql Cluster 7.6.4 环境搭建

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

59090939
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring之IOC和AOP学习摘要

一、IOC(Inversion of Control)或者依赖注入(Dependency Injection) 1、底层实现原理:反射 2、三大核心接口: BeanFactory:简单容器系列,只是实现了容器最基本的功能。 ApplicationC...

狠一点
24分钟前
4
0
缓存架构SpringBoot集成Curator实现zookeeper分布式锁

一、分布式锁简介 1、什么是锁 在单机环境下,当存在多个线程可以同时改变某个共享变量时,就需要同步来实现该功能,使其线程安全。 而同步就是通过锁来实现的。锁保证了同一时刻只有一个线程...

架构师springboot
26分钟前
1
0
11《Java核心技术》之Java提供了哪些IO方式? NIO如何实现多路复用?

一、提出问题 IO 一直是软件开发中的核心部分之一,伴随着海量数据增长和分布式系统的发展,IO 扩展能力愈发重要。幸运的是,Java 平台 IO 机制经过不断完善,虽然在某些方面仍有不足,但已经...

飞鱼说编程
33分钟前
4
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

linuxprobe16
33分钟前
1
0
55:Mysql用户管理|常用sql语句|mysql数据库备份恢复

1、Mysql用户管理; 场景,为了安全,新建的站点,创建新的用户,或者给已有用户授权,对某个库或者某个表有权限; 语法: grant all on *.* to 'user'@'127.0.0.1' identified by 'password'; g...

芬野de博客
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部