性能优化-主从同步、读写分离

一、业务场景

  • 随着业务系统用户访问量的增大,会出现高并发的情况,这个时候数据库的压力增大,如果数据库没有设计好,容易出现行锁、表锁、响应缓慢等情况出现。
  • 每台数据库服务器有他的最大连接数和 IOPS,若有一天它无法再满足我们的业务需求,相比于在单台服务器上去做性能提升,不如考虑横向扩展会更加合理。
  • 如果服务对数据库的需求是 IO 密集型的,那可能会经常遇到行锁等待等问题,若要鱼与熊掌兼得,读写分离是否是更好的选择。
  •  如果我们的系统需要做很多报表,或者统计和数据分析,这些业务往往相当地耗费资源但又不是很重要,针对这类需求,我们是否应该开几台从库,让他们去慢慢执行,不会影响处理核心业务的效率。

二、解决办法

        (一)引入缓存中间件

        比如redis、memcache等,不是这次的重点,先不讲。

        (二)主从同步、读写分离

        原理:配置一个主数据库,用于读写数据,再配置多个从数据库,只用于读取数据。这里就需要确保从库和主库的数据一致性(数据要实现低延迟同步)。

        1、主库(Master):

        对于单个体系,一般只有一个主库。主库用于读和写数据。

        2、从库(Slave):

        可以有1个或多个从库,从库只用于读数据,不能用作写。

        3、主从同步:

         如上图:

        前提:主库开启了binlog日志,记录更新操作。

        1:从库开启I/O线程来请求主库,请求指定bin-log中position点之后的内容
        2:主库创建一个binlog dump线程,把binlog的内容发送到从库
        3:从库读取主库传过来的binlog内容并写入到relay log.
        4:从库SQL线程实时监测relay-log日志有更新,读取内容,解析成sql语句,在salve库中执行;

        4、读写分离:

        所有来自客户端的读请求(查询语句),分发到从库Slave,也可以分发到主库Master;所有的写请求(更新、插入、删除等语句),都到主库Master,不能到从库。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值