mysql三高架构之路

1三高
高并发
高性能
高可用:系统可用时间高
复制,扩展,切换
复制
目的:数据冗余
手段:binlog传送
收获:并发量提升,可用性提升
问题:占用更多的资源

拓展
目的:拓展数据库容量
手段:数据库分片分表
收获:性能、并发量的提升
问题:降低可用性

切换
目的:提高可用性
手段:主备切换
手段:并发量提升
问题:丢失切换时期数据

三高
在这里插入图片描述
2 复制
原理
在这里插入图片描述
relaylog,二道贩子,中继日志
重放:重新执行一遍
概括:binlog传送
复制的类型
在这里插入图片描述
异步复制
在这里插入图片描述
原理简单
对网络延迟要求较小
不能保证日志被传送到备库,可能丢失数据

半同步复制
在这里插入图片描述
只关心日志传送来吗,不关系执行
原理简单
对网络延迟有要求,最好在同一机房
可以保证日志被传送到备库,不易丢失
在这里插入图片描述
时间到了切换成异步复制

组复制
在这里插入图片描述
用的不多
原理复杂,中间是共识机制,依赖共识算法
是数据库走向原生分布式的方向(Tidb,华为的OCEANdb)

3 主从复制实操
异步
主备打开binlog
配置文件中
在这里插入图片描述
systemctl restart mysqld

不能热备
先上全局锁
在这里插入图片描述
在这里插入图片描述
在12号194位置后面开始同步
备份主库的所有数据
在这里插入图片描述
传送到备库
在这里插入图片描述
主库撤销锁
在这里插入图片描述
备库
执行传送来的文件
source dbdump.sql
配置备库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
start slave
在这里插入图片描述
半同步
主备配置文件
在这里插入图片描述脱钩时间
在这里插入图片描述
4 怎么使得复制配置更方便
binlog位置那部分不方便
思路
在这里插入图片描述
GTID
在这里插入图片描述
启用
配置文件中
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
5 为什么binlog格式会影响复制
格式
statement格式
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
ROW格式的
在这里插入图片描述
mixed格式
在这里插入图片描述
mixed格式的用的还是比较少,一般都用row

基于语句或者行的复制
在这里插入图片描述

6 备库延迟太大,怎么办
备库延迟的原因
在这里插入图片描述
处理方式
在这里插入图片描述

依然存在的问题

主库的binlog是多线程产生的,而备库复现主库的binlog是一个sql_thread单线程复现的,所以不行
在这里插入图片描述
解决思路
在这里插入图片描述
分配relaylog是关键,不是随便分配的,有顺序的

在这里插入图片描述
mysql5.6并行复制
在这里插入图片描述
mysql5.7使用按事物组并行的策略
在这里插入图片描述
在这里插入图片描述
优化
三个写的同一个binlog文件
1号等23后,最后写,所以把123叫一个事务组
内在原理是123肯定不会有锁,因为基本一起prepare
在这里插入图片描述
在这里插入图片描述
这两个参数是配合用的
延时多少微秒后,等的人到了多少就提交,万一等了10微妙,来了1000万个就不行了
在这里插入图片描述
在这里插入图片描述
8 如何在备库读到最新的数据
强制走主库
如何判读备库已经追上主库
在这里插入图片描述
备库延时理论上是没办法完全消除的
在这里插入图片描述
判断具体事务是否已经重放
在这里插入图片描述
怎样实现最简单的高可用架构
主-主复制架构
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

已经是主备了,再用主配置一下备
在这里插入图片描述
只读就是配置参数read only=1

问题
在这里插入图片描述
数据冲突问题

在这里插入图片描述
客户端切换
在这里插入图片描述
循环复制
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值