单机+内部备份_全备案例

此场景为单机数据库节点内部备份,方便部署和操作,但备份REPO与数据库实例处于同一个物理主机,冗余度较低。

前期准备

配置ksql免密登录(必须)

在Kingbase数据库运行维护中,经常用到ksql工具登录数据库,本地免密登录可以让维护数据库时,摆脱每次登库输入用户名密码;下面介绍KingbaseES V8数据库2种配置免密登录的方法。
ksql登录时,会去数据库安装用户家目录下的密码文件.encpwd中读取账户,从而登入数据库;密码文件为普通文本文件,可以vi创建,也可以使用kingbase提供的工具sys_encpwd工具来生成密码文件。
本案例采用system用户做演示,若需其他用户视情况更改。

配置环境变量

su - kingbase
vi .bash_profile
export KINGBASE_USER=system
export KINGBASE_PORT=54326
export KINGBASE_DATABASE=test

.encpwd内容解析

每一行代表一条访问规则记录,可以配置多条记录;每条记录包含5个字段,字段与字段之间用冒号“:”分隔,5个字段分别为:主机地址、端口号、库名、用户名、密码(加密格式);
.encpwd若不存在会创建,若已存在,会追加记录。
例:

127.0.0.1:54321:test:u1:MTIzNDU2

sys_encpwd配置工具使用方法

该工具包含5个参数,5个参数均需要输入才能配置成功
参数说明:

-H, --hostname=主机地址,允许单主机地址匹配和全匹配,全匹配时使用*指定
-P, --portnum=端口号,仅允许单端口匹配
-D, --database=数据库名,允许单数据库匹配和全匹配,全匹配时使用*指定
-U, --user=用户名,仅允许单用户匹配
-W, --password=用户对应的密码,仅允许单用户匹配

注意:当前四个参数输入与原文件中的某一条记录完全相同时,会修改该条记录相应的密码,否则生成一条新的记录。

示例1:将新创建用户登录信息加入密码文件

--创建用fuwa并指定密码,用ksql测试登录需要输入密码
[kingbase@node1 ~]$ ksql -Usystem -W test
口令:
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=# create user fuwa with password 'fuwa';
CREATE ROLE
test=# \q
[kingbase@node1 ~]$ ksql -Ufuwa test
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=> 

--使用sys_encpwd工具配置密码,指定fuwa用户可以从任意主机、任意端口,登录任意数据库
[kingbase@node1 ~]$ sys_encpwd -H \* -P \* -D \* -U fuwa -W fuwa
[kingbase@node1 ~]$ cat .encpwd 
*:*:*:fuwa:ZnV3YQ==

参数说明:-H 指定任意主机,-P指定任意端口,-D指定任意库*,“*”为特殊字符,需要加\转义**

--测试用户fuwa免密登录
[kingbase@node1 ~]$ ksql -Ufuwa test
ksql (V8.0)
输入 "help" 来获取帮助信息.

test=> 

示例2:对system用户登录信息加入密码文件

[kingbase@node1 ~]$ sys_encpwd -H \* -P \* -D \* -U system -W kingbase
[kingbase@node1 ~]$ cat .encpwd 
*:*:*:fuwa:ZnV3YQ==
*:*:*:system:a2luZ2Jhc2U=

问题:免密登录配置后登录失败

--问题描述
免密登录配置后登录失败
[kingbase@guanxishujukufuwuqi2 ~]$ cat .encpwd 
*:*:*:system:dG9wYWhwY18xMjM=
[kingbase@guanxishujukufuwuqi2 ~]$ ksql
ksql: error: could not connect to server: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/tmp/.s.KINGBASE.54321"?
[kingbase@guanxishujukufuwuqi2 ~]$ ps -ef | grep Kingbase
kingbase    2044       1  0 Dec20 ?        00:00:08 /KingbaseV8R6/KESRealPro/V008R006C008B0014/Server/bin/kingbase -D /topsoft/kbdata
kingbase  563074  555702  0 19:45 pts/0    00:00:00 grep Kingbase

--解决办法

数据库开启归档模式(必须)

--开启归档模式
[kingbase@node1 ~]$ vi /data/kingbase.conf
#archive_mode = off             # enables archiving; off, on, or always
#archive_command = ''
改为
archive_mode = on               # enables archiving; off, on, or always
archive_command = ''

--重启库
[kingbase@node1 ~]$ sys_ctl restart -D /data/

补充:archive_command 没有被注释,内容将被脚本自动修改

规划备份目录

[root@node1 bin]# mkdir -p /kbrmanbak
[root@node1 bin]# chown -R kingbase:kingbase /kbrmanbak/
[root@node1 bin]# chmod -R 755 /kbrmanbak/

sys_rman的初始化配置

准备初始配置文件

sys_backup.conf,初始化配置文件,供操作人员修改的配置文件;
sys_rman.conf,运行时配置文件,由初始化动作自动生成,不推荐人为后续的修改。
工具按照如下顺序寻找初始化配置文件

cd /KingbaseES/V8/Server
# bin/sys_backup.conf
# share/sys_backup.conf

生成sys_backup.conf并更改

V008R006C005B0023之后的版本,支持securecmdd或sshd;之前的版本支持sshd。

