18-03 MySQL高可用方案与选择

主从复制

读写分离

  • 流程
    在这里插入图片描述
  • 原理 在这里插入图片描述

bin log

在这里插入图片描述

  • STATEMENT
    • 优点:记录的是执行的SQL,比较省空间,降低了主从复制时的IO开销
    • 缺点:由于记录的是SQL,所以MySQL多个节点之间复制的时候,特定场景下会导致数据不一致的情况
  • ROW
    • 优点:记录的是每条数据的变化,内容比较容易理解,不会有多个节点数据不一致的问题
    • 缺点:由于记录的是每行数据的变化,所以占用的空间较大,特别是对于字段较多的表的操作、大批量操作来说
  • MIXED
    • 两种模式的结合
    • MySQL会根据执行的具体SQL自动选择用STATEMENT或ROW
  • 如何选择?
    • STATEMENT:希望更好的性能,更小的主从复制开销,并且项目并未使用STATEMENT不支持的一些语法
    • ROW:希望更好的数据一致性、希望binlog的记录更加直观

主从复制的部署架构

一主一从,一主多从

在这里插入图片描述

级联复制

在这里插入图片描述

双主

在这里插入图片描述

MySQL复制

异步复制

  • 默认的复制方式
  • 主节点写入binlog文件后就返回客户端,不考虑binlog是否已完整同步到从节点、是否已完整存放到从节点的relay log中去
  • 优点:性能好,无阻塞
  • 缺点:如果主节点发生宕机,主节点上已提交的事务尚未同步到从节点,如果此时强行将从节点晋升为主节点,会导致新主节点数据不完整

半同步复制

  • 主库提交事务后,不立即返回,而是等待至少一个从库接收到binlog,并写入relay log才返回,从而保证主库出问题时,至少有一个从库的数据是完整的
  • 当等待超时时,会降低到异步复制,保证主库的正常更新
方案1:5.6及以前

在这里插入图片描述

  • 存在的问题:主库在等待从库确认ACK时,尽管没有返回给客户端,但是事务已被提交了。如果在binlog还未发送到从库瞬间,主库发生宕机,那么主从切换后新的主库无法读到尚未同步过来的数据
方案2:5.7开始

在这里插入图片描述

GTID复制

  • GTID(Global Transaction ID,全局事务标识)的简称,是对一个已提交事务的编号,并且全局唯一,一个事务对应一个GTID
  • GTID由UUID + TID组成,UUID是MySQL实例的唯一标识;TID则是事务在该实例上提交的顺序
    在这里插入图片描述

多源复制

在这里插入图片描述

  • 适用场景
    • 数据分析团队可能要分析多个微服务的数据,可使用多源复制,将多个微服务的数据复制到一个数据库中去,以便统一分析
    • 数据备份,一个大型项目往往有多个微服务、多个数据库实例,可以把多个数据库复制到一个数据库实例实现数据备份

Percona XtraDB Cluster(PXC)

Galera

  • Codeaship开源的MySQL集群方案
  • 在这里插入图片描述

概念

  • 组通信(Group Communication):定义了数据库节点间的通信模式,保证复制数据的一致性
  • Write-Set Replication API(wsrep API):为上层提供丰富的状态信息及回调函数,实现多点写入及同步复制
  • 写集(Write-Set):一个将要被复制的事务
    • 写集中不仅包括对事务影响的所有行的主键(组成写集的key),还包括事务产生的binlog(组成写集的data),key-data就是写集
    • key用来验证和其他事务没有冲突
    • data用来验证通过后应用与提交
  • 数据传输方式
    • SST全量传输,支持Mysqldump、rsync、XtraBackup三种方式
    • IST增量传输,支持XtraBackup
  • 使用端口
    • 3306,MySQL对外服务的端口号
    • 4444,SST使用的端口
    • 4567,组成员之间通信的端口
    • 4568,IST使用的端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值