NOTE
4.4 分布式系统复制日志
1. 是什么 - 副本之间的数据变更一般通过复制日志追踪,格式有以下几种 2. 分类 2.1. 物理日志 - 对哪个page的修改,原始值是什么,更新值是什么 2.2. 逻辑日志 - 对哪条记录的修改,又分为Statement和Row 2.2.1. Statement - 客户端请求的原始语句 -
这是历史学习笔记,可能存在过时或不完整的理解。
1. 是什么
- 副本之间的数据变更一般通过复制日志追踪,格式有以下几种
2. 分类
2.1. 物理日志
- 对哪个page的修改,原始值是什么,更新值是什么
2.2. 逻辑日志
- 对哪条记录的修改,又分为Statement和Row
2.2.1. Statement
- 客户端请求的原始语句
- 缺点:有些语句比如时间函数会有副作用
2.2.2. Row
- 对于行插入,日志记录相关列的新值
- 对于行删除,日志表识这一行被删除
- 对于行更新,日志记录所有列的的新值
- 缺点:占用空间大,比如删除10000条数据那么需要记录10000条数据被删除
3. 举例
- MySQL server层的bin-log,属于逻辑日志,支持Statement、Row
- MySQL 存储引擎层的redo-log,属于物理日志
- Redis 使用AOF,属于逻辑日志
- Kafka 日志本身就是数据
- Zookeeper使用?
- Elasticsearch不使用日志,而是由primary shard并行同步请求发送给replica shard同步