本文整理自网络,侵删。
目录
- 引言
- MySQL高可用
- 一主一备:
- MySQL主从同步的几种模式:
- 总结
引言
“高可用”是互联网一个永恒的话题,先避开MySQL不谈,为了保证各种服务的高可用有几种常用的解决方案。
服务冗余:把服务部署多份,当某个节点不可用时,切换到其他节点。服务冗余对于无状态的服务是相对容易的。
服务备份:有些服务是无法同时存在多个运行时的,比如说:Nginx的反向代理,一些集群的leader节点。这时可以存在一个备份服务,处于随时待命状态。
自动切换:服务冗余之后,当某个节点不可用时,要做到快速切换。
总结起来就是?冗余+故障转移?。
MySQL高可用
MySQL的高可用也是同样的思路,首先要有多个MySQL实例提供服务,其次就是当某个实例挂掉时,可以自动切换流量。同时MySQL作为存储,节点之间数据同步也是一个难题(换句话说,有状态的服务都面临这个问题)。
一主一备:
MySQL的各种高可用架构,都脱离不了MySQL实例之间的数据同步,因此,我们先介绍下最简单的一主一备架构下MySQL的数据同步流程。
上图是主从数据同步的一个示意图。
Master节点有Dump进程把binlog中的数据发送到Slave节点,
Slave节点有IO进程接收数据写入relay log,
Slave节点的SQL进程根据relay log写入数据。
这里还要延伸一点,binlog存在三种形式:Statement、Row、Mixed。
Statement:就是把每一条SQL记录到binlog中。
Row:是把每一行修改的具体数据记录到binlog中。
Mixed:MySQL会灵活的区分,需要记录sql还是具体修改的记录。
只记录SQL的话binlog会比较小,但是有些SQL语句在主从同步数据的时候,可能会因为选择不同的索引在数据同步过程中出现数据不一致。记录Row的话就可以保证主从同步不会存在SQL语意偏差的问题,同时Row类型的日志在做数据恢复的时候也比较容易,但是Row会导致binlog过大。
MySQL主从同步的几种模式:
异步模式:
在这种同步策略下,主库按照自己的流程处理完数据,会直接返回结果,不会等待主库和从库之间的数据同步。 优点:效率高。 缺点:Master节点挂掉之后,Slave节点会丢失数据。全同步模式: 主库会等待所有从库都执行完sql语句并ACK完成,才返回成功。 优点:有很好的数据一致性保障。 缺点:会造成数据操作延迟,降低了MySQL的吞吐量。半同步模式:主库会等待至少有一个从库把数据写入relay log并ACK完成,才成功返回结果。 半同步模式介于异步和全同步之间。
半同步的复制方案是在MySQL5.5开始引入的,普通的半同步复制方案步骤如下图:
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL之高可用架构详解
相关推荐
评论
管理员已关闭评论功能...