MySQL cluster集群/NDB集群学习
公司主业务用的MySQL集群是官方自带的MySQL Cluster,MySQL自带的集群模式,这个集群的模式和MGR、PXC、主从 有点不一样。
一、存储引擎不是innodb,MySQL Cluster用的是NDB引擎
二、数据存储方式不同,MySQL的其他集群方式数据是存在磁盘上的,中间数据的缓存用rely log纪录,之后持久化的写入要硬盘
而MySQL Cluster集群的数据是保存在内存里面的,没有写错,数据保存是在内存里,这表示如果机器dowm掉了,数据就会丢失,所以目前我们采用的方式每天全备一次作为增量处理
三、MySQL Cluster数据各个节点不一定相同,首先这种集群模式是:SQL管理节点+数据存储节点 模式,简单的来说,需要一个服务器单独搭建一个MySQL作为管理作用,不存储任何数据,需要另一个服务器作为数据存储作用,不管前端的SQL,所有的调用数据库操作,接口都是面向MySQL Cluster的管理节点,最后数据存储通过管理节点在给到数据节点。
所以当有多个数据节点时,管理节点有分组管理配置可选,一般来说一个组会有两到三台作为相同数据的机器(称为副本),
每个组的副本之间的数据是强一致性的,所以挂掉一个副本不会对该组造成数据影响,而不同组的数据可能是不一样的。不像PXC、MGR各个节点数据一致。
MySQL Cluster集群允许一个组(group)里面的副本只要有一个存活,便能继续使用,若是一个group中的所有副本全挂掉,即相当于挂掉了一个group,则整个集群全部down掉不可用,所以最好就是配2-3个副本保证单副本挂掉不会影响集群。
踩过的坑:MySQL cluster在线加索引会锁表,需要用online语法,用了online语法不是完全就能不锁表的,这个锁表机制好像无规律触发,官网论坛上有这个问题反馈,不过并未看到有任何回复。
昨天测试机挂了,然后老板就说测试机好像不太行了,先把MySQL和Oracle备份一下吧,所以今天就开始动手备份NDB数据。(注意NDB引擎只有MySQL Cluster在用,所以谈到NDB一般指的就是MySQL Cluster)
NDB的备份用自带的命令就可以了,在管理节点的机器上直接打shell命令进入管理界面,命令是:
ndb_mgm
进入管理界面后,查看有哪些数据节点:
[root@DB214 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
--查看管理节点
ndb_mgm> show
Connected to Management Server at: 192.168.1.213:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 1 node(s)
id=21 @192.168.1.100 (mysql-5.6.28 ndb-7.4.10, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.213 (mysql-5.6.28 ndb-7.4.10)
[mysqld(API)] 7 node(s)
id=41 @192.168.1.213 (mysql-5.6.28 ndb-7.4.10)
id=42 (not connected, accepting connect from any host)
id=43 (not connected, accepting connect from any host)
id=44 (not connected, accepting connect from any host)
id=45 (not connected, accepting connect from any host)
id=46 (not connected, accepting connect from any host)
id=47 (not connected, accepting connect from any host)
看到管理节点ip,执行启动备份命令,注意,备份数据是放在每个数据节点的机器上,所以我们在管理节点启动备份命令后,最后要登陆数据节点机器去把备份数据移走,备份命令:
ndb_mgm> start backup
Waiting for completed, this may take several minutes
Node 21: Backup 3 started from node 1
ndb_mgm> Node 21: Backup 3 started from node 1 completed
StartGCP: 31167689 StopGCP: 31167697
#Records: 2622197 #LogRecords: 0
Data: 336303024 bytes Log: 0 bytes
默认备份数据存放在数据节点的:/var/mysql/data/BACKUP目录下
还没有评论,来说两句吧...