首页 > 编程语言 >KingbaseES V8R6集群备份恢复案例之---备份初始化“can not find primary node”故障

KingbaseES V8R6集群备份恢复案例之---备份初始化“can not find primary node”故障

时间:2023-09-18 16:25:03浏览次数:51  
标签:node bin keepalives V8R6 备份 kingbase sys repmgr

案例说明:
KingbaseES V8R6集群,备库作为repo-path节点,建立类型为‘cluster’模式的备份,在执行sys_backup.sh init时,出现“can not find primary node”故障。故障如下图所示:

适用版本:
KingbaseES V8R6

一、集群及备份配置

1、集群节点状态

[kingbase@node101 bin]$ ./repmgr cluster show
 ID | Name  | Role    | Status    | Upstream | Location | Priority | Timeline | LSN_Lag | Connection string                                                                                               
----+-------+---------+-----------+----------+----------+----------+----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------
 1  | node1 | primary | * running |          | default  | 100      | 8        |         | host=192.168.1.101 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3
 2  | node2 | standby |   running | node1    | default  | 100      | 8        | 0 bytes | host=192.168.1.102 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3

2、备份配置文件

[kingbase@node102 bin]$ cat sys_backup.conf |grep -v ^#|grep -v ^$
_target_db_style="cluster"
_one_db_ip="192.168.1.101"
_repo_ip="192.168.1.102"
_stanza_name="kingbase"
_os_user_name="kingbase"
_repo_path="/home/kingbase/kbbr7_repo"
_repo_retention_full_count=5
_crond_full_days=7
_crond_diff_days=0
_crond_incr_days=1
_crond_full_hour=2
_crond_diff_hour=3
_crond_incr_hour=4
_band_width=0
_os_ip_cmd="/sbin/ip"
_os_rm_cmd="/bin/rm"
_os_sed_cmd="/bin/sed"
_os_grep_cmd="/bin/grep"
_single_data_dir="/data/kingbase/hac7/data"
_single_bin_dir="/home/kingbase/cluster/R6HA/ha7/kingbase/kingbase/bin"
_single_db_user="system"
_single_db_port="54321"
_use_scmd=off
_start_fast=y
_compress_type=none
_non_archived_space=1024

如下图所示:

二、问题分析

1、执行sys_backup.sh init故障

[kingbase@node102 bin]$ ./sys_backup.sh start
This bin_dir is :
# pre-condition: check the non-archived WAL files

ERROR: can not find primary node.

2、查看脚本调用过程(sh -x sys_backup.sh start)
如下图所示,在‘repmgr命令前的bin的目录为空,导致repmgr执行错误:

3、查看脚本调用bin目录变量赋值语句
如下图所示,在备份类型“${_target_db_style}”是’cluster‘时,bin目录路径的赋值是通过读取repmgr.conf配置文件的sys_bindir参数配置获取到。

4、查看脚本启动过程中'_bin_dir'变量赋值

Tips:
脚本'_bin_dir'变量值应该为集群节点bin目录,即sys_backup.sh脚本所在目录。
如下图所示,变量'_bin_dir'的变量值为空,导致可执行文件无法找到对应bin目录。

三、问题解决

1、查看主库repmgr.conf配置文件
如下图所示,主库repmgr.conf文件配置文件中sys_bindir的配置正确,只是'data_directory'多了一行,是在做data目录变更时,保留了原data目录的配置。

2、清理repmgr.conf多余的配置
如下图所示,尝试清理repmgr.conf中多余的’data_directory‘的配置信息。

3、查看脚本执行时变量值的获取
如下图所示,变量’_bin_dir',已经获取到正确的变量值。

4、执行sys_backup.sh init成功。

四、总结
本次备份出现的故障,是因为对集群的配置文件repmgr.conf手动修改后造成,在对配置文件修改之前可以通过cp实现文件的备份,修改参数配置后,尽量不要出现冗余的配置,以免脚本读取配置文件变量时出现误导。

标签:node,bin,keepalives,V8R6,备份,kingbase,sys,repmgr
From: https://www.cnblogs.com/kingbase/p/17561152.html

