阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL主从复制与读写分离的工作原理

260次阅读
没有评论

共计 1719 个字符,预计需要花费 5 分钟才能阅读完成。

一、MySQL 主从复制的工作原理

1、MySQL 支持的复制类型

1)基于语句的复制。在服务器上执行 sql 语句,在从服务器上执行同样的语句,MySQL 默认采用基于语句的复制,执行效率高。

2)基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。

3)混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。

2、复制的工作过程

MySQL 主从复制与读写分离的工作原理

1)在每个事务更新数据完成之前,master 在二进制日志记录这些改变。写入二进制日志完成后,master 通知存储引擎提交事务。

2)Slave 将 master 的 binary log 复制到其中继日志。首先 slave 开始一个工作线程(I/O),I/ O 线程在 master 上打开一个普通的连接,然后开始 binlog dump process。binlog dump process 从 master 的二进制日志中读取事件,如果已经跟上 master,它会睡眠并等待 master 产生新的事件,I/ O 线程将这些事件写入中继日志。

3)Sql slave thread(sql 从线程)处理该过程的最后一步,sql 线程从中继日志读取事件,并重放其中的事件而更新 slave 数据,使其与 master 中的数据一致,只要该线程与 I / O 线程保持一致,中继日志通常会位于 os 缓存中,所以中继日志的开销很小。

3、MySQL 读写分离原理

读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。

MySQL 主从复制与读写分离的工作原理

目前较为常见的 MySQL 读写分离分为两种

1)基于程序代码内部实现

在代码中根据 select、insert 进行路由分类,这类方法也是目前生产环境下应用最广泛的。优点是性能较好,因为程序在代码中实现,不需要增加额外的硬件开支,缺点是需要开发人员来实现,运维人员无从下手。

2)基于中间代理层实现

代理一般介于应用服务器和数据库服务器之间,代理数据库服务器接收到应用服务器的请求后根据判断后转发到,后端数据库,有以下代表性的程序。

(1)MySQL_proxy。MySQL_proxy 是 MySQL 的一个开源项目,通过其自带的 lua 脚本进行 sql 判断。

(2)Atlas。是由 Qihoo 360, Web 平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它是在 MySQL-proxy 0.8.2 版本的基础上,对其进行了优化,增加了一些新的功能特性。360 内部使用 Atlas 运行的 MySQL 业务,每天承载的读写请求数达几十亿条。支持事物以及存储过程。

(3)Amoeba。由阿里巴巴集团在职员工陈思儒使用序 Java 语言进行开发,阿里巴巴集团将其用户生产环境下,但是他并不支持事物以及存数过程。

不是所有的应用都能够在基于程序代码中实现读写分离,像一些大型的 java 应用,如果在程序代码中实现读写分离对代码的改动就较大,所以,像这种应用一般会考虑使用代理层来实现。

Ubuntu 16.04 下实现 MySQL 主从复制  http://www.linuxidc.com/Linux/2017-08/146624.htm

MySQL 5.6.26 主从复制报错 1050  http://www.linuxidc.com/Linux/2017-08/146203.htm

MySQL 主从复制详解 http://www.linuxidc.com/Linux/2017-10/147550.htm

MySQL 基于 GTID 主从复制之半同步复制 https://www.linuxidc.com/Linux/2018-05/152175tm

MySQL 主从复制读写分离与高可用配置 https://www.linuxidc.com/Linux/2018-04/151893.htm

mysql-proxy 代理加 MySQL 主从实现读写分离 https://www.linuxidc.com/Linux/2017-05/143453.htm

CentOS 7.4 下 MySQL+Amoeba 实现主从同步读写分离  https://www.linuxidc.com/Linux/2018-03/151648.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1719字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中