MySQL cluster集群/NDB集群学习

ゝ一世哀愁。 2022-02-15 07:46 583阅读 0赞

公司主业务用的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命令进入管理界面,命令是:

  1. ndb_mgm

进入管理界面后,查看有哪些数据节点:

  1. [root@DB214 ~]# ndb_mgm
  2. -- NDB Cluster -- Management Client --
  3. --查看管理节点
  4. ndb_mgm> show
  5. Connected to Management Server at: 192.168.1.213:1186
  6. Cluster Configuration
  7. ---------------------
  8. [ndbd(NDB)] 1 node(s)
  9. id=21 @192.168.1.100 (mysql-5.6.28 ndb-7.4.10, Nodegroup: 0, *)
  10. [ndb_mgmd(MGM)] 1 node(s)
  11. id=1 @192.168.1.213 (mysql-5.6.28 ndb-7.4.10)
  12. [mysqld(API)] 7 node(s)
  13. id=41 @192.168.1.213 (mysql-5.6.28 ndb-7.4.10)
  14. id=42 (not connected, accepting connect from any host)
  15. id=43 (not connected, accepting connect from any host)
  16. id=44 (not connected, accepting connect from any host)
  17. id=45 (not connected, accepting connect from any host)
  18. id=46 (not connected, accepting connect from any host)
  19. id=47 (not connected, accepting connect from any host)

看到管理节点ip,执行启动备份命令,注意,备份数据是放在每个数据节点的机器上,所以我们在管理节点启动备份命令后,最后要登陆数据节点机器去把备份数据移走,备份命令:

  1. ndb_mgm> start backup
  2. Waiting for completed, this may take several minutes
  3. Node 21: Backup 3 started from node 1
  4. ndb_mgm> Node 21: Backup 3 started from node 1 completed
  5. StartGCP: 31167689 StopGCP: 31167697
  6. #Records: 2622197 #LogRecords: 0
  7. Data: 336303024 bytes Log: 0 bytes

默认备份数据存放在数据节点的:/var/mysql/data/BACKUP目录下

发表评论

表情:
评论列表 (有 0 条评论,583人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL Cluster学习笔记

    前期问题: 看整个运行过程,如何分配任务给SQL节点;OK SQL节点如何接入数据节点;OK 各个节点蹦了可咋整;OK 管理节点的备份;OK 数据节点那一片是怎么个回