MySQL实战45讲 24-25
日志格式
statement格式 — 记录原dml语句, 缺陷: 执行limit 1 在采用不同索引树扫描的情况下获取到的数据可能不同;
row格式:记录信息准确定位到目标数据行,缺点是修改数据记录信息量大
mixed格式:采用statement 优化存储占用内存, 同时利用row格式防止主从数据不一致
采用row格式的优点:可以直接利用binlog进行dml逆操作-- 一款db工具回滚数据的原理
mixed sql语句中有now函数 – 采用statement格式 且 额外记录时间戳
循环复制问题,生成binlog时 会附带 独属server id标识,当读取到一条server id 为自身的 binlog记录,即已经流转回自身,直接废弃即可
主备延迟:
主备切换时, 备库会同步主库的 binlog 实现数据一致, 主备延迟就是同一个事务在主库执行完毕后通过binlog同步到备库上执行完成的时间差值
直接表现: 备库消费 relay log 的速度比 主库生产 binlog的速度要慢
出现场景:
1.备库机器配置较差, 常见于 为了节省资源将多个数据库的从库部署到一台机器
2.备库的压力较大, 一些财务为了拉取数据做bi分析 会在从库执行查询导致备库执行压力大, 解决: 一主多从; 将数据通过binlog导出到外部系统,提供数据统计分析能力
3.大事务, 导致备库执行binlog 同步时间长
主备切换策略(应对主备延迟)
1.可靠性优先
2.可用性优先