TiDB学习笔记(九)-数据库高可用设计
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
TiDB Server的高可用
- 无状态
- 数据由TiKV存储
- TiDB之间不通信通过TiKV和PD
- 随时增加或删除
- 本身不支持Failover需业务配合
TiKV的高可用
- 故障恢复
- 少数follower故障或隔离不影响Leader服务
- Leader故障或隔离后follower心跳超时会自动开始选举流程
- 只有有一般以上节点存活一定能选出新的Leader从而恢复服务
- 数据一致性
- 写入数据时Leader会保证日志被复制到大多数节点
- 当一部分节点故障或隔离后只要有一半以上节点存活其中至少有一个节点包含最新的日志
- Raft协议选择包含最新日志的节点当做Leader
- 综上所述符合约束则不会发生数据丢失
PD的高可用
- Leader节点提供所有服务Follower为standby
- 依赖内嵌etcd实现leader选举
- 一致性要求
- 分配严格单调递增的timestatmp
- 同一时刻只能有一个leader
TiDB数据库的高可用
- TiDB数据库提供强一致性
- 如不能保证一致性则拒绝服务
- 在PD和TiKV至少存活半数以上副本情况下容忍一定限度内的节点宕机或隔离
- PD和TiKV可以自动故障转移至存活的大多数副本处
- TiDB server不保证所有节点同时提供服务
- 故障解决会伴随所有服务的降级