部分、多读高可用(Master-Slave)
一、主从复制
二、可从不同角度分为以下几类
1、一主一从、一主多从、级联复制、多源复制
2、主从加密、主从不加密
3、基于position、基于gtid
4、实时备库、延时备库
5、异步复制、半同步复制(可用rpl_semi_sync_master插件)
第二部分、多写高可用(multi-master)
前言:
Galera Cluster是引领时代的高可用技术,主要有PXC和MGC。
MGR与MGC、PXC类似,但MGR基于原生复制技术。
一、PXC(Percona XtraDB Cluster)
1、PXC简介
(1)PXC是Percona对Galera的自我实现,用的人很多,大的特点是强一致性、无同步延迟。
(2)节点的数据传输方式有Incremental State Transfer 增量同步、State Snapshot Transfer 全量同步
2、主要特性如下
多主架构:多点读写集群,为防脑裂少3个节点;
同步复制:提交返回OK之前,以物理块方式发送write set给组成员,解决了一致性问题;
并发复制:从节点在apply数据时,支持并行执行
故障切换:同步复制,在出现数据库故障时可以很容易的进行故障切换;
热插拔:在节点故障期间,节点本身对集群的影响非常小;
自动节点克隆:新加入的节点可以自动部署,无须提供手动备份,维护起来很方便;
二、MGC(MariaDB Galera Cluster)
MariaDB对Galera的实现。
三、MGR(Mysql Group Replication)
1、MGR组复制与传统复制机制的对比
(1)MySQL异步复制
主库只会通知Dump 线程发送新的 Binlog,然后主库就commit,不保证这些 Binlog 传到任何从库节点上。
假设master发生宕机且binlog还没被slave接收,而切换程序将slave提升为新的master,就会数据不一致。
(2)MySQL半同步复制
在master的事务commit前,必须确保至少一个slave收到relay log并且响应给master以后。
但是slave对于relay log的应用仍然是异进行的。
(3)MySQL组复制
若干节点组成复制组,事务的提交必须经过组内多数节点决议并通过,才能得以提交。
组内各个节点维护各自的数据副本,通过分布式一致性协议终实现组内实例数据的一致,提供了多写高可用方案。
2、MGR特点如下:
(1)高一致性:基于分布式paxos协议实现组复制,保证数据一致性;
(1)高容错性:自动检测机制,只要不是大多数节点都宕机就可以继续工作,内置防脑裂保护机制;
(1)高扩展性:节点的增加与移除会自动更新组成员信息,新节点加入后,自动从其他节点同步增量数据,直到与其他节点数据一致;
(1)高灵活性:提供单主模式和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主节点进行,多主模式支持多节点写入
3、MGR基于原生复制技术,采用mysql8.0的writeset,并发复制性能显著提高。并行复制三个比较关键的时间结点如下:
(1)5.6库间并发
(2)5.7组提交
(3)8.0写集合write set
4、MGR依赖于以下参数
binlog_format=row
gtid_mode=ON
第三部分、多写高可用~分库分表分布式中间件(sharding)
功能举例:
读写分离
从库负载均衡
自动分表
IP过滤
SQL语句黑白名单
DBA可平滑上下线DB
自动摘除宕机的DB
一、客户端架构(lib库)
1、优点
业务直接到数据库,少一层proxy效率更高
没有proxy的lvs的单点问题
2、缺点
扩展性一般
分片逻辑的压力在客户端
3、案例举例
(1)Sharding-JDBC(开源,lib)
轻量级数据库驱动,由客户端直连数据库,以jar包形式提供服务。
旧代码迁移零成本,广泛应用于各大互联网公司。
作者已去京东做全职Sharding-JDBC开发,相信Sharding-JDBC社区的发展将会更好。
二、代理架构(proxy)
1、优点
(1)统一管理所有到数据库的连接,连接复用
(2)易于实现监控、连接管理等功能
2、缺点
(1)代理连接数据库、性能有损失
(2)需运维独立的代理中间件
(3)自身的高可用需使用keepalive等实现
3、案例举例
(1)OneProxy(不开源,proxy)
原支付宝首席架构师楼方鑫开发,目前由楼方鑫创立的杭州平民软件公司提供技术支持。
已有多家公司在生成环境中使用,其中包括了支付电商等行业。
(2)Mycat(开源,proxy)
阿里巴巴的mycat是国内活跃的开源数据库中间件,据不完全统计大概600家公司使用。
(3)DBProxy(开源,proxy)
美团点评在360Atlas基础上开发的读写分离中间件。
动力小刚于2019年4月 个人邮箱:zcs0237#163.com