--查找sys_backup.conf模板位置
[kingbase@node1 bin]$ find / -name sys_backup.conf
/KingbaseES/V8/Server/share/sys_backup.conf
/KingbaseES/V8/ClientTools/share/sys_backup.conf
/KingbaseES/V8/ManagerTools/share/sys_backup.conf

--生成正式sys_backup.conf文件
[kingbase@node1 bin]$ cp /KingbaseES/V8/Server/share/sys_backup.conf /KingbaseES/V8/Server/bin/sys_backup.conf

--正式sys_backup.conf文件  追加以下内容:
# 网络限速,单位固定为 MB/s, 默认为0,代表不限速,配置文件仅接受纯数字
# band witdh limit, fixed in MB/s, default 0 means no limit
_band_width=0
# 使用通讯协议,默认使用securecmdd,可选使用ssh,视生产环境版本更改参数值
# V008R006C005B0023之后的版本,支持securecmdd或sshd;之前的版本支持sshd。
# on means securecmdd, off means normal ssh
_use_scmd=on
# 是否快速启动备份,立即生成checkpoint,默认y
# whether to sys_start_backup() fastly, y or n
_start_fast=y
#可在指定备份时、还原时并行处理可使用的并发进程数量
--process-max=4 
# 是否在备份时使用压缩存储,默认为none不压缩 若指定压缩级别,可选范围 [ 0 - 9 ]
# whether to gz the target file, none or gz
_compress_type=gz
--compress-level=3
# 在init过程中,检查未归档的WAL的容量,
# 如果超过设置值,报错并退出init过程
# 单位固定为MB,可选 128 ~ 1024
# if the non archived WAL files , more than this setting
# show ERROR and break the backup-init, unit be fixed in MB, 128 ~ 1024
_non_archived_space=1024
# 不启用归档统计功能
_archive_statistics=n

--更改正式sys_backup.conf文件,更改后内容如下:
[kingbase@node1 bin]$ cat /KingbaseES/V8/Server/bin/sys_backup.conf
#file: sys_backup.conf
#dest dir: <cluster_dir>/kingbase/bin/sys_backup.conf
#dest dir: <cluster_dir>/kingbase/share/sys_backup.conf

#单机 single 集群 cluster 集群各节点独立备份 single-pro
# target db style enum:  single/cluster 
_target_db_style="single"
#一个数据库节点的IP,支持主机名、IPv4、IPv6地址
# one kingbase node IP  
# just provide one IP, script will use 'repmgr cluster show' get other node IP
_one_db_ip="192.168.40.110"  
#REPO备份节点的IP 本配置项支持主机名、IPv4、IPv6地址
# local repo IP, inner-REPO, must be same as one_db_ip, means repo located in one db node
# outer repo IP, outer-REPO, means repo located in outer node
_repo_ip="192.168.40.110"
# 备份服务器的标签,仅在备份范畴内使用
# label of this cluster
_stanza_name="kingbase"  
# 操作系统的用户名
# OS user name of database 
_os_user_name="kingbase" 
# 实际保存备份集的目录
# !!!! dir to store the backup files
# should be accessable for the OS user
_repo_path="/kbrmanbak/kbbr_repo"
# 保存全量备份的数目,超过此数目的全量备份将被自动移除
# count of keep, over the count FULL-backup will be remove
_repo_retention_full_count=5 
# 自动执行全量备份的间隔天数
# count of days, interval to do FULL-backup
_crond_full_days=1  
# 自动执行差异备份的间隔天数,0表示不执行
# count of days, interval to do DIFF-backup
_crond_diff_days=0 
# 自动执行增量备份的间隔天数,0表示不执行
# count of days, interval to do INCR-backup
_crond_incr_days=0
# 自动执行全量备份的时间点,2表示凌晨2点
# HOUR to do the FULL-backup
_crond_full_hour=2 
# 自动执行差异备份的时间点,3表示凌晨3点
# HOUR to do the DIFF-backup
_crond_diff_hour=3 
# 自动执行增量备份的时间点,4表示凌晨4点
# HOUR to do the INCR-backup
_crond_incr_hour=4 
# 操作系统常见命令的全路径文件名
# OS cmd define
_os_ip_cmd="/sbin/ip"
_os_rm_cmd="/bin/rm"
_os_sed_cmd="/bin/sed"
_os_grep_cmd="/bin/grep"
# 以下四个参数,仅用于单机模式
# !!! these follow 4 parameter ONLY for single style
# 单机数据库节点的数据目录
# data dir of single 
_single_data_dir="/data"
# 单机数据库节点的二进制目录
# bin dir of single
_single_bin_dir="/KingbaseES/V8/Server/bin"
# 单机数据库节点的数据库登录用户名
# database user of single
_single_db_user="system"
# 单机数据库节点的端口
# database port of single
_single_db_port="54321"
# 网络限速,单位固定为 MB/s, 默认为0,代表不限速,配置文件仅接受纯数字
# band witdh limit, fixed in MB/s, default 0 means no limit
_band_width=0
# 使用通讯协议,默认使用securecmdd,可选使用ssh,视生产环境版本更改参数值
# V008R006C005B0023之后的版本,支持securecmdd或sshd;之前的版本支持sshd。
# on means securecmdd, off means normal ssh
_use_scmd=on
# 是否快速启动备份,立即生成checkpoint,默认y
# whether to sys_start_backup() fastly, y or n
_start_fast=y
#可在指定备份时、还原时并行处理可使用的并发进程数量
--process-max=4 
# 是否在备份时使用压缩存储,默认为none不压缩 若指定压缩级别,可选范围 [ 0 - 9 ]
# whether to gz the target file, none or gz
_compress_type=gz
--compress-level=3
# 在init过程中,检查未归档的WAL的容量,
# 如果超过设置值,报错并退出init过程
# 单位固定为MB,可选 128 ~ 1024
# if the non archived WAL files , more than this setting
# show ERROR and break the backup-init, unit be fixed in MB, 128 ~ 1024
_non_archived_space=1024
# 不启用归档统计功能
_archive_statistics=n

