复制组监控

用户可以通过 sdb shell 或者其他驱动监控复制组,查看复制组节点运行状态。

节点健康检测快照

SequoiaDB 巨杉数据库提供多个快照,以查看当前数据库系统的各种状态。其中节点健康检测快照 SDB_SNAP HEALTH 可以查看到各个节点的健康状态。

  • 连接协调节点
  1. > var db = new Sdb( 'sdbserver1', 11810 )
  • 查看复制组 group1 的节点健康状态
  1. > db.snapshot( SDB_SNAP_HEALTH, { GroupName: "group1" } )
  2. {
  3. "NodeName": "sdbserver1:11820",
  4. "IsPrimary": true,
  5. "ServiceStatus": true,
  6. "Status": "Normal",
  7. "BeginLSN": {
  8. "Offset": 0,
  9. "Version": 1
  10. },
  11. "CurrentLSN": {
  12. "Offset": 9610788,
  13. "Version": 1
  14. },
  15. "CommittedLSN": {
  16. "Offset": 76,
  17. "Version": 1
  18. },
  19. "CompleteLSN": 9610868,
  20. "LSNQueSize": 0,
  21. "NodeID": [
  22. 1000,
  23. 1000
  24. ],
  25. "DataStatus": "Normal",
  26. "SyncControl": false,
  27. "Ulimit": {
  28. "CoreFileSize": -1,
  29. "VirtualMemory": -1,
  30. "OpenFiles": 1024,
  31. "NumProc": 23948,
  32. "FileSize": -1
  33. },
  34. "ResetTimestamp": "2018-03-09-09.47.04.826497",
  35. "ErrNum": {
  36. "SDB_OOM": 1,
  37. "SDB_NOSPC": 0,
  38. "SDB_TOO_MANY_OPEN_FD": 1
  39. },
  40. "Memory": {
  41. "LoadPercent": 3,
  42. "TotalRAM": 3157524480,
  43. "RssSize": 96591872,
  44. "LoadPercentVM": 0,
  45. "VMLimit": -1,
  46. "VMSize": 2380341248
  47. },
  48. "Disk": {
  49. "Name": "/dev/mapper/vgdata-lvdata1",
  50. "LoadPercent": 69,
  51. "TotalSpace": 52836298752,
  52. "FreeSpace": 16025624576
  53. },
  54. "FileDesp": {
  55. "LoadPercent": 3,
  56. "TotalNum": 1024,
  57. "FreeNum": 985
  58. },
  59. "StartHistory": [
  60. "2018-01-24-15.55.58.374162",
  61. "2018-01-24-15.55.00.318481"
  62. ],
  63. "CrashHistory": [
  64. "2018-01-24-15.55.58.374162"
  65. ],
  66. "DiffLSNWithPrimary": 0
  67. }

用户可以从节点运行状态、复制组同步状态、系统资源使用情况、节点启动历史等不同的方面,来评估复制组节点的健康状况。

节点基本信息

  • NodeName:节点名由主机名和端口号组成
  • NodeID:第一个元素为复制组 ID,第二个元素为节点 ID

节点运行状态

  • Status:该节点处于正常、正在Rebuild、正在全量同步或正在离线备份
  • ServiceStatus:该节点是否能对外提供读写服务
  • DataStatus:该节点数据是否损坏

Note:

Rebuild 状态:当节点启动时,发现数据损坏后,正在进行数据重组以恢复数据

复制组同步状态

  • IsPrimary:该节点是否为复制组的主节点
  • BeginLSN:在事务日志文件中记录的第一条 LSN
  • CurrentLSN:该节点当前处理的事务日志 LSN
  • CommittedLSN:该节点已刷盘的事务日志 LSN
  • CompleteLSN:备节点已重放完成的事务日志 LSN
  • LSNQueSize:备节点待重放的事务日志数量
  • DiffLSNWithPrimary:该节点与主节点的 LSN 差异。备节点在计算与主节点的 LSN 差异时,所取的主节点 LSN 可能是一个心跳间隔前的,因此 DiffLSNWithPrimary 可能与实际值存在一定偏差。
  • SyncControl:该节点是否处于同步控制。默认情况下,当主备节点 LSN 差距过大时,为避免引发备节点的全量同步,主节点会主动降低处理操作的速度。用户可以通过配置 syncstrategy 参数来修改同步控制的策略。

Note:

每条LSN 由 Offset 和 Version 两个字段组成。Offset 是指该条事务日志在日志文件中的偏移。复制组每次切换主节点,Version 都会递增 1

系统资源使用情况

  • Ulimit:该节点进程的 ulimit 限制
  • Memory:该节点物理内存和虚拟内存的使用情况
  • Disk:该节点数据目录所在的磁盘的使用情况
  • FileDesp:该节点文件句柄使用情况
  • ErrNum:该节点发生内存不足、磁盘空间不足、文件句柄不足等错误的次数

节点启动历史

  • StartHistory:该节点启动历史(只取最新的十条记录)
  • CrashHistory:该节点异常停止后的启动历史(只取最新的十条记录)

重置快照

用户可以通过 resetSnapshot 命令重置节点健康检测快照中的某些字段。

  • 重置复制组 group1 的节点健康检测快照
  1. > db.resetSnapshot( { Type: "health", GroupName: "db1" })
  • 字段 ErrNode、StartHistory、CrashHistory 已被置为空
  1. > db.snapshot( SDB_SNAP_HEALTH, { GroupName: "group1" }, { NodeName: null, ErrNode: null, StartHistory: null, AbnormalHistory: null } )
  2. {
  3. "NodeName": "sdbserver1:11820",
  4. "ErrNum": {
  5. "SDB_OOM": 0,
  6. "SDB_NOSPC": 0,
  7. "SDB_TOO_MANY_OPEN_FD": 0
  8. },
  9. "StartHistory": [],
  10. "CrashHistory": []
  11. }