人大金仓数据库异地定时备份说明(单机)

人大金仓数据库异地定时备份(单机+外部备份)

单机数据库节点和 REPO 备份服务器节点。备份服务器是一个单独的物理设备,相对独立,具有较高 的冗余度,备份不会随着数据库节点故障而失效。

1 环境准备
1.1 数据库备份环境准备

REPO 节点的搭建可以采用安装 KingbaseES 软件或拷贝文件目录的方式。

安装方式:请在对应的 REPO 服务器上,安装 KingbaseES 数据库;

拷贝方式:请拷贝 DB 数据库节点目录下的所有文件和文件夹,包含 bin、lib、share、etc 等子文件夹,拷贝到 REPO 服务器上。

1.2 数据库备份还原免密设置

该操作旨在为数据库备份还原时免除用户手动输入密码

在 KingbaseES 中使用密码配置工具 sys_encpwd 来设置口令密文。将用户的密码以密文形式存在.encpwd 文件中。

使用方法示例:
进入安装数据库的bin目录下使用sys_encpwd工具
在这里插入图片描述
sys_encpwd参数说明:

-H, --hostname=
主机地址,允许单主机地址匹配和全匹配,全匹配时使用 * 指定
-P, --portnum=
端口号,仅允许单端口匹配
-D, --database=
数据库名,允许单数据库匹配和全匹配,全匹配时使用 * 指定
-U, --user=
用户名,仅允许单用户匹配
-W, --password=
用户对应的密码,仅允许单用户匹配

注意: 当前四个参数输入与原文件中的某一条记录完全相同时,会修改该条记录相应的密码,否则生成一条新的记 录。

2 数据库备份
2.1上传备份脚本并修改

上传 【人大金仓数据库备份还原】 文件夹下的【ksql_backup】文件夹

修改备份脚本中相应参数

#!/bin/bash
# 设置变量
# 数据库安装目录
kdb_home="/home/kingbase/KESRealPro/V008R006C008B0014/Server"
# 当前路径(备份保存路径)
kdbback_dest="/home/db_data_back" 
# 用户名
kdb_user="postgres" 
# 目标端口号
kdb_port="5432"
# 目标ip
kdb_host="192.168.1.212" 
# 目标数据库
database="ods" 
# 目标模式(多个模式使用空格符分开)
schemas=("auth" "config" "monitor")
# 指定保留备份文件的天数
keep_time="7" 


# 备份模式
for schema in "${schemas[@]}"; do
    # 创建模式目录
    schema_dir="${kdbback_dest}/${database}/${schema}"
    mkdir -p "${schema_dir}"
    
    # 备份模式
    dump_file="${schema_dir}/${database}_${schema}_$(date '+%Y%m%d%H%M')"
    "${kdb_home}/bin/sys_dump" -p "${kdb_port}" -U "${kdb_user}" -w -h "${kdb_host}" -f "${dump_file}" -n "${schema}" "${database}"
    
    # 检查备份是否成功
    if [ $? -ne 0 ]; then
        echo "模式${schema}备份失败: $(date '+%Y%m%d%H%M')" >> "${schema_dir}/sh_log.txt"
        continue
    fi
	
	echo "模式${schema}备份成功: $(date '+%Y%m%d%H%M')" >> "${schema_dir}/sh_log.txt"
    
	# 提取dump文件的基本名称
    dump_file_basename="$(basename "${dump_file}")"
    
    # 创建并压缩备份文件
    tar_file="${schema_dir}/${database}_${schema}_$(date '+%Y%m%d%H%M').tar.gz"
    tar -zcvf "${tar_file}" -C "${schema_dir}/" "${dump_file_basename}"

    # 检查压缩是否成功
    if [ $? -ne 0 ]; then
        echo "模式 ${schema}备份文件压缩失败: $(date '+%Y%m%d%H%M')" >> "${schema_dir}/sh_log.txt"
        continue
    fi

    echo "模式 ${schema}备份文件压缩成功: $(date '+%Y%m%d%H%M')" >> "${schema_dir}/sh_log.txt"
   
    # 删除未压缩的备份文件
    rm "${dump_file}"
    echo "执行$schema结束:$(date '+%Y%m%d%H%M')" >> ${schema_dir}/sh_log.txt
done

# 删除过期的备份文件
find "${kdbback_dest}/${database}" -type f -name "*.dump" -mtime "+${keep_time}" -exec rm -f {} \;
find "${kdbback_dest}/${database}" -type f -name "*.tar.gz" -mtime "+${keep_time}" -exec rm -f {} \;

2.2授权备份脚本可执行权限
chmod +x ./ksql_backup/*.sh
2.3设置定时备份任务

使用linux中的Crontab 工具定时执行数据库备份脚本。
在这里插入图片描述

使用 crontab -e 创建定时任务
在这里插入图片描述

crontab -l 查看设置的定时任务
在这里插入图片描述

每天凌晨两点执行数据库备份
00 02 * * * /home/ksql_backup/dbback.sh
3 备份文件还原
3.1 拷贝备份文件到/home/ksql_restore并解压
tar -zvxf xxxxxxx05161700.tar.gz
3.2 上传备份还原脚本并修改

上传 【人大金仓数据库备份还原】 文件夹下的【ksql_restore】文件夹至 /home/并修改备份脚本中参数

#!/bin/bash
# 设置变量
# 数据库安装目录
kdb_home="/home/kingbase/KESRealPro/V008R006C008B0014/Server"
# 数据库用户名
kdb_user="postgres"
# 数据库端口号
kdb_port="5432"
# 数据库主机IP
kdb_host="192.168.1.213" 
# 还原的数据库名称
database="ods" 
# 指定要还原的备份文件存放路径
backup_path="/home/db_data_back/restore/" 
# 指定要还原的备份文件名
backup_files=("ods_alm_202405291433")

# 执行还原操作
#"${kdb_home}/bin/ksql" -U "${kdb_user}" -w -h "${kdb_host}" -p "${kdb_port}" -d "${database}" -f "${backup_path}""${backup_file}"

for backup_file in "${backup_files[@]}"; do
  echo "开始还原文件: ${backup_path}${backup_file}"

  # 执行还原操作,注意这里的引号使用
  "${kdb_home}/bin/ksql" -U "${kdb_user}" -w -h "${kdb_host}" -p "${kdb_port}" -d "${database}" -f "${backup_path}${backup_file}">> restore_log_$(date '+%Y%m%d').txt 2>&1

  if [ $? -ne 0 ]; then

    echo "还原文件 ${backup_path}${backup_file} 失败"

  else

    echo "还原文件 ${backup_path}${backup_file} 成功"

  fi
done
3.3 授权备份脚本可执行权限
chmod +x /home/ksql_restore/*.sh
3.4 执行备份脚本等待还原
./db_restore.sh
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值