**导读**
> 作者:杨漆
> 16年关系型数据库管理,从oracle 9i 、10g、11g、12c到Mysql5.5、5.6、5.7、8.0 到TiDB获得3个OCP、2个OCM;运维路上不平坦,跌过不少坑、熬过许多夜。把工作笔记整理出来分享给大伙儿,希望帮到大家少走弯路、少熬夜。
Newsql中常提到的Raft协议是何神物?
答:
Raft 是一种分布式一致性算法,在Newsql代表性数据库TiDB 集群的多种组件中,PD 和TiKV 都通过Raft 实现了数据的容灾。
Raft 的灾难恢复能力通过如下机制实现:
1. Raft 成员的本质是日志复制和状态机。Raft 成员之间通过复制日志来实现数据同步;Raft 成员在不同条件下切换自己的成员状态,其目标是选出leader 以提供对外服务。
2. Raft 是一个表决系统,它遵循多数派协议,在一个Raft Group 中,某成员获得大多数投票,它的成员状态就会转变为leader。也就是说,当一个Raft Group 还保有大多数节点(majority) 时,它就能够选出leader以提供对外服务。
遵循Raft 可靠性的特点,放到现实场景中:
1. 想克服任意1 台服务器(host) 的故障,应至少提供3 台服务器。
2. 想克服任意1 个机柜(rack) 的故障,应至少提供3 个机柜。
3. 想克服任意1 个数据中心(dc,又称机房)的故障,应至少提供3 个数据中心。
4. 想应对任意1 个城市的灾难场景,应至少规划3 个城市用于部署。
由此可见原生Raft协议对于偶数副本的支持并不是很友好,考虑跨城网络延迟影响,或许同城三数据中心是最适合部署Raft 的高可用及容灾方案。
备注:
NewSQL 数据库TiDB 兼顾了传统关系型数据库的优良特性 + NoSQL 数据库可扩展性以及跨数据中心场景下的高可用性
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。