当前位置:首页 > 技术 > 正文内容

Linux环境下金仓数据库的逻辑备份方案

访客 技术 2026年9月22日 13

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. 执行备份测试

./backup_kingbase.sh

5. 配置定时任务

# 编辑crontab文件
sudo crontab -e

# 添加以下定时任务
0 2 * * * /bin/bash /opt/Kingbase/ES/backup_kingbase.sh >> /opt/Kingbase/ES/backup_log 2>&1

6. 验证定时任务配置

crontab -l

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。