-
Notifications
You must be signed in to change notification settings - Fork 1.2k
pika 全同步
kernelai edited this page Nov 29, 2019
·
4 revisions
- pika支持master/slave的复制方式,通过slave端的slaveof命令激发
- salve端处理slaveof命令,将当前状态变为slave,改变连接状态
- slave的向master发送MetaSync请求,在同步之前确保自身db的拓扑结构和master一致
- slave下的每个partition单独的向master端对应的partition发起trysync请求,建立同步关系
- pika同步依赖binlog
- binlog文件会自动或手动删除
- 当同步点对应的binlog文件不存在时,需要通过全同步进行数据同步
- 需要进行全同步时,master会将db文件dump后发送给slave
- 通过rsync的deamon模式实现db文件的传输
- 默认使用pika port+1000作为rysnc传输端口
- 在pika实例启动的同时会启动Rsync服务
- master发现某一个partition需要全同步时,判断是否有备份文件可用,如果没有先dump一份
- master通过rsync向slave发送对应partition的dump的文件
- slave的对应partition用收到的文件替换自己的db
- slave的对应partition用最新的偏移量再次发起trysnc
- 完成同步
Slave中某一个Partition建立同步:
Master处理同步请求:
- No Connect:不尝试成为任何其他节点的slave
- ShouldMetaSync:向master请求db的拓扑信息,确保与自身一致
- TryConnect:为每个partition重置状态机,让其处于准备同步的状态
- Connecting:在所有partition没有建立同步关系之前一直是处于connecting的状态
- EstablishSucces: 所有partition建立同步关系成功
- Error:出现了异常
- 安装使用
- 支持的语言和客户端
- 当前支持的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 主从同步原理