KingbaseES流复制问题排查处理指南

KingbaseES 流复制问题排查处理指南

前言

本手册聚焦 KingbaseES 主备流复制架构的故障排查,适用于数据库管理员(DBA)在日常运维中定位并解决复制中断、数据不一致、连接失败等问题。手册已根据 KingbaseES 实际语法规范修订,覆盖版本差异适配、常见报错处理、日常维护脚本及预防措施,兼顾 V8R3、V8R6、V9 等主流版本,可作为故障处理的标准化参考文档。

一、排错前置准备

在启动故障排查前,需先收集基础环境信息,避免因信息缺失导致排查方向偏差。

1.1 必收集信息清单

信息类别 收集方式(命令/操作) 用途
版本信息 主备库执行:ksql -U system -d test -c "SELECT version();" 确认版本一致性,适配排错方案
复制架构信息 主库执行:ksql -U system -d test -c "SELECT * FROM pg_stat_replication;" 了解当前复制状态
配置文件路径 查看:/home/kingbase/data/kingbase.conf(数据目录下的配置文件) 定位配置文件,检查参数
日志文件路径 查看 kingbase.conf 中 log_directory 参数(默认:/home/kingbase/data/sys_log 提取报错日志细节
节点网络信息 执行:ifconfig/ip addrping 主库IPtelnet 主库IP 54321 确认网络连通性

二、版本差异适配说明

不同 KingbaseES 版本的流复制特性存在差异,故障排查需先匹配版本特性,避免无效操作。

2.1 各版本核心差异对比表

特性 V8R3 V8R6 V9 排错注意事项
Hash 索引复制 不支持 支持 支持 V8R3 环境若使用 Hash 索引,会导致主备数据不一致,需优先替换为 B-tree 索引
逻辑复制 基础支持(稳定性差) 增强支持(容错性提升) 增强支持(容错性提升) V8R3 逻辑复制中断时,建议重启主备库;V8R6/V9 可通过 pg_stat_replication 定位中断点
并行恢复 不支持 支持 支持 V8R3 备库恢复慢时,需检查 WAL 日志生成速度;V8R6/V9 可调整 max_parallel_workers
复制槽管理 手动维护(需定期检查有效性) 自动维护(无效槽标记提醒) 自动维护(无效槽标记提醒) V8R3 需频繁执行 SELECT * FROM pg_replication_slots 清理无效槽;V8R6/V9 关注 active 字段
同步提交配置 复杂(需手动指定备库列表) 简化(支持动态调整同步模式) 简化(支持动态调整同步模式) V8R3 同步提交失败时,需检查 synchronous_standby_names 配置;V8R6/V9 可通过 ALTER SYSTEM 临时调整
多副本同步 不支持 有限支持(最多 2 个同步备库) 增强支持(支持 N 个同步备库) V9 多副本同步中断时,需检查 synchronous_standby_names 中的备库优先级;V8R6 需确认备库是否均在线
延迟备库 不支持 不支持 支持(可配置恢复延迟) V9 延迟备库“不同步”可能是正常延迟,需先检查 recovery_min_apply_delay 参数
备份集成分离 备份工具与复制独立(需手动协同) 备份工具与复制独立(需手动协同) 深度集成(备份时自动暂停复制) V9 备份后复制中断,需检查备份工具是否正常释放复制锁;V8R3/V8R6 需手动重启 wal_sender 进程
监控视图 基础监控(仅核心指标) 基础监控(仅核心指标) 增强监控(新增延迟、锁等待指标) V9 可通过 pg_stat_replication 的 write_lag/replay_lag 定位延迟原因;V8R3/V8R6 需通过 WAL 日志量推算

三、常见报错及标准化处理流程

3.1 网络连接类故障

报错信息

FATAL: could not connect to the primary server: connection to server at "192.168.1.100", port 54321 failed: Connection refused

可能原因

  • 主备节点网络不通(防火墙拦截、路由异常);
  • 主库未监听目标端口(listen_addresses 配置错误);
  • 主库服务未启动。

处理步骤(按优先级排序)

  1. 验证网络连通性
    备库执行 ping 测试,确认主库 IP 可达:

    ping 192.168.1.100 -c 5  # 若丢包/超时,排查网络设备(交换机、防火墙)
    
  2. 检查主库端口监听
    主库执行以下命令,确认 54321 端口(默认端口)已监听:

    # 方式1:netstat(适用于全版本)
    netstat -an | grep 54321  # 预期输出:tcp 0 0 0.0.0.0:54321 0.0.0.0:* LISTEN
    
    # 方式2:ss(适用于 V8R6+)
    ss -tln | grep 54321
    

    若未监听,检查主库 kingbase.conf 中的 listen_addresses:

    # 方式1:直接查看配置文件
    grep "listen_addresses" /home/kingbase/data/kingbase.conf
    
    # 方式2:通过数据库命令查询
    ksql -U system -d test -c "SHOW listen_addresses"
    

    正确配置:listen_addresses = '*'(允许所有IP连接)或包含备库IP。修改后重启主库:

    systemctl restart kingbase  # 或 sys_ctl restart -D /home/kingbase/data
    
  3. 检查防火墙规则
    主备库均执行,确认 54321 端口已开放:

    # 查看防火墙状态
    systemctl status firewalld
    
    # 若开启,检查端口是否开放
    firewall-cmd --list-ports | grep 54321
    
    # 若未开放,临时开放(重启失效)
    firewall-cmd --add-port=54321/tcp
    
    # 永久开放(需重新加载)
    firewall-cmd --permanent -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值