ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份

2022-07-09 11:00:31  阅读:154  来源: 互联网

标签:log V8R6 -- 备份 stanza sys rman backup


案例说明:
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备份需要连接数据库,在生产环境中尽量不要删除默认的数据库,以免带来不必要的应用问题。

标签:log,V8R6,--,备份,stanza,sys,rman,backup
来源: https://www.cnblogs.com/kingbase/p/16460379.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有