mysql数据同步、mq消息积压问题 解决方法


mysql数据同步的问题,主要出现的原因就两点:
    1、主库由于高并发,写入binlog太过频繁,导致从库来不及同步,从而使得数据不同步
        解决办法:由于高并发导致的问题,所以只能通过限制并发数来解决问题,将并发数限制在一个可以实现同步的范围内,这样就可以保证主从同步。
        具体做法:(1)、可以使用降流的方式来保证,但是我们的并发量比较稳定,所以不需要
                  (2)、可以使用mq的方式来实现消息削峰。让消费者去mq中消费消息。
                  这时候会有一个问题,比如消费者服务器每秒也是可以处理100条数据,但是数据库只能在50条时保证数据的同步。此时要怎么处理。
                  首先需要明确一点的是。出现高并发问题肯定是多线程的情况下。(试想:如果是单线程,还需要处理并发导致问题吗,他直接线性的处理就可以了。每次只处理一条数据)
                  所以在这个基础上,也就是要处理消费者多线程的问题就可以了。比如之前说的消费者可以处理100条,他的处理能力要大于数据库的,那么此时为了保证数据同步,就限制
                  消费者服务的线程数就可以了。(之前消费者服务的线程数是100个,现在给他控制在50个就可以了)。
        
    2、因为从库是通过订阅relcylog来实现同步的,而mysql是通过单线程,并且随机对一个从库进行同步的。所以如果访问的是未同步的从库,就会导致数据不同步
        解决办法:升级mysql版本,mysql5.6以上在单线程的基础上,开启了多个work线程,实现并发往从库中复制,可以减少或者保证数据同步。

这里需要衍生出来一个问题,如果mq出现消息积压的问题,需要怎么解决
        解决办法:可以说增加服务节点,也就是消费者服务,来增加处理消息的个数。以解决消息积压的问题。
    最后:对于上述的问题,如果说完之后,面试官再问,那么可以说我们是这么解决的,顺带问他有没有其他好的解决方案!!!
    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值