• KingbaseES V8R6备份恢复案例之---同一数据库创建不同stanza备份


    案例说明:
    在生产环境,有的应用需要调用数据库的sys_rman做备份,为了区分数据库自身的sys_rman备份和应用的备份,可以使用不同的stanza name创建备份。本案例介绍了,如何在KingbaseES V8R6数据库下,同一个实例创建不同的stanza备份。

    适用版本: kingbaseES V8R6

    一、已有stanza sys_rman配置(stanza_name=kingbase)

    二、创建第二个stanza sys_rman备份

    1、sys_backup.conf配置

    1. [kingbase@node102 bin]$ cat sys_backup.conf |grep -v ^#|grep -v ^$
    2. _target_db_style="single"
    3. _one_db_ip="127.0.0.1"
    4. _repo_ip="127.0.0.1"
    5. _stanza_name="king"
    6. _os_user_name="kingbase"
    7. _repo_path="/home/kingbase/kbbr7_repo"
    8. _repo_retention_full_count=5
    9. _crond_full_days=7
    10. _crond_diff_days=0
    11. _crond_incr_days=1
    12. _crond_full_hour=2
    13. _crond_diff_hour=3
    14. _crond_incr_hour=4
    15. _band_width=0
    16. _os_ip_cmd="/sbin/ip"
    17. _os_rm_cmd="/bin/rm"
    18. _os_sed_cmd="/bin/sed"
    19. _os_grep_cmd="/bin/grep"
    20. _single_data_dir="/data/kingbase/v8r6_c6/data"
    21. _single_bin_dir="/opt/Kingbase/ES/V8R6_C6/Server/bin"
    22. _single_db_user="system"
    23. _single_db_port="54322"
    24. _use_scmd=on
    25. _start_fast=y
    26. _compress_type=none
    27. _non_archived_space=1024

    =如下所示,配置文件中不同配置。=

    2、执行初始化

    1. [kingbase@node102 bin]$ ./sys_backup.sh init
    2. # pre-condition: check the non-archived WAL files
    3. # generate single sys_rman.conf...DONE
    4. # update single archive_command with sys_rman.archive-push...DONE
    5. # create stanza and check...(maybe 60+ seconds)
    6. # create stanza and check...DONE
    7. # initial first full backup...(maybe several minutes)
    8. # initial first full backup...DONE
    9. # Initial sys_rman OK.
    10. 'sys_backup.sh start' should be executed when need back-rest feature.

    3、查看sys_rman.conf配置

    4、查看初始化后两个不同stanza下的全量备份

    三、执行备份测试

    后创建的stanza可以正常备份,但执行第一个stanza备份hang住,无法完成归档:

    1. [kingbase@node102 V8R6_C6]$ /home/kingbase/cluster/R6HA/kha/kingbase/bin/sys_rman
    2. --config=/home/kingbase/kbbr6_repo/sys_rman.conf
    3. --stanza=kingbase --archive-copy --type=full backup

    =原因是:创建第二个stanza后,执行init时,修改了kingbase.conf下的archive_command参数,导致在执行第一个stanza备份时,无法完成归档。=

    四、自定义脚本完成备份

    =此脚本的目标是,在不同的stanza备份前更新archive_command参数,由于全量备份和增量备份要通过cron计划任务中执行,所以需建立不同的备份脚本。=

    1、stanza为kingbase的全量备份脚本

    1. [kingbase@node102 ~]$ cat kingbase_full_bk.sh
    2. #!/bin/bash
    3. # stanza name "kingbase" backup !
    4. DATA_DIR=/data/kingbase/v8r6_c6/data
    5. BIN_DIR=/opt/Kingbase/ES/V8R6_C6/Server/bin
    6. ###### Update archive_command for stanza##################
    7. /bin/sed -i 's/kbbr7_repo/kbbr6_repo/g' ${DATA_DIR}/kingbase.conf
    8. /bin/sed -i 's/--stanza=king archive-push/--stanza=kingbase archive-push/g' ${DATA_DIR}/kingbase.conf
    9. ${BIN_DIR}/sys_ctl reload -D ${DATA_DIR}
    10. ###### full backup###########
    11. ${BIN_DIR}/sys_rman --config=/home/kingbase/kbbr6_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup >>/opt/Kingbase/ES/V8R6_C6/Server/log/sys_rman_backup_full.log 2>&1
    12. ${BIN_DIR}/sys_rman --config=/home/kingbase/kbbr6_repo/sys_rman.conf info

    增量备份脚本:

    2、stanza为king的全量备份脚本

    1. [kingbase@node102 ~]$ cat king_full_bk.sh
    2. #!/bin/bash
    3. # stanza name "king" backup !
    4. DATA_DIR=/data/kingbase/v8r6_c6/data
    5. BIN_DIR=/opt/Kingbase/ES/V8R6_C6/Server/bin
    6. ###### Update archive_command for stanza##################
    7. /bin/sed -i 's/kbbr6_repo/kbbr7_repo/g' ${DATA_DIR}/kingbase.conf
    8. /bin/sed -i 's/--stanza=kingbase archive-push/--stanza=king archive-push/g' ${DATA_DIR}/kingbase.conf
    9. ${BIN_DIR}/sys_ctl reload -D ${DATA_DIR}
    10. ###### full backup###########
    11. ${BIN_DIR}/sys_rman --config=/home/kingbase/kbbr7_repo/sys_rman.conf --stanza=king --archive-copy --type=full backup >>/opt/Kingbase/ES/V8R6_C6/Server/log/sys_rman_backup_full.log 2>&1
    12. ${BIN_DIR}/sys_rman --config=/home/kingbase/kbbr7_repo/sys_rman.conf --stanza=king info

    将脚本放入cron计划任务执行:

    1. [root@node102 ~]# cat /etc/cron.d/KINGBASECRON
    2. .......
    3. 0 2 */7 * * kingbase sh /home/kingbase/kingbase_full_bk.sh >> /opt/Kingbase/ES/V8R6_C6/Server/log/sys_rman_backup_full.log 2>&1
    4. 0 6 */7 * * kingbase sh /home/kingbase/king_full_bk.sh >> /opt/Kingbase/ES/V8R6_C6/Server/log/sys_rman_backup_full.log 2>&1

    五、总结
    对于Kingbase V8R6可以创建不同的stanza进行sys_rman的备份,但在生产环境尽量不要使用,增加了备份的复杂性及数据库的负载。

  • 相关阅读:
    torch 和paddle 的GPU版本可以放在同一个conda环境下吗
    MongoDB故障转移案例详细操作
    用树莓派USB摄像头做个监控
    蓝海彤翔亮相2023新疆网络文化节重点项目“新疆动漫节”
    UDS - 深论Security Access Service
    LeetCode_单调栈_简单_496.下一个更大元素 I
    Tomcat 8.0下载与配置
    基于C#使用winform技术的游戏平台的实现【C#课程设计】
    【校招VIP】java开源框架之nginx
    GAMS104 现代游戏引擎 2
  • 原文地址:https://blog.csdn.net/lyu1026/article/details/126074048