4.复制理论

1.实现三高的手段
(1).复制

  • 目的:数据冗余
  • 手段:binlog传送
  • 收获:并发量提升,可用性提升
  • 问题:占用更多的硬件资源

(2).扩展

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

(3).切换

  • 目的:提高可用性
  • 手段 :主从身份切换
  • 收获 :并发量提升
  • 问题:丢失切换时期数据

2.三高架构简介
(1).高并发
同时处理的事务数高,通过复制和扩展手段达成,将数据分散至多节点。

(2).高性能
事务或者SQL执行的速度高,通过扩展和扩展手段达成,复制提升速度,扩展提升容量。

(3).高可用
系统可用时间高,通过切换手段达成,节点间身份切换保证随时可用。

3.复制原理
在这里插入图片描述

  1. 主节点有一个生成binlog线程dump_thread,并发送给从节点
  2. 从节点有一个接收binlog,并将其保存为relay log的线程io_thread
  3. 然后从节点还有一个读取执行relay log的线程sql_thread
  4. 从节点执行relay log,也会产生自己的binlog

4.复制类型
(1).异步复制
在这里插入图片描述

  1. 客户端在主节点execute一个SQL
  2. 主节点产生一个binlog,并通过dump_thread发送给从节点,同时主节点也会提交事务
  3. 从节点通过io_thread接收binlog,并转为relay log,执行并产生自己的binlog,并提交事务

主节点发送binlog和提交事务是异步的,所以可能导致数据丢失。

(2).半同步复制
在这里插入图片描述

  1. 客户端在主节点execute一个SQL
  2. 主节点产生一个binlog,并通过dump_thread发送给从节点,同时主节点也会提交事务,但是不会立刻成功,需要等待从节点反馈
  3. 从节点通过io_thread接收binlog,并转为relay log,成功之后,向主节点发送ACK,然后执行并产生自己的binlog,最后提交事务

当主节点超过10秒没有收到从节点的ACK确认,即退化为异步复制。

5.如何在备库读到最新数据
(1).简介
因为binlog传送转relay log以及执行relay log都需要时间,所以备库延时理论上无法消灭,只能减弱。可以通过对比binlog执行位点position,来判断备库是否延时。

(2).业务对数据实时性要求比较高,响应要快,比如充值业务
强制读主库。

(3).业务对数据实时性要求比较高,响应需求不那么高
强制延时,需要计算备库一般延时时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值