mysql主从复制与读写分离原理及详解

mysql主从复制与读写分离原理及详解

大家好,我是酷酷的韩~
酷酷的韩金群

1.为什么需要主从复制?
(1)在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
(2)做数据的热备
(3)架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

2.什么是mysql的主从复制?
mysql主从复制是指数据可以从一个mysql数据库主节点复制到一个或多个从节点。Mysql默认采用异步复制方式,这样节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或特定的数据库、数据表。

3.mysql主从复制原理?
(1)master服务器数据改变时会将其记录至二进制binlog日志中。
(2)slave服务器会定时检测master服务器中的binlog日志是否发生变化,如变化则开始一个IO线程请求master binlog日志
(3)同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中
(4)从节点将启动sql线程从中继日志中读取二进制日志,在本地重放,使得数据与主节点保持一致,最后I/O线程和sql线程进入休眠状态,等待下一次唤醒。
备注: master主服务器、slave从服务器

也就是说:
(1)从库生成两个线程 一个io线程 一个sql线程
(2)io线程会请求主库的binlog日志,并将得到的binlog写到从库的relay-log(中继日志)
(3)主库会为每一个从库的io线程启动一个dump线程,来传递binlog
(4)sql线程读取中继日志,解析成sql语句执行。

注意:
(1)master将操作语句记录到binlog日志中,然后授权slave远程连接的权限(master一定要开启binlog二进制日志功能);通常为了数据安全考虑,slave也开启binlog功能。
(2)slave开启两个线程:IO线程、sql线程。其中IO线程负责读取master的binlog内容到中继日志relay-log里;sql线程负责从relay日志里读取binlog内容,并更新到slave的数据库里,这样就能保证slave数据和master数据保持一致了。
(3)mysql复制至少需要两个mysql的服务,当然mysql的服务可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。
(4)版本最好一致,至少master版本<=slave版本
(5)master和slave两节点间时间需同步

在这里插入图片描述

4.读写分离介绍?
mysql读写分离基本原理是让master数据库处理写的操作,slave数据库处理读的操作。master将写的操作同步到各个slave节点。
mysql读写分离能提高系统性能的原因在于:
(1)物理服务器增加,机器处理能力提升。拿硬件换性能。
(2)主从只负责各自的读、写,极大程度缓解X锁和S锁争用。
(3)slave可以配置myiasm引擎,提升查询性能以及节约系统开销。
(4)master直接写是并发的,slave通过主库发送来的binlog恢复数据是异步。
(5)slave可以单独设置一些参数来提升读的性能。
(6)增加冗余,提高可用性。

5.目前实现mysql的读写分离,主要有以下几种方案:
(1)通过程序实现,网上很多现成的代码,比较复杂,如果添加从服务器要更改多台服务器的代码。
(2)通过mysql-proxy来实现,由于mysql-proxy的主从读写分离是通过lua脚本来实现,目前lua的脚本的开发跟不上节奏,而写没有完美的现成的脚本,因此导致用于生产环境的话风险比较大,据网上很多人说mysql-proxy的性能不高。
(3)自己开发接口实现,这种方案门槛高,开发成本高,不是一般的小公司能承担得起。
(4)利用阿里巴巴的开源项目Amoeba来实现,具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库,并且安装配置非常简单。

6.什么是amoeba?
Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。
主要解决:
(1)降低数据切分带来的复杂多数据库结构
(2)提供切分规则并降低 数据切分规则 给应用带来的影响
(3)降低db与客户端的连接数
(4)读写分离

7.主从复制及读写分离操作
主从复制与读写分离的安装及操作配置的文章已发布,可在本专栏内查找。

只有历经沧桑,才能遇见曙光。 ------酷酷的韩

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩金群

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值