NOTE

4.4 分布式系统复制日志

1. 是什么 - 副本之间的数据变更一般通过复制日志追踪,格式有以下几种 2. 分类 2.1. 物理日志 - 对哪个page的修改,原始值是什么,更新值是什么 2.2. 逻辑日志 - 对哪条记录的修改,又分为Statement和Row 2.2.1. Statement - 客户端请求的原始语句 -

分布式系统创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

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同步