Mysql-主从同步带来问题?

413 阅读2分钟

“这是我参与更文挑战的第8天,活动详情查看: 更文挑战

主从同步解决了什么问题?

我们大多数系统的业务场景都是写少读多,为了读写数据之间尽可能的不受影响。那么我们就需要将数据进行读写分离。保证写业务和读业务的场景不受影响。

读写在一个数据库怎么会受影响呢?首先数据库的连接数和线程数是有限的,并且数据库写操作要比多操作忙的多,如果写的数据发生阻塞那么很有可能会导致大量的读操作挤压。最后连接数和线程数据耗尽,导致读写操作都超时。

我们先来了解一下主从原理

image.png

image.png

我们知道数据库之间的主从同步大多是通过binLog日志进行的同步,binLog同步最大的问题是如果网络出现抖动或者是数据库表变更频繁会导致主从之间的延迟。 如果出现延迟的问题最大影响的进行从库的查询,如果保证主从之间延迟方案方案有一下三种方式

第一种方式 写和读同时操作主库,从库作为备份库。这种方案适合数据量比较小的场景。

image.png

第二种方式 写库和读库之间添加一层缓存机制,如果写入成功将过期的数据从缓存中删除。读取数据的时候重新进行缓存。

image.png

第三种方式 第二种方式弊端是如果数据时热点数据,如果我执行删除操作很有肯能导致缓存击穿。本来数据不是最新的某些业务场景还可以接受。删除后反而可能导致从库被读请求打挂了。可以在第二种方式做补丁。 如果我们要是有一个主动更新缓存的操作是不是更好呢?那就是我们第三种方式了 监听从库binLog日志主动更新缓存是不是更好呢