vault backup: 2026-05-20 00:00:48

This commit is contained in:
hhs
2026-05-20 00:00:48 +08:00
parent 8c8c88c73f
commit ebf9db844d
4 changed files with 258 additions and 19 deletions
+12
View File
@@ -137,6 +137,18 @@ binlog_format = MIXED # 折中方案
>
> 答案:**ROW**。理由很简单——数据一致性永远排在体积和可读性之前。虽然 ROW 模式的 binlog 体积更大,但它消除了所有不确定性,而节省空间带来的好处远不及一次主从不一致造成的损失。
### Row vs Statement 对特殊场景的影响
除了非确定性函数(`NOW()`、`RAND()`)之外,还有两类场景在 STATEMENT 模式下容易引发主从不一致:
| 场景 | 问题原因 |
|------|---------|
| **字符集 / Collation 不一致** | 主库和从库 collation 不同时,STATEMENT 模式下的字符串比较可能得出不同结果;ROW 模式传输原始字节,不受影响 |
| **自增 ID(auto_increment)** | 主从并发写入时,STATEMENT 模式下从库的自增值可能与主库不同步,导致重复或跳跃 |
| **INSERT_DELAYED** | 5.6+ 已移除,执行时机不确定 |
**结论**:生产环境一律使用 `binlog_format = ROW`,避免上述所有隐患。
## Binlog 文件结构
```