SequoiaDB 简介
安装部署
数据库实例
分布式引擎
SAC 管控中心
参考手册
常见问题及解答(FAQ)
版本信息
节点健康检测快照可以列出数据库中所有节点的健康信息。
SDB_SNAP_HEALTH
字段名 | 类型 | 描述 |
---|---|---|
NodeName | string | 节点名,格式为<主机名>:<服务名> |
IsPrimary | boolean | 是否主节点 |
ServiceStatus | boolean | 是否为可提供服务状态 一些特殊状态,例如全量同步时,服务状态为 false |
Status | string | 节点状态,取值如下: "Normal":正常工作状态 "Shutdown":正在关闭状态,表示节点正在被关闭 "Rebuilding":重新构建状态,如节点异常重启后,无法与其他节点进行数据同步,则节点会进入该状态,重新构建数据 "FullSync":全量同步状态 "OfflineBackup":数据备份状态 |
BeginLSN.Offset | int64 | 节点同步日志的起始 LSN |
BeginLSN.Version | int32 | 版本号(内部使用) |
CurrentLSN.Offset | int64 | 节点同步日志的当前 LSN 该字段可用于查看同步日志的结束位置 |
CurrentLSN.Version | int32 | 版本号(内部使用) |
CommittedLSN.Offset | int64 | 已刷盘的同步日志对应的 LSN 该字段可用于查看节点数据的刷盘进度 |
CommittedLSN.Version | int32 | 版本号(内部使用) |
CompleteLSN | int64 | 备节点已重放记录对应的 LSN |
LSNQueSize | int32 | 等待同步的 LSN 队列长度 |
NodeID | array | 节点的 ID 信息,格式为[<分区组 ID>, <节点 ID>] 在 standalone 模式下,该字段为[0, 0] |
DataStatus | string | 数据状态,取值如下: "Normal":正常状态 "Repairing":修复状态,当节点状态为"Rebuilding"或"FullSync"时,数据状态为"Repairing" "Fault":错误状态,当节点异常启动,且节点状态不为"Rebuilding"或"FullSync"时,数据状态为"Fault" |
SyncControl | boolean | 节点是否处于同步控制 |
Ulimit.CoreFileSize | int64 | 节点进程的 core 文件大小限制,单位为字节,-1 表示 unlimited |
Ulimit.VirtualMemory | int64 | 节点进程的虚拟内存限制,单位为字节,-1 表示 unlimited |
Ulimit.OpenFiles | int64 | 节点进程的文件句柄数限制 |
Ulimit.NumProc | int64 | 节点进程的线程数限制,-1 表示 unlimited |
Ulimit.FileSize | int64 | 节点进程的文件大小限制,单位为字节,-1 表示 unlimited |
Ulimit.StackSize | int64 | 节点进程的栈空间大小限制,单位为字节,-1 表示 unlimited |
ResetTimestamp | string | 重置快照的时间 |
ErrNum.SDB_OOM | int64 | 节点发生 SDB_OOM 错误的次数 |
ErrNum.SDB_NOSPC | int64 | 节点发生 SDB_NOSPC 错误的次数 |
ErrNum.SDB_TOO_MANY_OPEN_FD | int64 | 节点发生 SDB_TOO_MANY_OPEN_FD 错误的次数 |
Memory.LoadPercent | int32 | 节点进程占用 RAM 的百分比 |
Memory.TotalRAM | int64 | 节点所在操作系统的总 RAM 大小,单位为字节 |
Memory.RssSize | int64 | 节点进程占用的 RAM 大小,单位为字节 |
Memory.LoadPercentVM | int32 | 节点进程占用虚拟空间的百分比 |
Memory.VMLimit | int64 | 节点进程虚拟空间限制,单位为字节 |
Memory.VMSize | int64 | 节点进程占用的虚拟空间,单位为字节 |
Disk.Name | string | 节点路径所在的磁盘名称 |
Disk.LoadPercent | int32 | 节点路径占用磁盘的百分比 |
Disk.TotalSpace | int64 | 节点路径所在的磁盘空间大小,单位为字节 |
Disk.FreeSpace | int64 | 节点路径所在的磁盘剩余空间大小,单位为字节 |
FileDesp.LoadPercent | int32 | 节点进程占用的文件句柄的百分比 |
FileDesp.TotalNum | int64 | 节点进程文件句柄限制 |
FileDesp.FreeNum | int64 | 节点进程剩余的文件句柄个数 |
FTStatus | string | 容错状态,取值如下: "NOSPC":磁盘空间不足 "DEADSYNC":节点数据不同步 "SLOWNODE":节点数据同步过慢 "TRANSERR":节点事务异常 |
StartHistory | array | 节点启动历史(只取最新的十条记录) |
AbnormalHistory | array | 节点异常后启动历史(只取最新的十条记录) |
DiffLSNWithPrimary | int64 | 与主节点的 LSN 差异 该字段可用于检查主备节点的数据一致性 |
Note:
- 协调节点的快照返回所有节点的信息,非协调节点返回自身节点的信息。
- 备节点在计算与主节点的 LSN 差异时,所取的主节点 LSN 可能是两秒钟前的,因此 DiffLSNWithPrimary 可能与实际值存在一定偏差。(两秒是一个心跳间隔)
查看节点健康检测快照
> db.snapshot(SDB_SNAP_HEALTH)
输出结果如下:
{ "NodeName": "sdbserver:11810", "IsPrimary": true, "ServiceStatus": true, "Status": "Normal", "FTStatus": "", "BeginLSN": { "Offset": -1, "Version": 0 }, "CurrentLSN": { "Offset": -1, "Version": 0 }, "CommittedLSN": { "Offset": -1, "Version": 0 }, "CompleteLSN": -1, "LSNQueSize": 0, "NodeID": [ 2, 2 ], "DataStatus": "Normal", "SyncControl": false, "Ulimit": { "CoreFileSize": 0, "VirtualMemory": -1, "OpenFiles": 60000, "NumProc": 15633, "FileSize": -1, "StackSize": 524288 }, "ResetTimestamp": "2021-03-29-15.47.59.191518", "ErrNum": { "SDB_OOM": 0, "SDB_NOSPC": 0, "SDB_TOO_MANY_OPEN_FD": 0 }, "Memory": { "LoadPercent": 3, "TotalRAM": 4142768128, "RssSize": 156041216, "LoadPercentVM": 100, "VMLimit": -1, "VMSize": 2048024576 }, "Disk": { "Name": "/dev/sdb1", "LoadPercent": 19, "TotalSpace": 211243687936, "FreeSpace": 169706725376 }, "FileDesp": { "LoadPercent": 0, "TotalNum": 60000, "FreeNum": 59954 }, "StartHistory": [ "2021-03-29-15.47.59.200280" ], "AbnormalHistory": [], "DiffLSNWithPrimary": -1 }
用户可通过查看字段 DiffLSNWithPrimary 的值,检查节点数据的一致性。如果该字段取值为 0,说明节点间数据一致。具体操作步骤如下:
> db.snapshot(SDB_SNAP_HEALTH, {}, {NodeName: null, IsPrimary: null, DiffLSNWithPrimary: null})
输出结果如下:
... { "NodeName": "sdbserver1:11820", "IsPrimary": true, "DiffLSNWithPrimary": 0 } { "NodeName": "sdbserver2:11820", "IsPrimary": false, "DiffLSNWithPrimary": 0 } ...