linux备份金仓

1.修改金仓配置文件:/opt/Kingbase/ES/V8/data  找到:sys_hba.conf文件 将底下的 scram-sha-256 改为trust

# "local" 只能用于UNIX域套接字
local   all             all                                     trust
# IPv4 本地连接:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               scram-sha-256
# IPv6 本地连接:
host    all             all             ::1/128                 trust
host    all             all             ::0/0                   scram-sha-256
# 允许具有流复制权限的用户使用localhost进行流复制连接
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

2.金仓备份脚本

#!/bin/bash
####################################################################################################################
###
###Descipt: this script is used for kingbase database backup,before you run it,you should set the variables such as
###         kdb_home,kdbback_dest,kdb_user,kdb_pass,kdb_host,kdb_port,kdb_list,keep_time and so on.
###
####################################################################################################################
####################### variable define ##########################

#load the backup confuration
#TODO:this cmd have error
#source backup8.conf 
#source /root/kb_scripts/kb_scripts/kb_backup/logical/backup8.conf

echo "kingbase database logical backup begin : $(date '+%Y-%m-%d %H:%M:%S')"

#conf_file=$(dirname $(readlink -f "$0"))"/backup8.conf"
#echo "conf file is: $conf_file"
#source $conf_file
kdb_home="/opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server" #这个一定要指定到Server目录
kdbback_dest="/opt/Kingbase/ES/mhbackup" #存在哪
kdb_user="账号"
kdb_pass="密码"
kdb_port="端口"
kdb_host="ip地址"
kdb_list="数据库名称" #数据库名称
keep_time="30"


# modify the backup8.conf style: use "xxxx" replace xxxx, just benifit to source the conf file
#kdb_home=`cat backup8.conf |grep kdb_home|awk -F'=' '{print $2}'|sed s/[[:space:]]//g`
#kdbback_dest=`cat backup8.conf |grep kdbback_dest|awk -F'=' '{print $2}'|sed s/[[:space:]]//g`
#kdb_user=`cat backup8.conf |grep kdb_user|awk -F'=' '{print $2}'|sed s/[[:space:]]//g`
#kdb_pass=`cat backup8.conf |grep kdb_pass|awk -F'=' '{print $2}'|sed s/[[:space:]]//g`
#kdb_port=`cat backup8.conf |grep kdb_port|awk -F'=' '{print $2}'|sed s/[[:space:]]//g`
#kdb_host=`cat backup8.conf |grep kdb_host|awk -F'=' '{print $2}'|sed s/[[:space:]]//g`
#kdb_list=`cat backup8.conf |grep kdb_list|awk -F'=' '{print $2}'|sed s/[[:space:]]//g`
#keep_time=`cat backup8.conf |grep keep_time|awk -F'=' '{print $2}'|sed s/[[:space:]]//g`

date=$(date '+%Y%m%d%H%M%S')
kdbback_final="${kdbback_dest}/kdbback_final"
LD_LIBRARY_PATH="${kdb_home}/lib"

####################### kingbase backup dest test ##################

[ -d ${kdbback_dest} ] || mkdir -p ${kdbback_dest}
[ -d ${kdbback_final} ] || mkdir -p ${kdbback_final}

####################### kingbase backup start  #######################

cd ${kdbback_dest}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
for db in `echo $kdb_list | sed 's/,/ /g'`; do
    [ -d ${db} ] || mkdir -p ${db}
        cd ${db}
    ##### kingbase server check as follows
        ${kdb_home}/bin/ksql -h ${kdb_host} -p ${kdb_port} -U ${kdb_user}   -c "select now();" template1 > /dev/null 2>&1
        if [ $? -ne 0 ] ;then
        echo "${date} sorry, please run the script in a kingbase server" >> backup_${db}_${date}.log 
        mv backup_${db}_${date}.log ${kdbback_final}
        exit 1
        else
        echo "${date} kingbase server is ok,kingbase backup ${db} is beginning ..." >> backup_${db}_${date}.log
        fi
    ##### end
        ##### kingbase backup files process as follows
    ${kdb_home}/bin/sys_dump -p ${kdb_port} -U ${kdb_user} -h ${kdb_host} -Fc -f ${db}_${date}.dmp ${db} -v >> backup_${db}_${date}.log 2>&1
        if [ $? -eq 0 ] ;then
            tar zcvf ${db}_${date}.tar.gz ${db}_${date}.dmp*
            if [ $? -eq 0 ] ;then
               rm -f ${db}_${date}.dmp*
            else
               mv ${db}_${date}.dmp* ${kdbback_final} 
            fi
            find . -mtime +${keep_time} -name ${db}'_*' | xargs -I {} rm {}
        else
        rm -f ${db}_${date}.dmp*
        fi
        ###### end
        ###### kingbase backup log files process as follows
    tar zcvf backup_log_${db}_${date}.tar.gz backup_${db}_${date}.log
        if [ $? -eq 0 ] ;then
           rm -f backup_${db}_${date}.log
    else
           mv backup_${db}_${date}.log ${kdbback_final}
        fi
        find . -mtime +${keep_time} -name backup_log_${db}'_*' | xargs -I {} rm {}
        ###### end
       cd ${kdbback_dest}
done

echo "kingbase database logical backup end : $(date '+%Y-%m-%d %H:%M:%S')"
echo ""

exit 0

3.给脚本赋予可执行权限

赋予执行权限
chmod +x 脚本名称.sh

4.执行测试

./bdkq.sh

5.添加到定时任务

sudo crontab -e
0 2 * * * bash /opt/Kingbase/ES/bdkq.sh >> /opt/Kingbase/ES/script.log 2>&1 

6.保存后查看定时任务

crontab -l

 

posted @ 2025-12-26 17:18  H_Q  阅读(0)  评论(0)    收藏  举报