在 SequoiaDB 巨杉数据库中,分区可靠性管理主要指数据的可靠性管理。SequoiaDB 在复制组内采用多数据副本,建立完备的高可用数据库集群以保障数据的可靠性。本文从多副本选择、主备一致性、高可用和容灾等方面来说明分区可靠性管理。
SequoiaDB 使用改进过的 Raft 选举协议进行复制组选举,确定哪个成员是主节点,副本集推荐奇数个成员,以确保选举的顺利进行。在一个复制组内,节点的个数上限为 7。根据不同的高可用容灾需要,复制组内节点数建议值为:3、5、7。 推荐用户创建三副本的复制组,三个副本能够提供足够的冗余承受系统故障。如果有特定的容灾需求,可以参考容灾部署方案:同城双中心、同城三中心、两地三中心和三地五中心。
SequoiaDB 中的一致性策略包含强一致性、最终一致性和写大多数。这三种一致性策略分别适配不同的应用场景,下面列举不同场景下一致性策略的选择方式:
高可用指通过 SequoiaDB 复制组内多副本机制的集群架构,缩短因日常维护操作和突发系统崩溃所导致的停机时间。在 SequoiaDB 复制组内的多副本机制下,每个副本都可以接管主节点任务,不再局限于传统数据库的单点故障问题。
容灾是指建立多地的容灾中心,该中心是主数据中心的一个可用复制,在灾难发生之后确保原有的数据不会丢失或遭到破坏。容灾中心数据可以是主中心生产数据的完全实时复制,也可以比主中心数据稍微落后,但一定是可用的。采用的主要技术是数据复制和数据备份。
SequoiaDB 提供了完善的高可用和容灾部署架构,部分数据节点的故障不被数据库运维人员感知,需要运维人员主动检查数据节点状态,发现问题并解决节点故障。SequoiaDB 提供的节点健康检测快照可以查看数据库节点的健康状态。
> db.snapshot( SDB_SNAP_HEALTH )
输出结果如下:
{
"NodeName": "sdbserver1:11800",
"IsPrimary": true,
"ServiceStatus": true,
"Status": "Normal",
"BeginLSN": {
"Offset": 76776,
"Version": 3
},
"CurrentLSN": {
"Offset": 92356,
"Version": 4
},
"CommittedLSN": {
"Offset": 92356,
"Version": 4
},
"CompleteLSN": 92428,
"LSNQueSize": 0,
"NodeID": [
1,
1
],
"DataStatus": "Normal",
"SyncControl": false,
"Ulimit": {
"CoreFileSize": 0,
"VirtualMemory": -1,
"OpenFiles": 60000,
"NumProc": 22521,
"FileSize": -1
},
"ResetTimestamp": "2019-06-04-23.54.06.410178",
"ErrNum": {
"SDB_OOM": 0,
"SDB_NOSPC": 0,
"SDB_TOO_MANY_OPEN_FD": 0
},
"Memory": {
"LoadPercent": 3,
"TotalRAM": 2972622848,
"RssSize": 95174656,
"LoadPercentVM": 0,
"VMLimit": -1,
"VMSize": 2542215168
},
"Disk": {
"Name": "/dev/mapper/centos_test-root",
"LoadPercent": 85,
"TotalSpace": 29521608704,
"FreeSpace": 4197621760
},
"FileDesp": {
"LoadPercent": 0,
"TotalNum": 60000,
"FreeNum": 59938
},
"StartHistory": [
"2019-06-04-23.54.06.650502",
"2019-06-03-23.44.24.856599",
"2019-05-30-09.45.40.948906",
"2019-05-29-21.28.11.460570",
"2019-05-29-10.22.33.248294"
],
"AbnormalHistory": [
"2019-05-30-09.45.40.948906"
],
"DiffLSNWithPrimary": 0
}
...