人大金仓 金仓数据库KingbaseES 读写分离集群-状态管理

176 阅读3分钟

金仓数据库KingbaseES 读写分离集群-状态管理

关键字:

KingbaseES、集群管理、集群状态检查

一、集群状态信息

集群故障、节点故障、网络故障和部分人为错误、资源耗尽问题都会表现出集群状态异常,集群状态信息是监控中重要的监控项。

1.1 节点状态

在存活的数据库节点执行(当前数据库故障则无法查看状态)

repmgr cluster show

图例:

file

告警值:

status列不是running状态

upstream 列,不是级联复制情况下不是primary 的node_name不同节点获得的数据不同

1.2 守护进程状态

在存活的数据库节点执行(当前数据库故障则无法查看状态)

repmgr service status

图例: file

告警值:

repmgrd列,不是running状态

2.1.3 流复制状态

ksql连接数据库执行(连接主库查询)

查询流复制信息:

SELECT * FROM sys_stat_replication;

图例:

file

查询主备流复制差距: select sys_wal_lsn_diff(sys_current_wal_flush_lsn(), replay_lsn) as lsn_lag, * from sys_stat_replication;

图例:

file

告警值:

state列值不为streaming

sync_state列和预期不符(配置的同步方式)

复制差距超过预设值

1.4复制槽状态

ksql连接数据库执行(连接主库或备库查询)

复制槽信息:

SELECT * FROM sys_replication_slots;

图例:

![file](http://image.openwrite.cn/31431_A55DAE65E2274B31A42157DB7F195926)

告警值:

主库复制槽个数、slot_type列值或active列值为预期外

二、集群状态基础切换

2.1集群启停

集群的启停通常有两种方式:一键启停和单个节点独立启停。

2.1.1一键启停方式

集群一键停止

$bin_path/sys_monitor.sh stop

图例:

file

集群一键启动

$bin_path/sys_monitor.sh start

图例:

file

2.1.2手动启停方式

手动启动:

需要按照步骤手动启动集群中所有数据库以及守护进程。

a.首先启动所有数据库节点,在启动前需要检查所有数据库状态,保证不能有多主。

sys_ctl -D $data_directory -l logfile start

b.然后启动所有节点的 repmgrd 守护进程。

repmgrd -d -v -f $rep_conf

c.启动所有节点的 kbha 守护进程。

kbha -A daemon -f $rep_conf

d.最后,在所有节点使用 root 用户添加 CRON 任务。

#在文件/etc/cron.d/KINGBASECRON(如果没有请创建)中写入语句:

** 1 * * * * $user . /etc/profile;$bin_path/kbha -A daemon -f $rep_conf

手动停止:

需要按照步骤手动停止所有守护进程以及数据库。

a.首先,在所有节点使用 root 用户注释或删除 CRON 任务。

# 在文件/etc/cron.d/KINGBASECRON 注释(句首使用 #)以下语句:
#* 1 * * * * $user . /etc/profile;$bin_path/kbha -A daemon -f $rep_conf

b.其次,关闭或杀掉所有节点的守护进程 kbha 和 repmgrd。

# 一定先关闭 kbha 进程 kill -9 pidof kbha repmgrd 

c.最后停止所有数据库节点。

sys_ctl -D $data_directory -l logfile stop

2.2集群主备切换

集群主备切换时指主动让主备角色互换,这种场景和故障自动转移的情况有所不同。自动故障转移是主库故障 后,备库升主以替代原主库,这个流程是意外发生、不受控制的。而主备切换一般是在运维过程中由运维人员手动触 发的,使主备角色互换。

在需升主备机节点执行:

$bin_path/repmgr standby switchover

切换示例:

  1. 最初 primary 节点是 node1

file

  1. 选择 node2 为新的 primary。在 node2 运行切换命令,如下所示:

file

  1. 切换结果验证

file

三、故障恢复至集群

一般情况下,故障数据库会由守护进程将其作为备库恢复至集群。但如果故障为主库,默认情况(recovery=standby)下是不会自动将其恢复为备库的,另外,如果用户关闭了自动恢复功能(recovery=manual)或者暂 停了集群(repmgr service pause),那么任何故障数据库都不会自动恢复至集群,这时就需要运维人员手动操作将 故障数据库恢复至集群。

命令行命令:

# 在故障的数据库节点执行
repmgr node rejoin -h ${主库 IP} -d esrep -U esrep -p ${主库 port} [--force-rewind] [--no-check-wal]
# 可以执行简化后的命令
kbha -A rejoin -h ${主库 IP}

参数说明: --force-rewind,当故障数据库和当前主库数据分歧后,需要指定此参数使用 sys_rewind 使得故障数据库 和新主库保持数据一致; —no-check-wal,一般情况下不允许时间线高的数据库恢复为时间线低的主库的备库,此选项可以忽略时 间线和 lsn 检查,必须和--force-rewind 一起使用;

四、总结

1、集群状态信息是监控中重要的监控项,可通过不同维度的集群状态信息查看确认集群的运行情况

2、集群可一键启停及一键切换 更多信息,参见help.kingbase.com.cn/v8/index.ht…