单机+内部备份_全备案例
此场景为单机数据库节点内部备份,方便部署和操作,但备份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 directoryIs the server running locally and acceptingconnections 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.zipcreating: 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
性能优化-压缩优化
压缩将节约空间、消耗时间;不压缩将节约时间、消耗空间;请根据场景需要,设置是否压缩存储备份集和归档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等报错的参数改大后再启动数据库;此外,修改配置后即时备份可预防此类报错
相关文章:

单机+内部备份_全备案例
此场景为单机数据库节点内部备份,方便部署和操作,但备份REPO与数据库实例处于同一个物理主机,冗余度较低。 前期准备 配置ksql免密登录(必须) 在Kingbase数据库运行维护中,经常用到ksql工具登录数据库,本地免密登录…...

【kettle】pdi/data-integration 打开ktr文件报错“Unable to load step info from XML“
一、报错内容: Unable to load step info from XML step nodeorg.pentaho.di.core.exception.KettleXMLException: Unable to load step info from XMLat org.pentaho.commons.launcher.Launcher.main (Launcher.java:92)at java.lang.reflect.Method.invoke (Met…...
cocos creator人开发小游戏免费素材资源
1、首先熟悉官方的手册和api文档,文档还是比较详细,游戏的方方面面都涉及到了 官方手册: http://docs.cocos.com/creator/manual/zh/官方api文档: http://docs.cocos.com/creator/api/zh/官方论坛: https://forum.coco…...
除了sd webui,compfy还有一个sd UI
GitHub - VoltaML/voltaML-fast-stable-diffusion: Beautiful and Easy to use Stable Diffusion WebUI...
c++属于同一个类的不同对象之间可相互访问private和protected成员
先看一个代码例子: #include <stdio.h>class A { private:char* name;void printA_Name() const {printf(name);} public:A(char* name) {this->name name;}void printA_Name(const A& a) {printf(a.name);}void printA_Name2(const A& a) {a.pr…...

QT/C++ 远程数据采集上位机+服务器
一、项目介绍: 远程数据采集与传输 课题要求:编写个基于TCP的网络数据获取与传输的应用程序; 该程序具备以下功能: 1)本地端程序够通过串口与下位机(单片机)进行通信,实现数据采集任务 2)本地端程序能将所获取下位机数据进行保存(如csv文本格式等); 3…...
算法每日一题:保龄球游戏的获胜者
大家好,我是星恒 今天的每一一题是一道简单题目,但是没能秒掉,原因就是题意理解不到位,边界问题没有判断清楚 不过这本来就是一个试错,迭代,积累经验的过程,加油加油,相信做多了&…...
Do you know about domestic CPUs
Do you know about domestic CPUs CPU指令集国产CPU CPU指令集 国产CPU 参考文献 国产CPU之4种架构和6大品牌指令集及架构一文深入了解 CPU 的型号、代际架构与微架构国产GPU芯片厂商有哪些深入GPU硬件架构及运行机制详解服务器GPU架构和基础知识...

软件设计模式 --- 类,对象和工厂模式的引入
Q1:什么是软件设计模式? A:软件设计模式,又称设计模式。它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。综上&…...

LeetCode74二分搜索优化:二维矩阵中的高效查找策略
题目描述 力扣地址 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则&…...

三极管组成的光控开关电路原理图
什么是光控开关 光控开关/光控时控器采用先进的嵌入式微型计算机控制技术,融光控功能和普通时控器两大功能为一体的多功能高级时控器(时控开关),根据节能需要可以将光控探头(功能)与时控功能同时启用&…...
【PostgreSQL】从零开始:(四十二)系统列
PostgreSQL 中的系统列 PostgreSQL 中的系统列是一组特殊的列,用于存储关于表和视图的元数据信息。这些列是由 PostgreSQL 数据库自动创建和维护的,并且不能直接修改或删除。 每个表都有多个系统列,这些列由系统隐式定义。因此,…...

快速、准确地检测和分类病毒序列分析工具 ViralCC的介绍和详细使用方法, 附带应用脚本
介绍 viralcc是一个基因组病毒分析工具,可以用于快速、准确地检测和分类病毒序列。 github:dyxstat/ViralCC: ViralCC: leveraging metagenomic proximity-ligation to retrieve complete viral genomes (github.com) Instruction of reproducing resul…...

DNs服务学习笔记
DNS:域名系统(英文:Domain Name System)是一个域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。类似于生活中的11…...
获取线程池中任务执行数量
获取线程池中任务执行数量 通过线程池进行任务处理,有时我们需要知道线程池中任务的执行状态。通过ThreadPoolExecutor的相关API实时获取线程数量,排队任务数量,执行完成线程数量等信息。 实例 private static ExecutorService es new Thr…...
RK3566 Android 11平台上适配YT8512C 100M PHY
RK3566代码之前适配的1000M IC RTL8211F , 现在需要在之前的基础上修改PHY IC 为裕泰的YT8512C ----------------------------------------------------------------------//将1000M 的配置关掉,改为100M 配置,查看RK3566 资料关于以太网的配置即可知道如何修改 #if…...

docker 部署haproxy cpu占用特别高
在部署mysql 主主高可用时,使用haproxy进行负载,在服务部使用的情况下发现服务器cpu占比高,负载也高,因此急需解决这个问题。 1.解决前现状 1.1 部署配置文件 cat > haproxy.cfg << EOF globalmaxconn 4000nbthrea…...

Oracle导出CSV文件
利用spool spool基本格式: spool 路径文件名 select col1||,||col2||,||col3||,||col4 from tablename; spool off spool常用的设置: set colsep ; //域输出分隔符 set echo off; //显示start启动的脚本中的每个sql命令,缺…...
图像分割实战-系列教程12:deeplab系列算法概述
🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 1、deeplab概述 图像分割中的传统做法:为了增大感受野,通常都会选择pooling…...

数据库02-07 存储
计算机存储系统: 02.磁道存储...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...