首页天道酬勤mysql读写分离配置(MySQL读写分离)

mysql读写分离配置(MySQL读写分离)

admin 12-07 23:17 244次浏览

在这个高并发的阶段,绝对有必要把读和写分开。你什么意思?因为事实上,大多数互联网公司,一些网站或应用程序实际上读得更多,写得更少。所以针对这种情况,就是写一个主库,但是如果主库挂起多个从库,然后从多个从库中读取,能不支持更高的读取并发压力吗?

如何实现 MySQL 的读写分离?

其实很简单,就是基于主从复制架构。简单来说,就是建立一个主库,挂多个从库。然后我们只需要编写主库,然后主库会自动将数据同步到从库。

00-1010主库将更改写入binlog日志,然后从库连接到主库后,从库中有一个IO线程,将主库的binlog日志复制到自己的地方,写入中继中继日志。然后,库中的一个SQL线程会从中继日志中读取binlog,然后执行binlog日志日志中的内容,也就是在本地再次执行SQL,以保证自身和主库的数据相同。

这里有一个很重要的点,就是同步主库数据和从库数据的过程是序列化的,也就是说对主库的并行操作会在从库上串行执行。因此,这是非常重要的一点。由于从库复制主库的日志,串行执行SQL的特点,在高并发场景下,从库的数据会比主库慢,存在延迟。所以经常会发生刚写入主库的数据可能无法读取,读取需要几十毫秒甚至几百毫秒。

而且这里还有一个问题,就是如果主库突然宕机,然后就在数据同步到从库中之前,那么从库中可能会有一些数据不可用,有一些数据可能会丢失。

所以MySQL在这个区块其实有两种机制,一种是半同步复制,用来解决主库中数据丢失的问题;一种是并行复制,用于解决主从同步延迟问题。

所谓半同步复制,也称半同步复制,是指主库写入binlog日志后,此时会强制从库立即同步数据。在从库将日志写入其本地中继日志后,它将向主库返回ack,并且主库直到从从库接收到至少一个ack才会认为写操作完成。

并行复制是指从库中打开多个线程,并行读取中继日志中不同库的日志,然后并行重放不同库的日志,这就是库级并行。

00-1010之前,确实处理了主从同步延迟导致的在线bug,属于小生产事故。

这是现场吗?一个同学这样写代码逻辑。首先插入一条数据,然后找出它,然后更新数据。在生产环境高峰期,写入和开发达到2000个/s,此时主从复制延迟少了几十毫秒左右。在网上,我们会发现每天总有一些数据,我们预计会更新一些重要的数据状态,但是在高峰期没有更新。跟客服反馈,客服会给我们反馈。

我们使用MySQL命令:

显示状态查看Seconds_Behind_Master,我们可以看到从库复制到主库的数据落后了几毫秒。

一般来说,如果主从延迟严重,有以下解决方案:

子库,将一个主库拆分成多个主库,将每个主库的写并发降低了数倍,此时主从延迟可以忽略。开启MySQL支持的并行复制,多个库可以并行复制。如果某个库的写并发性极高,单个库已经发展到2000/s,那么并行复制仍然没有意义。重写代码和编写代码的学生应该小心。插入数据时,他们可能不会立即找到。如果确实存在,必须先插入,并立即要求查找,然后立即反向执行一些操作,并为此查询设置与主库的直接连接。不建议使用这种方法。如果你这样做,分离的意义

汇总在vue中写jsx的方式浅析JavaMail发送邮件后再通过JavaMail接收格式问题
mysql开源中间件(mysql读写分离实现) 三星active1和2代(三星s8触屏校正)
相关内容