相关文章

  • KingbaseES V8R6运维案例之---数据库resetwal后启动失败
    KingbaseESV8R6运维案例之---数据库resetwal后启动失败案例说明:KingbaseESV8R6集群触发failover切换后,原主库自动recovery失败,现在需要将原主库启动为单实例的数据库运行,在执行了resetwal后,启动数据库失败。sys_log记录以下故障信息:适用版本:KingbaseESV8R6......
  • KingbaseES V8R6集群运维案例之---访问系统表unrecognized token- false故障
    KingbaseESV8R6集群运维案例之---访问系统表‘unrecognizedtoken:"false"’故障案例说明:KingbaseESV8R6集群在升级补丁后,主备库访问系统表出现‘unrecognizedtoken:"false"’故障,如下图所示:适用版本:KingbaseESV8R3/R6一、问题分析1、连接数据库执行系统表访问(如......
  • KingbaseES V8R6集群运维案例--cluster模式备份sys_backup.sh init故障
    KingbaseESV8R6集群运维案例--cluster模式备份sys_backup.shinit故障案例说明:通过脚本方式部署KingbaseESV8R6集群后,在‘cluster’模式备份,执行sys_backup.shinit时,出现“cannotcontain//for”log-path"option"错误,但是在‘single’模式下备份,无此错误。故障信息......
  • KingbaseES V8R6集群运维案例之---修改ssh端口后脚本创建互信
    案例分析:在KingbaseESV8R6集群部署时,需要建立节点之间ssh互信(或者使用securecmdd工具),在有的生产环境,为了安全起见会修改ssh的默认端口;KingbaseESV8R6集群部署提供了脚本用于创建ssh互信,如果修改了系统的ssh端口号后,也需要修改对应的脚本。适用版本:KingbaseESV8R6一、集群节......
  • docker容器里gitlab备份
    一、数据的备份docker容器里的gitlab备份chatgpt/2023/9/185:35:56一、数据的备份1.进入容器dockerexec-itgitlab/bin/bash2、执行备份命令gitlab-rakegitlab:backup:create默认将备份文件保存至/var/opt/gitlab/backups/3.将json和rb文件也复制到备份目录下......
  • KingbaseESV8R6汉字首字母排序
    目的本文目的实现汉字首字母排序。排序规则和字符集的关系如下。selectsys_encoding_to_char(collencoding)asencoding,collname,collcollate,collctypefromsys_collation;按照UTF8字符集匹配中文排序规则如下。selectcollcollatefromsys_collationwheresys_encod......
  • 一文详解数据仓库的物理细粒度备份恢复
    本文分享自华为云社区《DTSETechTalk|第43期:数仓数据可靠保证——物理细粒度备份恢复》,作者:华为云社区精选。大数据时代,数据对企业的重要性不言而喻,如果发生数据丢失或因为误操作而造成数据丢失,将对企业的经营决策带来不可估量的损失。本期《备份恢复全掌握,数仓数据更安全》......
  • KingbaseESV8R6普通用户无权限执行vacuum
    背景数据库日志有如下提示:WARNING:skipping"pivot_t1"---onlytableordatabaseownercanvacuumit从提示可以看出,有用户对表pivot_t1进行vacuum操作时,出现了权限问题。测试TEST=#\c-ud;Youarenowconnectedtodatabase"TEST"asuser"ud".TEST=>TEST=&g......
  • KingbaseESV8R6用户登录失败自动锁定后解锁遇到权限问题
    测试用户登录失败自动锁定创建用户tee并授权。TEST=#createusertee;CREATEROLETEST=#alteruserteewithcreatedb;ALTERROLETEST=#TEST=#alteruserteewithcreaterole;ALTERROLETEST=#TEST=#alterroleteewithreplication;ALTERROLETEST=#alterus......
  • KingbaseESV8R6识别IO使用率过高
    前言数据库正常运行离不开I/O的使用,在操作系统上,I/O又离不开存储的性能及使用方式,我们可以在存储层利用raid条带化技术使IOPS达到最佳性能。本篇文章有助于确认数据库I/O使用率过高的原因,以及解决方法。确定I/O使用率过高的原因1.需要数据库内置的sys_stat_statements扩展并......