KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份
案例说明:
KingbaseES V8R6通过sys_backup.sh执行物理备份,默认sys_backup.sh执行备份初始化时,需要连接test数据库进行身份的认证;在一些生产环境为了安全需求,会删除test库或被误删除,导致sys_rman连接数据库失败 。如果是误删除,比较容易解决,重新创建一个test库即可。如果是安全需求删除,不能重建test库,则需要修改sys_backup.sh脚本,修改认证库,本案例将详细介绍如何修改脚本完成sys_backup.sh的初始化和备份。
适用版本:
KingbaseES V8R6
本案例数据库版本:
prod=# select version();
version
----------------------------------------------------------------------------------------------------------------------
KingbaseES V008R006C005B0041 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
(1 row)
一、问题复现
1、test数据库被删除
[kingbase@node101 bin]$ ./ksql -U system test -p 54325
ksql (V8.0)
Type "help" for help.
test=# \c prod
You are now connected to database "prod" as user "system".
prod=# drop database test;
DROP DATABASE
prod=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+--------+----------+----------+-------------+-------------------
prod | system | UTF8 | ci_x_icu | zh_CN.UTF-8 |
prod1 | system | UTF8 | ci_x_icu | zh_CN.UTF-8 |
security | system | UTF8 | ci_x_icu | zh_CN.UTF-8 |
template0 | system | UTF8 | ci_x_icu | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
template1 | system | UTF8 | ci_x_icu | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
(5 rows)
2、执行sys_backup.sh init
[kingbase@node101 bin]$ ./sys_backup.sh init
# generate single sys_rman.conf...DONE
# update single archive_command with sys_rman.archive-push...DONE
# create stanza and check...(maybe 60+ seconds)
ERROR: create stanza failed, check log file /opt/Kingbase/ES/V8R6_041/Server/log/sys_rman_stanza-create.log
查看日志信息:
=如日志信息所示,由于test库不存在,导致sys_rman连接数据库失败。=
2022-06-30 17:18:44.380 P00 INFO: stanza-create command end: aborted with exception [056]
2022-06-30 17:21:22.930 P00 INFO: stanza-create command begin 2.27: --config=/home/kingbase/kbbr1_repo/sys_rman.conf --exec-id=10771-16130362 --kb1-path=/data/kingbase/v8r6_041/data --kb1-port=54325 --kb1-user=system --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V8R6_041/Server/log --log-subprocess --repo1-path=/home/kingbase/kbbr1_repo --stanza=kingbase
WARN: unable to check kb-1: [DbConnectError] unable to connect to 'dbname='test' port=54325 user='system'': FATAL: database "test" does not exist
ERROR: [056]: unable to find primary cluster - cannot proceed
2022-06-30 17:21:22.944 P00 INFO: stanza-create command end: aborted with exception [056]
二、解决问题
=由于生产要求,不能重建test库。=
1、查看sys_backup.conf
[kingbase@node101 bin]$ cat sys_backup.conf |grep target
# target db style enum: single/cluster
_target_db_style="single"
# 首先确定,本次备份是singl还是cluster备份模式。
2、编辑sys_backup.sh
=由于sys_backup.sh可用于single和cluster的备份模式,所以在修改脚本前必须确定此次备份的模式,然后修改对应funcation下的执行语句,减少对脚本不必要的修改。此次案例备份采用的single模式,所以只需要修改“ function func_single_init()”下的语句即可。=
[kingbase@node101 bin]$ cat sys_backup.sh
196 function func_single_init()
197 {
........
289 /bin/echo "# create stanza and check...(maybe 60+ seconds)"
290 ${_os_rm_cmd} -rf "${_repo_path}/archive"
291 ${_os_rm_cmd} -rf "${_repo_path}/backup"
#需要修改的语句,增加:---kb1-database=template1
292 ${_rman_bin} --config=${_rman_conf_file} --stanza=${_stanza_name} --kb1-database=template1 --log-level-console=info stanza-create >> "${_log_dir}/sys_rman_stanza-create.log" 2>&1
293 if [ "X0" != "X$?" ] ; then
294 /bin/echo "ERROR: create stanza failed, check log file ${_log_dir}/sys_rman_stanza-create.log"
295 exit 2
296 fi
297 if [ "Xcluster_standby_step1" != "X${_cluster_standby_step}" ] ; then
298 ###########################
#需要修改的语句,增加:---kb1-database=template1
299 ${_rman_bin} --config=${_rman_conf_file} --stanza=${_stanza_name} --kb1-database=template1 --log-level-console=info check >> "${_log_dir}/sys_rman_check.log" 2>&1
300 if [ "X0" != "X$?" ] ; then
301 /bin/echo "ERROR: check stanza failed, check log file ${_log_dir}/sys_rman_check.log"
302 exit 3
303 fi
304 ###########################
305 fi
306 /bin/echo "# create stanza and check...DONE"
307
308 if [ "Xcluster_standby_step1" != "X${_cluster_standby_step}" ] ; then
309 ###########################
310 /bin/echo "# initial first full backup...(maybe several minutes)"
#需要修改的语句,增加:---kb1-database=template1
311 ${_rman_bin} --config=${_rman_conf_file} --stanza=${_stanza_name} --kb1-database=template1 --log-level-console=info --archive-copy --type=full backup >> "${_log_dir}/sys_rman_backup.log" 2>&1
313 if [ "X0" != "X$?" ] ; then
314 /bin/echo "ERROR: full backup failed, check log file ${_log_dir}/sys_rman_backup.log"
315 exit 4
316 fi
317 /bin/echo "# initial first full backup...DONE"
318 ###########################
319 fi
320
321 /bin/echo "# Initial sys_rman OK."
322 /bin/echo "'sys_backup.sh start' should be executed when need back-rest feature."
323
324 } # end of function single init
#如上所示,在sys_rman的执行语句中,指定用template1库做连接认证。
3、执行sys_backup.sh init
[kingbase@node101 bin]$ ./sys_backup.sh init
# 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)
# initial first full backup...DONE
# Initial sys_rman OK.
'sys_backup.sh start' should be executed when need back-rest feature.
# 如上所示,执行init成功。
三、完善备份配置
1、编辑sys_rman.conf
[kingbase@node101 bin]$ cat ~/kbbr1_repo/sys_rman.conf
# Genarate by script at 20220701102150, should not change manually
[kingbase]
kb1-path=/data/kingbase/v8r6_041/data
kb1-port=54325
kb1-user=system
kb1-database=template1
[global]
repo1-path=/home/kingbase/kbbr1_repo
repo1-retention-full=5
log-path=/opt/Kingbase/ES/V8R6_041/Server/log
log-level-file=info
log-level-console=info
log-subprocess=y
process-max=4
#### default gz, support: gz none
compress-type=gz
compress-level=3
band-width=0
# 如上所示,增加kb1-database参数。
2、建立备份计划
[kingbase@node101 bin]$ ./sys_backup.sh start
Enable some sys_rman in crontab-daemon
Set full-backup in 7 days
Set incr-backup in 1 days
0 2 */7 * * kingbase /opt/Kingbase/ES/V8R6_041/Server/bin/sys_rman --config=/home/kingbase/kbbr1_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup >> /opt/Kingbase/ES/V8R6_041/Server/log/sys_rman_backup_full.log 2>&1
0 4 */1 * * kingbase /opt/Kingbase/ES/V8R6_041/Server/bin/sys_rman --config=/home/kingbase/kbbr1_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=incr backup >> /opt/Kingbase/ES/V8R6_041/Server/log/sys_rman_backup_incr.log 2>&1
3、验证备份信息
[kingbase@node101 bin]$ /opt/Kingbase/ES/V8R6_041/Server/bin/sys_rman --config=/home/kingbase/kbbr1_repo/sys_rman.conf --stanza=kingbase info
stanza: kingbase
status: ok
cipher: none
db (current)
wal archive min/max (V008R006C005B0041): 000000010000000000000082/000000010000000000000083
full backup: 20220701-102154F
timestamp start/stop: 2022-07-01 10:21:54 / 2022-07-01 10:22:30
wal start/stop: 000000010000000000000083 / 000000010000000000000083
database size: 736MB, database backup size: 736MB
repo1: backup set size: 102MB, backup size: 102MB
四、总结
sys_rman备份需要连接数据库,在生产环境中尽量不要删除默认的数据库,以免带来不必要的应用问题。
KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份的更多相关文章
- KingbaseES V8R6C5单实例sys_backup.sh备份案例
案例说明: KingbaseES V8R6C5版本中使用了securecmdd工具,用于主机节点间的通讯,默认端口8890.备份工具sys_backup.sh默认使用了securecmdd工具,对 ...
- KingbaseES R6 集群修改ssh端口执行sys_backup.sh备份案例
数据库环境:** test=# select version(); version ---------------------------------------------------------- ...
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...
- KingbaseES V8R6备份恢复案例之---手工清理冗余历史备份
案例说明: 对于KingbaseES V8R6的通过sys_rman执行的物理历史备份,可以在执行备份时,备份的保留(retention)策略自动清理.不能通过手工删除备份,可以通过expire参数手 ...
- KingbaseES V8R6备份恢复案例之---同一数据库创建不同stanza备份
案例说明: 在生产环境,有的应用需要调用数据库的sys_rman做备份,为了区分数据库自身的sys_rman备份和应用的备份,可以使用不同的stanza name创建备份.本案例介绍了,如何在King ...
- kingbaseES V8R6集群备份恢复案例之---备库作为repo主机执行物理备份
案例说明: 此案例是在KingbaseES V8R6集群环境下,当主库磁盘空间不足时,执行sys_rman备份,将集群的备库节点作为repo主机,执行备份,并将备份存储在备库的磁盘空间. 集群架构 ...
- KingbaseES V8R6C6备份恢复案例之---单实例sys_baackup.sh备份
案例说明: KingbaseES V8R6C6中sys_backup.sh在通用机单实例环境,默认需要通过securecmdd工具以及kingbase和root用户之间的ssh互信,执行备份初始化(i ...
- KingbaseES V8R3 备份恢复案例之--单实例环境sys_rman脚本备份案例
案例说明: sys_rman是KingbaseES数据库的物理备份工具,支持数据库的全备和增量备份,由于sys_rman工具使用需要配置多个参数,对于一般用户使用不是很方便.为方便用户在Kingbas ...
- KingbaseES V8R6 维护管理案例之---Kstudio在CentOS 7启动故障
案例说明: 在CentOS 7上安装KingbaseES V8R6C006数据库后,启动Kstudio图形界面启动失败,gtk动态库加载失败,安装gtk相关动态库后,问题解决. 适用版本: Kin ...
随机推荐
- kali渗透测试阅读目录
一.渗透测试介绍 渗透测试介绍及渗透环境配置 二.信息收集 kali 信息收集 三.漏洞扫描 kali 漏洞扫描 四.漏洞利用 kali msf漏洞利用
- vue大型电商项目尚品汇(后台终结篇)day06 重磅!!!
自此整个项目前后台,全部搭建完毕. 今天是最后一天,内容很多,而且也比较常用,一个图标类数据可视化,一个后台的权限管理,都是很经典的类型. 一.数据可视化 1.简介 专门的一门学科,有专门研究这个的岗 ...
- 单片机 MCU 固件打包脚本软件
1 前言 开发完 MCU 软件后,通常都会生成 hex 文件或者 bin 文件,用来做固件烧录或者升级,如果用来做产品开发,就涉及到固件版本的问题,初学者通常采用固件文件重命名来区分版本. 如果需 ...
- idea显示 RunDashboard ,多个启动项时列表显示
在.idea(项目所在文件夹中)下的workspace.xml文件中找到 <component name="RunDashboard"> 标签,然后添加如下节点 < ...
- dotnet 控制台 使用 Microsoft.Maui.Graphics 配合 Skia 进行绘图入门
本文将告诉大家如何在 dotnet 的控制台模式下,采用 MAUI 自绘库 Microsoft.Maui.Graphics 进行绘图,设置 Microsoft.Maui.Graphics 底层调用 M ...
- Spring框架系列(14) - SpringMVC实现原理之DispatcherServlet处理请求的过程
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet ...
- for循环 --和复合赋值
阶乘 1.n!=1x2x3x4x...xn 2.写出一个程序,让用户输入n,然后计算输出n! *变量: *显然读用户的输入需要一个int的n,然后计算的结果需要用一个变量保存,可以是int的facto ...
- 关于 Flink 状态与容错机制
Flink 作为新一代基于事件流的.真正意义上的流批一体的大数据处理引擎,正在逐渐得到广大开发者们的青睐.就从我自身的视角看,最近也是在数据团队把一些原本由 Flume.SparkStreaming. ...
- Linux配置Oracle JAVA环境
1.下载java jdk的安装包 #pwd /usr/local/src 2.解压二进制文件并设置软连接 # tar -xvf jdk-8u241-linux-x64.tar.gz # ln -sv ...
- 【Unity基础知识】基础游戏单位GameObject中常用的属性和API
一.GameObject中的成员变量 主要思想:得到该脚本依附的GameObject的相关信息 现有: Lesson4的代码: using System.Collections; using Syst ...