Mysql 的主从复制+读写分离(纯理论)

1. 主从复制

1.1 概述

生产环境中,服务器不可能只有一台,而多台服务器的存在必然要用到主从复制同步。
MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

在企业网站中,后端MySQL数据库只有一台时,会有以下问题:
遇到单点故障,服务不可用
无法处理大量的并发数据请求
数据丢失将会造成很大损失

解决办法:
增加MySQL数据库服务器,对数据进行备份,形成主备
确保主备MySQL数据库服务器数据是一样的
主服务器宕机了,备份服务器继续工作,数据有保障
MySQL主从复制与读写分离是密切相关的

1.2 主从复制的过程

在这里插入图片描述
首先主从复制原理核心在于2个日志文件、3个线程(4个线程)
2个日志:二进制和中继
三个线程:①master,上的dump线程②slave.上的I0线程和SQL线程

目的: slave上的中继日志趋近实时同步maste如上的二进制日志
dump线程会监控二进制日志的更新,如果有更新则会通知slave I0
slave_上的I0线程一》 master上申请同步二进制日志的更新内容
dump线程会把同步的sqI日志内容给与slave服务器,slave 的I0线程就会写入自己的中继日志;
slave sq|线程把日志中的更新语句同步执行到数据库内部,以达到和master数据库趋近一致

1.3 主从复制的类型

基于语句的复制(默认)
在主服务器上执行的语句,从服务器执行同样的语句
基于行的复制
把改变的内容复制到从服务器
混合类型的复制
一旦发现基于语句无法精确复制时,就会采用基于行的复制

1.4 主从复制的方式

同步复制
所谓的同步复制,意思是master的变化,必须等待slave-1,slave-2,…,slave-n完成后才能返回。
这样,显然不可取,也不是MYSQL复制的默认设置。比如,在WEB前端页面上,用户增加了条记录,需要等待很长时间。

异步复制
如同AJAX请求一样。master只需要完成自己的数据库操作即可。至于slaves是否收到二进制日志,是否完成操作,不用关心。MYSQL的默认设置。

半同步复制
master只保证slaves中的一个操作成功,就返回,其他slave不管。
这个功能,是由google为MYSQL引入的。

2. 读写分离

2.1 概述

原理:让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理SELECT查询操作。

在企业应用中,在大量的数据请求下,单台数据库将无法承担所有的读写操作:
配置多台数据库服务器以实现读写分离
读写分离建立在主从复制的基础上

读写分离就是只在主服务器上写,只在从服务器上读
主数据库处理事务性査询,而从数据库处理 select査询
数据库复制被用来把事务性査询导致的变更同步到集群中的从数据库

2.2 使用场景

并发量大,单机已经不能出来该数量的并发请求
读大于写的场景
数据实时要求不时太严格的时候

2.3 注意事项

数据库连接池要进行区分,哪些是读连接池,哪个是写连接池,研发的难度会增加;
为了保证高可用,读连接池要能够实现故障自动转移;
主从的一致性问题需要考虑。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值