注意事项:

[kingbase@node1 bin]$ vi /KingbaseES/V8/Server/bin/sys_backup.conf
....
# 使用通讯协议,默认使用securecmdd,可选使用ssh,视生产环境版本更改参数值
# V008R006C005B0023之后的版本,支持securecmdd或sshd;之前的版本支持sshd。
# on means securecmdd, off means normal ssh
_use_scmd=off
...

--查看版本方法
[kingbase@node1 bin]$ ksql -V
ksql (Kingbase) V008R006C005B0023

sys_rman初始化

初始化步骤

kingbase@node1 kbrmanbak]$ sys_backup.sh init
The authenticity of host '192.168.40.110 (192.168.40.110)' can't be established.
ECDSA key fingerprint is b8:54:e0:74:c5:e2:33:46:0d:7d:39:91:e3:b5:5a:6d.
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.40.110's password: 
# generate single sys_rman.conf...DONE
# update single archive_command with sys_rman.archive-push...DONE
# create stanza and check...(maybe 60+ seconds)
2023-12-22 13:43:32.069 CST [12140] 警告:  max_connections should be less than or equal than 10 (restricted by license)
2023-12-22 13:43:32.069 CST [12140] 提示:  the value of max_connect is set 10
# create stanza and check...DONE
# initial first full backup...(maybe several minutes)
# initial first full backup...DONE
# Initial sys_rman OK.
'sys_backup.sh start' should be executed when need back-rest feature.

问题处理

check stanza failed
--问题描述:
sys_rman初始化报错
[kingbase@node1 bin]$ sys_backup.sh init
The authenticity of host '192.168.40.110 (192.168.40.110)' can't be established.
ECDSA key fingerprint is b8:54:e0:74:c5:e2:33:46:0d:7d:39:91:e3:b5:5a:6d.
Are you sure you want to continue connecting (yes/no)? yes
Please input password ...
root@192.168.40.110's password: 

local <-> root@192.168.40.110 ssh pwd-less OK.
# generate single sys_rman.conf...DONE
# update single archive_command with sys_rman.archive-push...DONE
# create stanza and check...(maybe 60+ seconds)
ERROR: check stanza failed, check log file /KingbaseES/V8/Server/log/sys_rman_check.log

--分析过程
[kingbase@node1 bin]$ tail -300f  /KingbaseES/V8/Server/log/sys_rman_check.log
2023-12-22 13:38:56.493 P00   INFO: check command begin 2.27: --config=/kbrmanbak/kbbr_repo/sys_rman.conf --log-level-console=info --log-level-file=info --log-path=/KingbaseES/V8/Server/log --log-subprocess --kb1-path=/data --kb1-port=54321 --kb1-user=system --repo1-path=/kbrmanbak/kbbr_repo --stanza=kingbase
ERROR: [068]: archive_command '[null]' must contain sys_rman
2023-12-22 13:38:57.009 P00   INFO: check command end: aborted with exception [068]

--解决办法
去掉archive_command前的#标识,去掉后如下
archive_command='/KingbaseES/V8/Server/bin/sys_rman --config /kbrmanbak/kbbr_repo/sys_rman.conf --stanza=kingbase archive-push %p'

重启库
sys_backup.sh init

删除目录
cd /kbrmanbak/
rm -rf kbbr_repo/

再次sys_rman初始化成功
kingbase@node1 kbrmanbak]$ sys_backup.sh init
The authenticity of host '192.168.40.110 (192.168.40.110)' can't be established.
ECDSA key fingerprint is b8:54:e0:74:c5:e2:33:46:0d:7d:39:91:e3:b5:5a:6d.
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.40.110's password: 
# generate single sys_rman.conf...DONE
# update single archive_command with sys_rman.archive-push...DONE
# create stanza and check...(maybe 60+ seconds)
2023-12-22 13:43:32.069 CST [12140] 警告:  max_connections should be less than or equal than 10 (restricted by license)
2023-12-22 13:43:32.069 CST [12140] 提示:  the value of max_connect is set 10
# create stanza and check...DONE
# initial first full backup...(maybe several minutes)
# initial first full backup...DONE
# Initial sys_rman OK.
'sys_backup.sh start' should be executed when need back-rest feature.

securecmdd does not work
--问题描述
[kingbase@guanxishujukufuwuqi2 share]$ sys_backup.sh init
ERROR: securecmdd does not work, please check

--解决办法

