mysql中从分离_白话说mysql主从分离

mysql主从分离的原理

从库在连接主库的时候创建一个io线程,用于接收主库的binlog日志,并将其存储在relay log日志,而主库是创建一个log dump线程来发送binlog给从库,从库新开一个sql线程读取relay log的内容以做到数据的同步

主从分离的目的

1)将读写流量分离开,方便后续单独的扩展。

2)大部分系统读大于写,通过主从分离搭建一主多从架构,分担读的压力

主从分离的问题

存在数据延迟的问题

在发微博的过程中会有些同步的操作,像是更新数据库的操作,也有一些异步的操作,比如说将微博的信息同步给审核系统,所以我们在更新完主库之后,会将微博的 ID 写入消息队列,再由队列处理机依据 ID 在从库中获取微博信息再发送给审核系统。

此时如果主从数据库存在延迟,会导致在从库中获取不到微博信息,整个流程会出现异常。

解决方案

第一种方案是数据的冗余。你可以在发送消息队列时不仅仅发送微博 ID,而是发送队列处理机需要的所有微博信息,借此避免从数据库中重新查询数据。

第二种方案是使用缓存。我可以在同步写数据库的同时,也把微博的数据写入到 Memcached 缓存里面,这样队列处理机在获取微博信息的时候会优先查询缓存,这样也可以保证数据的一致性。

最后一种方案是查询主库。我可以在队列处理机中不查询从库而改为查询主库。不过,这种方式使用起来要慎重,要明确查询的量级不会很大,是在主库的可承受范围之内,否则会对主库造成比较大的压力。

访问数据库的方式改变

以前只需要使用一个数据库地址就好了,现在需要使用一个主库地址和多个从库地址,并且需要区分写入操作和查询操作

解决方案

mycat中间件方案,由中间件去控制,业务层无感知

业务层控制,代码逻辑调整,读sql连接从库,写sql连主库

下期预告:

白话说分库分表,讲为什么分库分表,它的目的,随之而来产生的问题又应该如何去规避。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值