-
Notifications
You must be signed in to change notification settings - Fork 1.2k
副本一致性使用文档
副本一致性提供主从副本在短时间内达到数据一致的功能。
具体请求流程如下:
1,客户端请求到主分片上
2,主分片同步请求到一定个数(replication-num)从分片上
3,主接收到一定个数(consensus-level)的从反馈ACK
4,数据落盘,返回客户端请求
目前副本一致性功能只能在分片模式下运行。
由于成员变换的功能暂时不支持,不建议在主从关系建立之后更换新的从副本。
# replication num defines how many followers in a single raft group, only [0, 1, 2, 3, 4] is valid
replication-num : 0
# consensus level defines how many confirms does leader get, before commit this log to client,
# only [0, ...replicaiton-num] is valid
consensus-level : 0
replication-num 含义是在分片副本中,从副本的个数。目前可以配置的参数范围为[0, 1, 2, 3, 4]
consensus-level 含义在返回客户端之前需要有多少从确认已经收到了这一条日志。目前可以配置的参数范围为[0, ...replicaiton-num]
example:
a) 使用3个副本(1主2从)场景,希望主分片上收到2副本ACK之后再返回客户端。
replication-num: 2
consensus-level: 2
b) 使用3个副本(1主2从)场景,希望写入大多数副本,即希望主分片上收到1副本ACK之后再返回客户端。
replication-num: 2
consensus-level: 1
c) 默认场景不开启一致性,希望写入主副本之后立马返回客户端,采用异步同步的方式将LOG同步给从副本。
replication-num: 0
consensus-level: 0
在一些场景下,例如写大多数场景,不能保证主上面的新写入数据一定会马上同步到所有从上面。这时候主副本down了,需要管理员根据各个副本的日志状况选择切主。如果切主不当可能会造成数据丢失,同步异常等情况,请小心操作。
具体流程:
使用 pkcluster info slot 中查看各个从副本的分片日志信息,选择term 更大,或者term相同 index 更大的分片成为主。
example:
副本1 consensus_last_log=filenum: 9 offset: 65234985 term: 33 index: 998386
副本2 consensus_last_log=filenum: 9 offset: 65234985 term: 33 index: 998300
此时应该选择副本2为新主。管理员使用 pkcluster slotsslaveof ip port [0-3,8,9,10,11 | all] 命令可以进行切主操作。具体命令使用方法见Pika分片命令
- 安装使用
- 支持的语言和客户端
- 当前支持的Redis接口以及兼容情况
- 配置文件说明
- 数据目录说明
- info信息说明
- 部分管理指令说明
- 差异化命令
- Pika Sharding Tutorials
- Pika订阅
- 配合sentinel(哨兵)实现pika自动容灾
- 如何升级到Pika3.0
- 如何升级到Pika3.1或3.2
- Pika多库版命令、参数变化参考
- Pika分片版本命令
- 副本一致性使用说明
- Pika内存使用
- Pika最佳实践
- 整体架构
- 线程模型
- 全同步
- 增量同步
- 副本一致性
- 快照式备份
- 锁的应用
- nemo存储引擎数据格式
- blackwidow存储引擎数据格式
- Pika源码学习--pika的通信和线程模型
- Pika源码学习--pika的PubSub机制
- Pika源码学习--pika的命令执行框架
- Pika源码学习--pika和rocksdb的对接
- pika-NoSQL原理概述
- pika在codis中的探索
- Pika 笔记
- pika 主从同步原理