[root@guanxishujukufuwuqi2 ~]# cd /KingbaseV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools/zip
[root@guanxishujukufuwuqi2 zip]$ ls -l
total 232164
-rwxrwxr-x 1 root root    179967 Sep  2 04:15 cluster_install.sh
-rw-rw-r-- 1 root root 234974045 Sep  2 04:15 db.zip
-rw-rw-r-- 1 root root     14409 Sep  2 04:15 install.conf
-rw-rw-r-- 1 root root   2552788 Sep  2 04:15 securecmdd.zip
-rwxrwxr-x 1 root root      7374 Sep  2 04:15 trust_cluster.sh
[root@guanxishujukufuwuqi2 zip]$ unzip securecmdd.zip 
Archive:  securecmdd.zip
   creating: securecmdd/
   creating: securecmdd/lib/
  inflating: securecmdd/lib/libcrypt.so.1  
  inflating: securecmdd/lib/libcrypto.so.1.1  
  inflating: securecmdd/lib/libssl.so.1.1  
   creating: securecmdd/bin/
  inflating: securecmdd/bin/sys_securecmd  
  inflating: securecmdd/bin/sys_secureftp  
  inflating: securecmdd/bin/sys_HAscmdd.sh  
  inflating: securecmdd/bin/sys_securecmdd  
   creating: securecmdd/share/
  inflating: securecmdd/share/sys_HAscmdd.conf  
  inflating: securecmdd/share/key_file  
  inflating: securecmdd/share/securecmdd_config  
  inflating: securecmdd/share/securecmdd.service  
  inflating: securecmdd/share/securecmd_config  
  inflating: securecmdd/share/accept_hosts  

[root@guanxishujukufuwuqi2 zip]$ cd securecmdd/bin/
[root@guanxishujukufuwuqi2 bin]$ ls -l
total 2032
-rwxr-xr-x 1 root root  34468 Sep  2 04:15 sys_HAscmdd.sh
-rwxr-xr-x 1 root root 854936 Sep  2 04:15 sys_securecmd
-rwxr-xr-x 1 root root 986600 Sep  2 04:15 sys_securecmdd
-rwxr-xr-x 1 root root 198976 Sep  2 04:15 sys_secureftp

说明:必须root下启动

[root@guanxishujukufuwuqi2 bin]# sh sys_HAscmdd.sh init
successfully initialized the sys_securecmdd, please use "sys_HAscmdd.sh start" to start the sys_securecmdd
[root@guanxishujukufuwuqi2 bin]# sh sys_HAscmdd.sh start
Created symlink /etc/systemd/system/multi-user.target.wants/securecmdd.service → /etc/systemd/system/securecmdd.service.
--问题描述
[kingbase@guanxishujukufuwuqi2 ~]$ sys_backup.sh init
# pre-condition: check the non-archived WAL files
# generate single sys_rman.conf...DONE
# update single archive_command with sys_rman.archive-push...DONE
# create stanza and check...(maybe 60+ seconds)
# create stanza and check...DONE
# initial first full backup...(maybe several minutes)
ERROR: full backup failed, check log file /KingbaseV8R6/KESRealPro/V008R006C008B0014/Server/log/sys_rman_backup.log

[kingbase@guanxishujukufuwuqi2 ~]$ tail -300f /KingbaseV8R6/KESRealPro/V008R006C008B0014/Server/log/sys_rman_backup.log
2023-12-29 14:53:23.955 P01   INFO: backup file /topsoft/kbdata/base/1/1177 (0B, 99%)
2023-12-29 14:53:23.955 P02   INFO: backup file /topsoft/kbdata/.wallet/userkey.kr (0B, 99%)
2023-12-29 14:53:24.057 P03   INFO: backup file /topsoft/kbdata/.wallet/tspkey.kr (0B, 99%)
2023-12-29 14:53:24.257 P01   INFO: backup file /topsoft/kbdata/.wallet/tbcolkey.kr (0B, 99%)
2023-12-29 14:53:24.257 P02   INFO: backup file /topsoft/kbdata/.wallet/method.md (0B, 99%)
ERROR: [041]: raised from local-4 protocol: unable to open file '/topsoft/kbdata/kingbase.conf_back_2023-12-20_14_11_44' for read: [13] Permission denied
       [file_open_err] on retry after 0ms
       [file_open_err] on retry after 15000ms
2023-12-29 14:53:32.616 P00   INFO: backup command end: aborted with exception [041]

备份管理与优化

性能优化-并行处理

工具支持多进程并发拷贝物理文件;请根据当前环境的主库的性能情况,合理设置多进程数量。
可指定备份时、还原时并行处理可使用的并发进程数量。
–process-max=4 # 默认指定可并发4个进程来备份或还原 可选范围是1~999
image.png

性能优化-压缩优化

压缩将节约空间、消耗时间;不压缩将节约时间、消耗空间;请根据场景需要,设置是否压缩存储备份集和归档WAL日志文件。
指定备份文件实际存储时压缩算法和压缩级别

--compress-type= none  # none 不压缩,默认设置,可选 none / gz
--compress-level=3  # 指定压缩级别,可选范围 [ 0 - 9 ]

备份还原时限速

备份和还原时,工具可以进行限速,单位固定为MB/s,可以在sys_rman.conf中动态调整。
限速功能,在还原场景时,因为逐个文件进行checksum校验和比对,限速精度受到影响,实际均速低于设定速度。建议在还原时不开启限速功能, REPO_PATH/sys_rman.conf 配置 band-width=0 。
在单机和集群内部备份场景时,限速行为将生效

备份任务的启停

sys_backup.sh start

脚本使用crontab命令增加定时任务,使用sys_rman进行定时备份;可以通过crontab -l 查看定时任务。
全量备份、差异备份、增量备份,均为可选。
备份类型、备份周期和备份时间由配置文件sys_backup.conf指定。

