MySQL集群专题

1,MySQL Replication

mysql复制(MySQL Replication),是mysql自带的功能。

主从复制是通过重放binlog实现主库数据的异步复制。即当主库执行了一条sql命令,那么在从库同样的执行一遍,从而达到主从复制的效果。在这个过程中,master对数据的写操作记入二进制日志文件中(binlog),生成一个 log dump 线程,用来给从库的 i/o线程传binlog。而从库的i/o线程去请求主库的binlog,并将得到的binlog日志写到中继日志(relaylog)中,从库的sql线程,会读取relaylog文件中的日志,并解析成具体操作,通过主从的操作一致,而达到最终数据一致。

MySQL Replication一主多从的结构,主要目的是实现数据的多点备份(没有故障自动转移和负载均衡)。相比于单个的mysql,一主多从下的优势如下:

(1),让后台读操作连接从数据库,让写操作连接主数据库,实现读写分离。此时多个从数据库可以作读写分离

(2),可以让某个从数据库暂时中断复制进程,来备份数据,从而不影响主库的对外服务,如果使用主库采用backup,会使主库长时间处于只读状态,这样外界的写请求都会被阻塞,影响并发

就各个集群方案来说,其优势为:

  • 主从复制是mysql自带的,无需借助第三方。
  • 数据被删除,可以从binlog日志中恢复。
  • 配置较为简单方便。

其劣势为:

  • 从库要从binlog获取数据并重放,这肯定与主库写入数据存在时间延迟,因此从库的数据总是要滞后主库。
  • 对主库与从库之间的网络延迟要求较高,若网络延迟太高,将加重上述的滞后,造成最终数据的不一致。
  • 单一的主节点挂了,将不能对外提供写服务。

2,MySQL Fabirc

在MySQL Replication的基础上,增加了故障检测与转移,自动数据分片功能。不过依旧是一主多从的结构,MySQL Fabirc只有一个主节点,区别是当该主节点挂了以后,会从从节点中选择一个来当主节点

其优势为:

  • 主节点挂了以后,会选择一个从节点当作主节点,不影响写服务

其劣势为:

  • 从库要从binlog获取数据并重放,这肯定与主库写入数据存在时间延迟,因此从库的数据总是要滞后主库。
  • 对主库与从库之间的网络延迟要求较高,若网络延迟太高,将加重上述的滞后,造成最终数据的不一致。

3,MySQL Cluster

这个为多主多从结构的

其优势为:

  • 高可用性优秀,99.999%的可用性,可以自动切分数据,能跨节点冗余数据
  • 可伸缩性优秀,能自动进行数据切分,方便数据库水平扩展
  • 负载均衡优秀,可同时用于读写密集应用
  • 多个主节点,不存在单点故障的问题,节点恢复时间小于1秒

劣势:

  • 架构复杂
  • 只能使用存储引擎 NDB ,与平常使用的InnoDB 有很多明显的差距。
  • 对节点之间的内部网络带宽要求很高
  • Data Node数据会被尽量放在内存中,对内存要求大,而且重启的时候,数据节点将数据load到内存需要很长时间。

4,MMM

MMM是在MySQL Replication的基础上做的优化,采用双主多从架构。使用Perl语言来对MySQL Replication做扩展,提供一套支持双主故障切换和双主日常管理的脚本程序,主要用来监控mysql主主复制并做失败转移。这里的双主节点,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热。

其优势为:

  • 自动的主主Failover切换,一般3s以内切换备机。
  • 多个从节点读的负载均衡。

其劣势为:

  • 无法完全保证数据的一致性。如主1挂了,MMM monitor已经切换到主2上来了,而若此时双主复制中,主2数据落后于主1(即还未完全复制完毕),那么此时的主2已经成为主节点,对外提供写服务,从而导致数据不一。
  • 由于是使用虚拟IP浮动技术,类似Keepalived,故RIP(真实IP)要和VIP(虚拟IP)在同一网段。如果是在不同网段也可以,需要用到虚拟路由技术。但是绝对要在同一个IDC机房,不可跨IDC机房组建集群。

5,MHA

MHA是在MySQL Replication的基础上做的优化,采用多主多从架构。

主要提供更多的主节点,但是缺少VIP(虚拟IP),需要配合keepalived等一起使用。要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库。

其优势为:

  • 可以进行故障的自动检测和转移
  • 具备自动数据补偿能力,在主库异常崩溃时能够最大程度的保证数据的一致性。

其劣势为:

  • MHA架构实现读写分离,最佳实践是在应用开发设计时提前规划读写分离事宜,在使用时设置两个连接池,即读连接池与写连接池,也可以选择折中方案即引入SQL Proxy。但无论如何都需要改动代码;

  • 关于读负载均衡可以使用F5、LVS、HAPROXY或者SQL Proxy等工具,只要能实现负载均衡、故障检查及备升级为主后的读写剥离功能即可,建议使用LVS

6,Zookeeper + proxy

Zookeeper使用分布式算法保证集群数据的一致性,使用zookeeper可以有效的保证proxy的高可用性,可以较好的避免网络分区现象的产生。

优势为:

  • 扩展性较好,可以扩展为大规模集群。

缺其劣势为:

  • 搭建Zookeeper 集群,在配置一套代理,整个系统的逻辑变得更加复杂。

7,Paxos

分布式一致性算法,Paxos 算法处理的问题是一个分布式系统如何就某个值(决议)达成一致。这个算法被认为是同类算法中最有效的。Paxos与MySQL相结合可以实现在分布式的MySQL数据的强一致性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nathaniel333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值