1. 配置数据库认证方式
修改金仓数据库的认证方式以支持备份操作:
# 修改数据库认证配置
sudo nano /opt/Kingbase/ES/V8/data/sys_hba.conf
# 修改内容如下:
local all all trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 trust
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
2. 创建备份脚本
以下是一个用于金仓数据库备份的Shell脚本示例:
#!/bin/bash
###############################################################################################################
# 功能:金仓数据库逻辑备份脚本
# 说明:此脚本用于备份金仓数据库,需先配置相关变量如db_home, backup_path, db_user, db_pass等参数
###############################################################################################################
####################### 环境变量定义 ##########################
db_home="/opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server" # 金仓数据库主目录
backup_path="/opt/Kingbase/ES/backup" # 备份文件存放路径
db_user="admin" # 数据库用户名
db_pass="secure_password" # 数据库密码
db_port="5432" # 数据库端口
db_host="127.0.0.1" # 数据库IP地址
db_list="database1,database2" # 需要备份的数据库列表
keep_days="30" # 备份文件保留天数
# 当前时间戳
current_time=$(date +%Y%m%d%H%M%S)
backup_dir="$backup_path/backup_final"
# 创建备份目录
mkdir -p "$backup_path" "$backup_dir"
# 切换到备份目录
cd "$backup_path"
# 备份每个数据库
for db in $(echo "$db_list" | tr ',' ' '); do
# 创建数据库目录
mkdir -p "$db"
cd "$db"
# 检查数据库连接状态
if ! timeout 5s "$db_home/bin/ksql" -h "$db_host" -p "$db_port" -U "$db_user" -c "SELECT now()" template1 > /dev/null 2>&1; then
echo "[$current_time] 数据库 $db 连接失败,备份任务终止..."
exit 1
fi
# 数据库逻辑备份
"$db_home/bin/sys_dump" -p "$db_port" -U "$db_user" -h "$db_host" -Fc -f "$db_$current_time.dmp" "$db" > backup_$db_$current_time.log 2>&1
# 处理备份文件
if [ $? -eq 0 ]; then
# 打包备份文件
tar zcvf "$db_$current_time.tar.gz" "$db_$current_time.dmp"
# 删除原始dump文件
rm -f "$db_$current_time.dmp"
else
# 处理备份失败情况
mv "$db_$current_time.dmp" "$backup_dir" 2>/dev/null
fi
# 日志文件处理
tar zcvf backup_log_$db_$current_time.tar.gz backup_$db_$current_time.log
rm -f backup_$db_$current_time.log
# 清理过期备份文件
find . -mtime +"$keep_days" -name "$db_*" -delete
# 回到备份目录
cd "$backup_path"
done
echo "[$current_time] 数据库备份完成..."
3. 赋予脚本执行权限
chmod +x backup_kingbase.sh
4. 执行备份测试
5. 配置定时任务
# 编辑crontab文件
sudo crontab -e
# 添加以下定时任务
0 2 * * * /bin/bash /opt/Kingbase/ES/backup_kingbase.sh >> /opt/Kingbase/ES/backup_log 2>&1
6. 验证定时任务配置