版本

# 高可用


# 简介

对于任何一个数据库,提供安全稳定的数据存储服务永远是首要也是最重要的职责。

eZooDB不仅在各种图能力上有着突出的性能表现,在数据库的基础能力方面也提供了全方面的保障。

作为分布式的内存型图数据库,我们通过WAL、内存镜像、持久层管理等多种技术手段,确保能够应对各种面向网络、硬件、系统文件的灾难事件,并通过最小代价完成错误数据的检测、隔离与修复,保证接口层面的全图数据一致性。


# 基于节点故障的高可用

当网络发生故障、服务进程异常中断等,导致集群中某些节点不可访问时,集群将隔离故障节点,保持整体服务的正常,故障节点会进入等待状态,网络恢复后将重新加入集群,完成历史数据同步后开始提供服务。

# 测试方法

对集群节点所在机器,进行物理断网操作,然后重新连接网络,分别观察断网前后集群的响应。

# 服务响应

  • 故障节点断网后,服务中断,进入等待重连状态
  • 当故障节点为主节点时,从节点开始尝试呼叫主节点,呼叫超时后,集群将启动重新选举
  • 当故障节点恢复正常访问后,自动连接并进行数据同步

# 基于磁盘故障的高可用

当磁盘异常、或磁盘IO异常时,服务进程能够保持稳定无异常,磁盘故障恢复后,读写数据保证无错误。

# 测试方法

  • 启动10并发的数据库联机压测程序,运行5分钟
  • 执行命令:echo 1 > /sys/block/sdal/device/delete,模拟磁盘故障
  • 等待5分钟
  • 重启服务
  • 执行数据校验脚本,通过读写操作验证全图数据的正确性

# 基于数据异常的高可用

eZooDB采用多层机制来确保数据的正确性,作为分布式内存型数据库,从应用层到底层,发生数据异常时将触发相应机制进行数据修复。

  • 集群节点通过oplog、水位等信息进行一致性校验,发生异常时,将启动从主节点全量同步
  • eZooDB的持久化是基于内存镜像文件与元数据文件,由于内存异常或文件错误,导致内存镜像文件损坏时,将启动基于元数据的修复
  • 我们支持并鼓励用户定期备份,当发生元数据文件的损坏或丢失时,可以通过备份文件进行指定图、或全库的还原

# 测试方法

针对从集群主节点或备份文件进行修复的情况,操作以文件复制为主,基于数据异常的高可用测试,主要以基于元数据文件修复为目标。

  • 删除oplog或内存镜像文件,模拟除元数据之外的数据异常
  • 启动服务
  • 自动进行数据校验,检测出数据异常并启动修复(rebuild),修复完成后恢复正常启动流程
最近一次更新时间: 9/22/2022, 9:23:05 AM