集群管理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;
节点宕机后如何恢复?
当出现节点宕机时,首要任务是排查节点死亡原因,一般从数据库日志信息着手。
警告
数据库节点死亡为较大事故,需通知数据库管理员及时进行处理!
通常采用两种恢复方式:
方式一:重启宕机节点,系统将自动恢复心跳连接并同步元信息,节点状态恢复为在线;
方式二:移除节点,添加新节点。若故障节点无法恢复,将其从集群中移除,并添加一台新节点接替其职责。执行步骤如下:
- 在主控节点执行以下命令,删除故障节点信息
sql-- 删除节点号为node_id的故障节点 ALTER CLUSTER DROP NODE node_id;
- 准备一台新机器,部署与原节点一致的软件与配置
- 在主控节点执行添加命令:
sql-- 集群中添加节点为node_id的节点 ALTER CLUSTER ADD NODE node_id DESCRIBE node_desc;
- 启动新节点服务,系统将自动恢复数据副本并更新集群元信息
如何扩容集群节点?
扩容通过向数据库集群中添加一个或多个节点,来提升计算能力、存储能力或增强容错性。虚谷数据库支持单机扩容为分布式集群、分布式集群扩容,其中扩容又分为离线扩容与在线扩容。
完整的扩容流程见:集群扩容
是否支持手动触发主备切换?
虚谷数据库当前暂不支持手动触发主备切换。
虚谷数据库支持哪些负载均衡策略?
虚谷数据库支持存储主版本轮转分配策略,支持最多3个数据副本(1主2备),根据一定规则轮转地将主版本数据分配到不同的节点,以实现负载均衡。除此之外,还支持会话连接的IPS,作为一种智能代理调度机制,能够根据当前系统状态将会话连接调度到合适的查询节点上。
集群日志文件路径在哪?
虚谷数据库中,与集群相关的日志主要记载到ERROR.LOG
、EVENT.LOG
、TRACE.LOG
。日志路径默认如下:
日志类型 | 保存路径 |
---|---|
错误日志 | /Server/XGLOG/ERROR.LOG |
事件日志 | /Server/XGLOG/EVENT.LOG |
追踪日志 | /Server/XGLOG/TRACE.LOG |
在EVENT.LOG
中可以通过搜索关键字CLU_EVENT
,其主要记载集群节点接入或死亡事件。详情参见日志部分。此外,还可以查看操作系统日志(如dmesg
、/var/log/messages
等),确认是否存在内核级别错误或资源回收行为。
如何进行集群故障检测?
当业务上出现故障时,从集群管理的角度出发,通常检测流程如下:
- 查看日志:重点分析节点退出前的最后操作和关键报错信息;
- 初步确认集群是否健康:查看集群状态,检查各节点资源状态是否异常;
- 定位具体瓶颈:
- 查看线程或资源状态。如使用
top
命令查看某些节点是否存在CPU、I/O使用率飙升,pstack
打印线程调用栈,使用系统表sys_thd_session
查看是否有线程阻塞或长时间执行的线程; - 网络传输问题。可通过系统包
DBMS_TEST
检测集群间通信的网络延迟/丢包; - 存储负载不均/副本调度异常。如某个节点是否承担过多全局存储;是否在迁移/扩容期间,负载未均衡完成;
- 查看线程或资源状态。如使用
- 根据判断结果,执行操作,如重启死亡节点、优化业务sql、调整集群配置等;
例如,当数据库入库效率突然降低,从集群角度出发,有以下排查点:
- 检查数据库集群是否存在节点死亡;
- 检查各节点资源状态,是否某节点负载过高;
- 查看数据库集群节点之间的网络环境(网络不稳定或网络压力大)。若网络不稳定需判断是否是网线或交换机等问题;若存在网络压力大的情况,需查看当前系统正在进行的操作是否存在大量的网络数据交互,引起网络传输堵塞;
数据库中数据的存储层次结构
表是逻辑结构,表中的数据最终都会被存放到指定的表空间(Table Space)中,表空间是表数据的物理存储容器。每个表空间包含多个Chunk,每个Chunk由多个数据块(Block)组成。虚谷数据库按固定大小的数据块(8KB)为单位进行磁盘管理。对于每一条数据,都会生成一个“行结构”(Tuple),包括字段值和额外元数据,将其写入数据块的空闲区域。其层次结构总结如下:
一条数据
└── 构造行结构(Tuple)
└── 写入数据块(Block,8KB)
└── 数据块组成Chunk
└── 存放于表空间(物理存储容器)