MySQL主从复制与读写分离

什么是主从复制

复制是指将主数据库的 DDL 和 DML 操作通过 二进制日志传到复制服务器(也叫从服务器)上,然后在从服务器上对这些日志重新执行,从而使得从服务器和主服务器的数据保持同步。

为什么要做主从复制

1、如果主服务器出现问题,可以快速切换到从服务器提供服务;

2、可以在从服务器上执行查询操作,降低主服务器的访问压力;

3、可以在从服务器上执行备份,以避免备份期间影响主服务器的服务。

主从复制流程

借鉴网络图片

  • 主库db的更新事件(update、insert、delete)被写到binlog
  • 主库创建一个binlog dump thread,把binlog的内容发送到从库
  • 从库启动并发起连接,连接到主库
  • 从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log
  • 从库启动之后,创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db

读写分离

1、什么是读写分离

读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

2、为什么要做读写分离

因为数据库的“写”(写10000条数据到MySQL可能要3分钟)操作是比较耗时的,但是数据库的“读”(从MySQL读10000条数据可能只要5秒钟),所以读写分离,解决的是,数据库的写入,影响了查询的效率。

3、什么场景需要读写分离

数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库主从同步 。可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache 或是 表折分,或是搜索引擎。都是解决方法。

4、如何实现读写分离

(1)可以通代码层面实现

(2)可以通过中间件代理实现

我们通过中间件MyCat实现读写分离(MySQL Proxy)

MyCat 我们关注几个配置文件:

server.xml()

schema.xml

rule.xml

参考:

https://www.cnblogs.com/happy4java/p/11206030.html

https://www.cnblogs.com/youzhibing/p/9553766.html

https://dev.mysql.com/doc/refman/5.6/en/replication.html

https://blog.csdn.net/zai_xia/article/details/90379016

https://www.cnblogs.com/php826291930/p/11242436.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值