[kingbase@node1 ~]$ sys_backup.sh start
Enable some sys_rman in crontab-daemon
Set full-backup in 1 days
0 2 */1 * * kingbase /KingbaseES/V8/Server/bin/sys_rman --config=/kbrmanbak/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup >> /KingbaseES/V8/Server/log/sys_rman_backup_full.log 2>&1

[kingbase@node1 ~]$ crontab -l
0 2 */1 * *  /KingbaseES/V8/Server/bin/sys_rman --config=/kbrmanbak/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup >> /KingbaseES/V8/Server/log/sys_rman_backup_full.log 2>&1

说明:
需要去掉以下中的kingbase,不然备份提示/bin/sh: kingbase: 未找到命令
[kingbase@node1 ~]$ crontab -l
0 2 */1 * *  kingbase /KingbaseES/V8/Server/bin/sys_rman --config=/kbrmanbak/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup >> /KingbaseES/V8/Server/log/sys_rman_backup_full.log 2>&1

sys_backup.sh stop

从系统CRONTAB中移除所有sys_rman相关的备份条目。

[kingbase@node1 ~]$ sys_backup.sh stop
Disable all sys_rman in crontab-daemon

[kingbase@node1 kingbase]$ crontab -l
no crontab for kingbase

sys_backup.sh pause

暂时停止定时备份动作。

sys_backup.sh pause
Puase the sys_rman...DONE

sys_backup.sh unpause

恢复被暂停的定时备份动作。

sys_backup.sh unpause
Un-Puase the sys_rman...DONE

sys_backup.conf信息变化处理

如果sys_backup.conf中关于数据库的信息(包含IP、数据库名、端口等)有所修改,需要重新初始化备份,执行 sys_backup.sh init重新初始化备份功能。
如果sys_backup.conf中关于备份周期和时间点的信息有所修改,重新配置即可,执行sys_backup.sh start重新配置自动备份周期。

sys_rman.conf配置说明

运行时配置文件sys_rman.conf,不推荐手动修改,如果需要进行修改,请参考此段落:

以下参数修改后需要重新初始化生效

# DB节点的data目录
kb*-path=/home/kingbase/kingbase/data
# DB节点的监听端口
kb*-port=54321
# DB节点的数据库用户
kb*-user=esrep
# DB节点的IP地址
kb*-host=10.11.12.13
# DB节点的OS用户名
kb*-host-user=kingbase
# REPO节点的实际备份目录
repo1-path=/home/kingbase/kbbr_repo

修改完成后,执行以下命令完成重新初始化

/home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase stanza-create
/home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase check
/home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --type=full backup

以下参数修改后需要一次全量备份生效

# 是否压缩备份的数据,默认none不压缩,可选 none / gz
# 压缩将节约空间、消耗时间;不压缩将节约时间、消耗空间。
compress-type=none
# 压缩级别, 默认3, 1~9,9代表最大压缩,同时也最耗时
compress-level=3

修改完成后,执行以下命令完成一次全量备份:

/home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --type=full backup

以下参数修改后直接生效

# REPO节点保留至多的全量备份
repo*-retention-full=5
# REPO节点的sys_rman工具日志保存路径
log-path=/home/kingbase/kingbase/log
# 写入到日志文件的日志级别, info debug trace
log-level-file=info
# 执行命令时屏幕的日志级别, info debug trace
log-level-console=info
# 是否记录子进程的日志, y / n
log-subprocess=y
# 多进程的至多数目
process-max=4
# 是否快速生成checkpoint,在开启实际备份之前
start-fast=y
# 是否保留目录下的软链接
link-all=y
# 未归档的WAL文件容量的警告阈值
non-archived-space=1024
# 归档单个WAL的超时时间
archive-timeout=600
# 限速,单位固定为MB/s
band-width=0
# 备份过程中遇到校验和等问题时会执行的自定义命令,如发送告警邮件等
alert-command=( cd /opt/Kingbase/ES/Server/bin; ./sys_mail -s "%t" -b "%c" & )

常见异常处理

1、ERROR RMAN-00500: Non archived WAL files more than 1024 M , Please check the user-guide

原因:在初始化阶段,未归档的WAL文件超过了设定的容忍值
解决:

  • 确保这些WAL日志是否有被其他第三方使用,若有,请尽快联系第三方转移这些归档。
  • 确保这些WAL日志是否被不恰当使用后造成积压(例如归档目录意外删除,存储掉线等)。若有,将其积压文件用scp/cp等方式转移。
  • 在确认这些日志无用后,进入数据库子目录(默认data/sys_wal/archive_status/),rm -rf *.ready 。随后进入数据库执行checkpoint,此时会清理这些积压日志,此操作会引起IO高峰,选择在可维护时间段内进行。
  • 重新执行初始化 sys_backup.sh init

2、ERROR: [058]: version ‘12’ and path ‘…/data’ queried from cluster do not match version ‘12’ and ‘/home/kingbase/cluster/project/cluster/kingbase/data’ read from ‘/home/kingbase/cluster/project/cluster/kingbase/data/global/sys_control’

原因:备份工具需要绝对路径来寻找data目录
解决:启动数据库时,应该使用绝对路径来指定data目录

3、ERROR: sys_backup.conf does not exist

