Linux下国产金仓KingbaseESV8数据库的自动备份

艺帆风顺 发布于 2025-04-03 23 次阅读


一、备份方式

KingbaseESV8数据库备份的两种方式:

(1)使用数据库开发工具KStudio备份

(2)命令行方式备份

变量 BACKUP_FILE 就是备份后的文件

  1. #这里数据库用户名是stmis 要备份的数据库是geomis

  2. /home/kingbase/KingbaseES/V8/KESRealPro/V008R006C006B0013/ClientTools/bin/sys_dump -h localhost -p 54321 -U stmis -v -f "${BACKUP_FILE}" -F c geomis

二、自动备份

(1)编写脚本文件 geomis-backup.sh

    #!/bin/bash
    # 数据库用户stmis的密码 输入到环境变量中export PGPASSWORD="stmis123" # 日期变量,用户给备份的数据库文件上打上日期戳DATE=$(date +"%Y%m%d_%H%M%S") # 定义变量:备份文件名称BACKUP_FILE="/home/geomis/BACKUP/BACKUP_DB/geomis_${DATE}.dmp"#备份/home/kingbase/KingbaseES/V8/KESRealPro/V008R006C006B0013/ClientTools/bin/sys_dump -h localhost -p 54321 -U stmis -v -f "${BACKUP_FILE}" -F c geomis

    (2)赋予该脚本文件执行权限

    sudo chmod +x geomis-backup.sh

    (3)将备份文件添加到用户的定时任务中,这里我添加到了root用户的定时任务

    1. crontab -e

    2. #添加下面的内容 表示每天的1点钟备份一次

    3. 0 1 * * * sudo /bin/bash /home/geomis/geomis-backup.sh

    ===============================分割线====================================

    记录之前一个自动任务失败的脚本:

    (1)第一个脚本 backup-db.sh:

            这是一段使用Expect编写的脚本,用于自动备份名为“geomis”的KingbaseES数据库。脚本中的spawn命令启动了一个名为sys_dump的可执行文件,该文件用于备份数据库。接下来的参数指定了要备份的数据库的主机名,端口号,用户名和备份文件的路径和名称等信息。expect命令用于等待程序的输出,并匹配到输出中的“Password:”后,自动输入密码“stmis123”并回车,以便让备份程序顺利运行。 最后,interact命令启用交互模式,以便在备份程序完成后,用户可以手动操作系统控制台,而不会立即退出脚本。

      • #!/usr/bin/expect

        #backup geomis databasespawn "/home/kingbase/KingbaseES/V8/KESRealPro/V008R006C006B0013/ClientTools/bin/sys_dump" -h localhost -p 54321 -U stmis -v -f "/home/geomis/BACKUP/BACKUP_DB/geomis.dmp" -F c geomis
        expect "Password:"
        send "stmis123r"
        interact

      2)第二个脚本 backup-geomis.sh

              这是一个Bash脚本,用于备份KingbaseES数据库中名为“geomis”的数据。该脚本包含以下步骤:获取当前的日期和时间,并将其保存在变量$datetime中,以便在备份文件名称中使用。调用名为backup-db.sh的脚本,该脚本用于实际备份数据库。在备份数据库完成后,等待20秒钟,以确保备份文件已完全生成并关闭。进入备份文件夹“/home/geomis/BACKUP/BACKUP_DB”,将备份文件geomis.dmp重命名为geomis-日期时间.dmp的格式,以便将其与其他备份文件区分开来。需要注意的是,此脚本中涉及到的路径和文件名等信息,应根据实际情况进行修改。

        #!/bin/bashPATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

        #get time
        datetime=$(date +%Y%m%d_%H%M%S)#backup geomis database/home/geomis/backup-db.sh

        sleep 20s#rename filenamecd /home/geomis/BACKUP/BACKUP_DBmv geomis.dmp geomis-${datetime}.dmp
        注意:这里我手动执行 ./backup-geomis.sh 后,可以备份成功,但是将该脚本文件加入到自动任务中,自动备份出来的数据库文件大小为0k,暂未找到原因。


          版权声明:本文内容来自CSDN:小小印z,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://blog.csdn.net/weixin_49561506/article/details/129689752如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。