绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
简单总结mysql主从+多主+分布式架构
2019-05-01 16:42:25


第一部分、多读高可用(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

分享好友

分享这个小栈给你的朋友们,一起进步吧。

MySQL干货资料
创建时间:2020-05-06 14:18:32
每天都有干货输出哦
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~