原因:在相应目录不存在sys_backup.conf文件
解决:确认./kingbase/bin/ 或 kingbase/share/ 存在此文件

4、ERROR: /home/kingbase/cluster/project/cluster/kingbase/bin/sys_backup.conf invalid.

原因:指明配置文件具有无效的配置内容
解决:请根据模板,确认配置文件的内容

5、ERROR: Configured repo-path [/home/kingbase/kbbr_repo] be NOT accessable by current user

原因:当前数据库用户不能有效访问配置文件指定的repo-path目录
解决:通过高权限用户比如ROOT去修改目标目录的权限,或重新指定目录

6、ERROR: Configured repo-retention-full invalid.

原因:配置文件中的repo-retention-full不是有效的数字
解决:该配置项repo-retention-full需要大于0的数字

7、ERROR: Configured crond-full-days invalid.

原因:配置文件中的crond-full-days不是有效的数字
解决:该配置项crond-full-days需要大于或等于0的数字

8、ERROR: Configured crond-diff-days invalid.

原因:配置文件中的crond-diff-days不是有效的数字
解决:该配置项crond-diff-days需要大于或等于0的数字

9、ERROR: Configured crond-incr-days invalid.

原因:配置文件中的crond-incr-days不是有效的数字
解决:该配置项crond-incr-days需要大于或等于0的数字

10、ERROR: Configured crond-full-hour invalid.

原因:配置文件中的crond-full-hour不是有效的数字
解决:该配置项crond-full-hour需要大于0

11、ERROR: Configured crond-diff-hour invalid.

原因:配置文件中的crond-diff-hour不是有效的数字
解决:该配置项crond-diff-hour需要大于0

12、ERROR: Configured crond-incr-hour invalid.

原因:配置文件中的crond-incr-hour不是有效的数字
解决:该配置项crond-incr-hour需要大于0

13、ERROR: sys_backup.sh init must executed firstly

原因:尚未初始化工具的环境
解决:执行其他命令之前,执行init初始化命令

14、ERROR: sys_backup.sh must be executed by db-specify user

原因:本脚本不能由非数据库OS用户执行
解决:使用数据库关联的OS用户执行

15、ERROR: repo_ip must located in local, and sys_backup.sh be executed at REPO host.

原因:配置文件sys_backup.conf指定的repo_ip不存在于本地
解决:初始化动作必须在REPO本机执行

16、ERROR: local ssh-keygen fail,please check /tmp/ssh-keygen.log

原因:REPO节点与数据库节点的SSH免密配置失败
解决:检查日志文件,确认系统原因

17、ERROR: config file ‘/home/kingbase/cluster/project/cluster/kingbase/etc/repmgr.conf’ does not exist

原因:不能找到需要的第三方工具配置文件repmgr.conf
解决:确认目录下存在repmgr.conf文件

18、ERROR: ‘/home/kingbase/cluster/project/cluster/kingbase/etc/repmgr.conf’ at ‘192.168.28.121’ invalid"

原因:在数据库节点192.168.28.121上的repmgr.conf文件内容有误
解决:确认此节点上的repmgr文件

19、ERROR: sys_backup.sh init must be executed by db-specify user ‘kingbase’

原因:初始化命令只能由数据库关联用户执行
解决:使用数据库关联用户执行

20、ERROR: can not connect to db at 192.168.28.37,please check /home/kingbase/cluster/project/cluster/kingbase/data/sys_log/

原因:不能访问节点的数据库服务
解决:检查本信息给出的日志目录,确认原因

21、ERROR: at 192.168.28.37, user ‘kingbase’ can not access the repo-path [/home/kingbase/kbbr_repo]

原因:在数据节点上,指定OS用户不能有效访问repo-path
解决:在此节点,确保指定OS用户的访问权限。

22、ERROR: create stanza failed, check log file /tmp/sys_rman_stanza-create.log

原因:创建stanza失败
解决:检查本信息给出的日志文件

23、ERROR: check stanza failed, check log file /tmp/sys_rman_check.log

原因:创建后的隐式check命令失败
解决:检查本信息给出的日志文件

24、ERROR: full backup failed, check log file /tmp/sys_rman_backup.log

原因:创建后的隐式第一次全量备份失败
解决:检查本信息给出的日志文件

25、ERROR: [050]: unable to acquire lock on file ‘/tmp/sys_rman/kbbr-backup.lock’:

原因:有另外的sys_rman进程在本地环境中运行或上一个进程没有正常退出
解决:删除 /tmp/sys_rman/ *.lock

26、ERROR: [082]: WAL segment 000000010000000000000001 was not archived before the 60000ms timeout HINT: check the archive_command to ensure that all options are correct (especially --stanza). HINT: check the Kingbase server log for errors.

原因之一:可能在互相ssh认证中,需要首次执行一遍YES/NO以过StrictHostKeyChecking的检测。 The authenticity of host ‘10.10.11.xxx (10.10.11.xxx)’ can’t be established. ECDSA key fingerprint is SHA256:dpXDPJcv1S0J8Iy1hpwk2jYi1z5ZxI5eCyKa72LnrYo. Are you sure you want to continue connecting (yes/no)?
解决:要求管理员在数据库节点与外部备份节点之间,以相应的OS用户,互相进行SSH登录,以验证SSH登录场景。
原因之二:可能此时数据库业务量较大,造成的WAL日志文件很多,导致WAL日志文件归档超时(默认60s)
解决:在所有节点的_repo_path/sys_rman.conf文件内的[global]下新增一行“archive-timeout=600”,增大超时时间

