MySQL日志

image.png

主从复制

image.png
这幅图的load balance做在了业务层,而读写的路由逻辑由业务层在控制。
image.png
这幅图,则由一个通用的中间层解决了读写分离的问题,顺便也做了数据库的负载均衡,从这里看出读写分离是数据库负载均衡的一种解决方式
image.png
主从复制工作流程
image.png
异步复制
image.png
半同步模式。
不是 MySQL 内置的,从 MySQL 5.5 开始集成,需要 master 和 slave 安装插件开启半同步模式。

逻辑复制和行数据复制

在开发当中,我们应该尽量将业务逻辑逻辑放在代码层,而不应该放在 MySQL 中,不易拓展。
一般情况下,默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。


语句(逻辑)复制 行数据(物理)复制
特点 方式简单,二进制文件小,传输带宽占用小。 日志占用的空间大,传输带宽占用大。但更精确。
在从库更新不存在的记录时 不会失败 会导致失败,从而更早发现主从之间的不一致
更新一百万条数据 仅需要发送一条sql 需要发送一百万条更新记录
执行的到底是什么(例如一条更新用户总积分的语句,需要统计用户的所有积分再写入用户表。) 从库需要再一次统计用户的积分,而基于行复制就直接更新记录,无需再统计用户积分。 不需要执行查询计划