mysql cluster binlog_Mysql Cluster (一) | 学步园

之前也听过人人网曾使用过代替普通MC缓存的方案,然后自己看了下相关的文档,这里记录一下。

MysqlCluster主要分为三个核心部分:cluster manager 、  sql node 、 ndb node

cluster manager : 类似一个管理节点,负责管理sql node 和 ndb node , 同时也会保存元数据信息,这个对高可用要求不高,挂了不影响服务.

sql node : 其实就是一个装了NDB engine 的Mysql Server,负责提供服务,但是不做数据存储。

ndb node : 主要做数据存储用,默认全内存的,也可以指定为磁盘的文件,也叫做data node。

安全配置就不说了,网上很多,文档也有介绍。

HA , 高可用:

ndb node 有group 的概念,比如有两个ndb node : node1 , node2 。这两个做一个group , 那么这个group 会存两份数据,这样有一份坏掉,数据的完整性也能保证,如果有四个节点,可以做两个group , group 之间做数据分片,group 之内做数据冗余,目前一台机器只能启一个ndb node .一个Group之间的Node也有主和从的概念,只能有一个主,主挂了会从从节点中选主。

sql node 的高可用官方就是启动多个sql node ,但是我觉得这样没啥用,因为程序只能连一个sql node ,前端可以做LVS或者用keepalive,对多个SQLNode做高可用。

mysql cluster 最大的优点就是可以动态增加节点,因为数据是存内存的,所以加节点就类似于扩容,加节点需要一台一台的重启ndb manager 、 sql node  、ndb node,因为数据有多份,所以可以做到在线的变更,当节点加入集群,数据需要重新分布,这个也是在线的。

mysql cluster 也能做到备份和恢复,类似于在每个数据节点上做一个快照,每个数据节点目录下都会有一份备份文件,恢复也靠这个恢复。

mysql cluster 也是能支持事务的,也有自己的redo 和undo , redo统一存在磁盘,Undo则是看情况,内存表在内存,磁盘表在磁盘。

Mysql cluster 之间也能做复制,就是说两个集群之间也能做复制,有个前提:binlog 格式必须是ROW Based,写binlog是有一个injector thread来完成的,为什么不同MysqlServer来写Binlog呢?因为如果是MysqlServer写Binlog,如果程序直接通过NDB的API操作数据Binlog就会少很多,所以又新启了一个线程。

Mysql cluster 数据切分,Mysql cluster 默认的切分方法是根据主键做Hash,如果没主键则用唯一建,如果连唯一建都没有则采用Innodb的Rowid。

至于性能倒是没测试,数据全存内存应该不会差。mysql cluster算是目前Mysql主推的一个产品,但是貌似大家对这种全内存的方案不是太感冒,应用到生产环境还需要更多的尝试和测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值