27、ERROR:Uncaught FileMissingError: unable to open missing file ‘/home/kingbase/kbbr_repo/backup/kingbase/20201022-141202F/backup.manifest’ for read

原因:因为上一次备份被意外中断,导致上一次备份的某些文件没有正常规整。
解决:进入此错误信息所示目录,找到backup.manifest.copy文件,重新命名为backup.manifest即可再次备份。

28、ERROR: Configured repo-path [/backup/kbbr_repo] already exists

原因:sys_backup.conf内repo-path目录设置不变时,不允许多次执行init操作
解决:将现有的repo-path目录删除(请确认无重要备份数据可以删除)或重命名或移动到其他位置,或者更改sys_backup.conf内repo-path目录设置

29、ERROR: [029]: new backup label ‘20210713-182300F_20210713-144328I’ is not later than latest backup label ‘20210713-182300F_20210713-225102I.manifest.gz’ HINT: has the timezone changed? HINT: is there clock skew?

原因:可能是集群节点时钟不同步
解决:集群中所有节点必须做时钟同步,系统时间需保持一致(要求至少误差范围在2s以内)

30、WARN: unable to check kb-1: [DbConnectError] unable to connect to ‘dbname=‘test’ port=54321 user=‘system’’: FATAL: database “test” does not exist

ERROR: [056]: unable to find primary cluster - cannot proceed
原因:可能是执行sys_rman备份等操作时连接的数据库(默认为test库)不存在,或者是 --kb1-database 参数指定了不存在的数据库
解决:重新创建test库 create database test ,或执行备份等操作时通过 --kb1-database 指定一个存在的数据库,例如: --kb1-database=test1

31、WARN: unable to check kb-1: [DbConnectError] unable to connect to ‘dbname=‘test’ port=54321 user=‘system’’: FATAL: database “test” does not exist

ERROR: [027]: no database found
原因:可能是执行sys_rman check等操作时连接的数据库(默认为test库)不存在,或者是 --kb1-database 参数指定了不存在的数据库
解决:重新创建test库 create database test ,或执行check等操作时通过 --kb1-database 指定一个存在的数据库,例如: --kb1-database=test1

32、ERROR: [055]: sys_control must be present in all online backups HINT: is something wrong with the clock or filesystem timestamps?

原因:可能是sys_control文件自上次备份后一直未被更新导致的,正常情况下,该文件应被频繁地或周期性地修改,对于集群的场景,可能是主节点异常导致备节点上sys_control停止更新
解决:确认sys_control文件的最后修改时间,并调查sys_control停止更新的原因,如问题发生在备节点上,请检查集群状态是否正常,在集群状态正常后再次进行备份

33、FATAL: hot standby is not possible because max_connections = 100 is a lower setting than on the master server (its value was 200)

原因:生成备份集后某时刻又将max_connections等参数改大;sys_rman restore将其还原成原小值,在hot_standby=on的场景下执行sys_ctl start启动重放WAL日志时禁止将max_connections等参数重放成一个更大的值,导致数据库无法启动,sys_log目录下日志显示以上报错
解决:启动数据库前,手动把max_connections等报错的参数改大后再启动数据库;此外,修改配置后即时备份可预防此类报错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/279148.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity | 快速修复Animation missing错误

目录 一、背景 二、效果 三、解决办法 一、背景 最近在做2D 骨骼动画相关的Demo&#xff0c;我自己使用Unity引擎进行骨骼绑定并创建了anim后&#xff0c;一切正常&#xff0c;anim也能播放。但是昨天我修改Obj及子物体的名称&#xff08;由中文改为英文&#xff0c;如&…

数据分析师,就是做报表?错!!

企业作为数据载体&#xff0c;没有数据&#xff0c;大概率也不会再有企业存在 !! 数据分析师&#xff0c;正是这只小舟的船桨&#xff0c;掌舵所有人的命运。注意&#xff0c;是分析师&#xff0c;不是表哥&#xff0c;表姐... 那么作为数据分析师&#xff0c;应该有哪些硬技能…

Python入门学习篇(十二)——内置函数匿名函数

1 内置函数——数学函数 1.1 绝对值函数 1.1.1 语法 abs(参数) # 里面的参数既可以是整数,也可以是小数1.1.2 示例代码 m -1.99 n -9 print(f"{m}的绝对值为: {abs(m)}") print(f"{n}的绝对值为: {abs(n)}")1.1.3 运行截图 1.2 求商和余数 1.2.1 语…

[Angular] 笔记 16:模板驱动表单 - 选择框与选项

油管视频&#xff1a; Select & Option (Template Driven Forms) Select & Option 在 pokemon.ts 中新增 interface: export interface Pokemon {id: number;name: string;type: string;isCool: boolean;isStylish: boolean;acceptTerms: boolean; }// new interface…

算法基础之蒙德里安的梦想

蒙德里安的梦想 核心思想&#xff1a; 状态压缩dp 总方案 横放的方案 剩下的地方竖着放是固定的了 状态压缩 &#xff1a; 将每一列的图(横终点 横起点 竖) 用一个二进制数存下 向后凸的为1 反之为0 状态计算&#xff1a; 所有 i – 1 列 不冲突的 都加和 f[i , j] f[i - 1…

