Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


集群管理FAQ

📄字数 2.4K
👁️阅读量 加载中...

本文档记录与虚谷数据库集群管理相关的问题。

目录

正文

集群中的节点角色有哪些?怎样查看集群节点角色?

  • 虚谷数据库提供5个节点角色,分别为控制角色(Master)、查询角色(Query)、工作角色(Work)、存储角色(Storage)、变更记载角色(Gather)。其功能介绍见集群管理
  • 集群节点角色可通过系统虚表SYS_CLUSTERS中NODE_TYPE字段判断,每一个节点可拥有多个角色;

集群的主节点是如何设置的?

虚谷数据库中控制节点为主备双机方案。在集群启动时,根据cluster.ini配置文件将奇数号的控制节点设置为主控制节点,将偶数号控制节点设置为备控制节点。当一个控制节点死亡或者故障后,另一个控制节点自动接管。

提示

作为控制角色的节点数不能超过2个

集群节点间是如何维护心跳检测的?

虚谷数据库通过心跳检测来判断集群中各个节点是否存活。其具体检测方式为:

  • 非控制节点每秒向主控制节点发送心跳消息,主控制节点与备控制节点每秒互发心跳消息;
  • 主控制节点每2秒对除自身外的所有节点进行一次活性检测;
  • 备控制节点每2秒对主控制节点进行一次活性检测;

如何判断集群是否正常运行?

集群的运行状态信息可以通过以下方式获取:

  • SHOW CLUSTERS命令:适合日常使用。无需切换至系统库,也无需权限认证。使用说明见:CLUSTERS
  • SYS_CLUSTERS系统虚表:适合脚本化处理或复杂查询。需切换到系统数据库并具备访问权限。使用说明见:SYS_CLUSTERS

节点宕机后如何恢复?

当出现节点宕机时,首要任务是排查节点死亡原因,一般从数据库日志信息着手。

警告

数据库节点死亡为较大事故,需通知数据库管理员及时进行处理!

通常采用两种恢复方式:

  • 方式一:重启宕机节点,系统将自动恢复心跳连接并同步元信息,节点状态恢复为在线;

  • 方式二:移除节点,添加新节点。若故障节点无法恢复,将其从集群中移除,并添加一台新节点接替其职责。执行步骤如下:

    1. 在主控节点执行以下命令,删除故障节点信息
    sql
    -- 删除节点号为node_id的故障节点
    ALTER CLUSTER DROP NODE node_id;
    1. 准备一台新机器,部署与原节点一致的软件与配置
    2. 在主控节点执行添加命令:
    sql
    -- 集群中添加节点为node_id的节点
    ALTER CLUSTER ADD NODE node_id DESCRIBE node_desc;
    1. 启动新节点服务,系统将自动恢复数据副本并更新集群元信息

如何扩容集群节点?

扩容通过向数据库集群中添加一个或多个节点,来提升计算能力、存储能力或增强容错性。虚谷数据库支持单机扩容为分布式集群、分布式集群扩容,其中扩容又分为离线扩容与在线扩容。

完整的扩容流程见:集群扩容

是否支持手动触发主备切换?

虚谷数据库当前暂不支持手动触发主备切换

虚谷数据库支持哪些负载均衡策略?

虚谷数据库支持存储主版本轮转分配策略,支持最多3个数据副本(1主2备),根据一定规则轮转地将主版本数据分配到不同的节点,以实现负载均衡。除此之外,还支持会话连接的IPS,作为一种智能代理调度机制,能够根据当前系统状态将会话连接调度到合适的查询节点上。

集群日志文件路径在哪?

虚谷数据库中,与集群相关的日志主要记载到ERROR.LOGEVENT.LOGTRACE.LOG。日志路径默认如下:

日志类型保存路径
错误日志/Server/XGLOG/ERROR.LOG
事件日志/Server/XGLOG/EVENT.LOG
追踪日志/Server/XGLOG/TRACE.LOG

EVENT.LOG中可以通过搜索关键字CLU_EVENT,其主要记载集群节点接入或死亡事件。详情参见日志部分。此外,还可以查看操作系统日志(如dmesg/var/log/messages等),确认是否存在内核级别错误或资源回收行为。

如何进行集群故障检测?

当业务上出现故障时,从集群管理的角度出发,通常检测流程如下:

  • 查看日志:重点分析节点退出前的最后操作和关键报错信息;
  • 初步确认集群是否健康:查看集群状态,检查各节点资源状态是否异常;
  • 定位具体瓶颈:
    1. 查看线程或资源状态。如使用top命令查看某些节点是否存在CPU、I/O使用率飙升,pstack打印线程调用栈,使用系统表sys_thd_session查看是否有线程阻塞或长时间执行的线程;
    2. 网络传输问题。可通过系统包DBMS_TEST检测集群间通信的网络延迟/丢包;
    3. 存储负载不均/副本调度异常。如某个节点是否承担过多全局存储;是否在迁移/扩容期间,负载未均衡完成;
  • 根据判断结果,执行操作,如重启死亡节点、优化业务sql、调整集群配置等;

例如,当数据库入库效率突然降低,从集群角度出发,有以下排查点:

  • 检查数据库集群是否存在节点死亡;
  • 检查各节点资源状态,是否某节点负载过高;
  • 查看数据库集群节点之间的网络环境(网络不稳定或网络压力大)。若网络不稳定需判断是否是网线或交换机等问题;若存在网络压力大的情况,需查看当前系统正在进行的操作是否存在大量的网络数据交互,引起网络传输堵塞;

数据库中数据的存储层次结构

表是逻辑结构,表中的数据最终都会被存放到指定的表空间(Table Space)中,表空间是表数据的物理存储容器。每个表空间包含多个Chunk,每个Chunk由多个数据块(Block)组成。虚谷数据库按固定大小的数据块(8KB)为单位进行磁盘管理。对于每一条数据,都会生成一个“行结构”(Tuple),包括字段值和额外元数据,将其写入数据块的空闲区域。其层次结构总结如下:

一条数据
└── 构造行结构(Tuple)
    └── 写入数据块(Block,8KB)
        └── 数据块组成Chunk
            └── 存放于表空间(物理存储容器)