图像文件怎么才能转换为Excel

将图像文件转换为Excel需要通过OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术&#xff0c;先将图片中的文字识别出来&#xff0c;再将识别出的文字导入到Excel中。这可以使用一些在线或离线的OCR工具&#xff0c;例如ABBYY FineReade…

Linux 线程安全 (2)

文章目录 线程同步概念条件变量使用生产消费模型信号量的使用读写锁的使用 Linux 线程安全 &#xff08;1&#xff09; 线程同步概念 竞态条件&#xff1a;因为时序问题&#xff0c;而导致程序异常. 饥饿问题&#xff1a;只使用互相锁保证线程安全时&#xff0c;锁资源总被某…

听说上海移动年终奖16个月!我承认我酸了!

* 你好&#xff0c;我是前端队长&#xff0c;在职场&#xff0c;玩副业&#xff0c;文末有福利! 今天&#xff0c;队长看到一篇帖子&#xff0c;有网友发帖说上海移动的年终奖发了16个月&#xff0c;我承认我酸了。 看到这里&#xff0c;我承认我也酸了。16个月是什么概念&…

案例-旋转的太极图案(HTML+CSS)

使用css的动画变换效果完成“ 旋转太极“。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;background-color: antiquewhite;}.tj{width: 0;height: 300px;/* border…

CEC2017(Python):五种算法(PSO、RFO、SSA、DE、HHO)求解CEC2017

一、5种算法简介 1、粒子群优化算法PSO 2、红狐优化算法RFO 3、麻雀搜索算法SSA 4、差分进化算法DE 5、哈里斯鹰优化算法HHO 二、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem de…

计算机网络【EPoll原理】

预备知识&#xff1a;内核poll钩子原理 内核函数poll_wait 把当前进程加入到驱动里自定义的等待队列上 &#xff1b; 当驱动事件就绪后&#xff0c;就可以在驱动里自定义的等待队列上唤醒调用poll的进程&#xff1b; 故poll_wait作用&#xff1a;可以让驱动知道事件就绪的时…

蛇目标检测数据集VOC格式100张

蛇是一种广泛分布于地球各个角落的爬行动物&#xff0c;是无脚类爬行动物中最为特殊的一类。它们身体长而细长&#xff0c;通常由许多鳞片组成&#xff0c;没有四肢。蛇生活的环境非常多样&#xff0c;可以在沙漠、森林、草原和水域等各种地方找到它们的踪迹。 蛇是以捕食其他…

VS2013中特殊操作

代码段管理器(查看代码补全快捷方式) 1.点击 工具 ->点击 代码片段管理器->看到 语言->选择 Visual C 2.可以点击下方添加 自定义一个属于自己的快捷代码补全方式 3.结果图&#xff1a; 设置自动换行与行号 1.点击 工具->点击 选项->找到 文本编辑器(然后点击)…

百度地图添加坐标点

​​​​​​html <!DOCTYPE html><html xmlns"http://www.w3.org/1999/xhtml"> <head runat"server"><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>查看签到信息-地图…

[蓝桥杯2022省赛] X 图形

X 图形 问题描述 给定一个字母矩阵。一个 X 图形由中心点和由中心点向四个 4545 度斜线方向引出的直线段组成&#xff0c;四条线段的长度相同&#xff0c;而且四条线段上的字母和中心点的字母相同。 一个 X 图形可以使用三个整数r,c,L 来描述&#xff0c;其中 r,c 表示中心点…

stm32中的i2c协议

stm32中I2C 文章目录 stm32中I2CI2C 协议简介I2C物理层协议层I2C基本读写过程 **通讯的起始和停止信号****数据有效性****地址及数据方向****响应** STM32的I2C特性及架构**STM32** **的** I2C外设简介STM32 的 I 2C 架构剖析通讯引脚 通讯过程主发送器主接收器 I2C初始化结构体…

工程(十六)——自己数据集跑Fast_livo

一、基础环境 Ubuntu20.04 ROS noetic PCL 1.8 Eigen 3.3.4 Sophus git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout a621ff mkdir build && cd build && cmake .. make sudo make install 下面两个直接把包下载下来一起编译…

swing快速入门(三十二)消息对话框

注释很详细&#xff0c;直接上代码 新增内容 1.自定义对话框前列图标 2.消息对话框的若干种形式 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent;public class swing_test_30 {// 定义一个JFrameJFrame jFrame new JFram…

React 、Vue进度 条首屏加载制作

React 大家都听说过&#xff0c;是一个非常出名的前端 框架 &#xff0c;目前在公司 用的比较多的两个前端框架 &#xff0c;一个是 React , 一个 是 Vue 2 、3 &#xff0c;公司 的首页 &#xff0c;后台 前端部分 都是 以这两个为主 &#xff0c;做了 不下 数十个 项目 但是 …

大数据背后的绿色收割:基于Hadoop的农产品价格信息智能分析

大数据背后的绿色收割&#xff1a;基于Hadoop的农产品价格信息智能分析 引言正文1. 数据获取与准备2. 数据清洗与处理3. Hadoop数据分析引擎的运用4. MySQL数据库的集成5. 创新性的可视化6. 结论与展望 结语 引言 随着信息技术的不断发展&#xff0c;农业领域也在数字化的浪潮…
最新文章