Linux 金仓数据库使用
一、命令备份和恢复
1. 备份参数
使用 金仓安装目录/ClientTools/bin
或 金仓安装目录/Server/bin
目录下的 sys_dump
命令。命令参数详解如下:
sys_dump
-h: localhost
-p : 默认端口 54321
-d : 库名
-U : 默认用户 system
-F: c 表示压缩(将备份出来的数据文件进行压缩)
-v : 显示备份过程信息
-f : “备份文件路径及文件名”
例:
cd 金仓安装目录/ClientTools/bin
或
cd 金仓安装目录/Server/bin
# 备份
./sys_dump -h 127.0.0.1 -p 54321 -d 库名 -Fc -v -f "/xx路径/xxx.dmp"
# 恢复
./sys_restore -h 127.0.0.1 -U system -d 库名 /xx路径/xxx.dmp
2. 定时备份
1)免密登录配置
金仓数据库免密登录配置,配置后会生成 ~/.encpwd文件密文,配置如下:
# 切换kinbase用户
su kingbase
cd 金仓安装目录/Server/bin
# *表通配
sys_encpwd -H * -P 54321 -D * -U system -W 密码
# 设置单一种。
sys_encpwd -H 127.0.0.1 -P 54321 -D 库名 -U 用户名 -W 密码
# 之后用127.0.0.1登录可以免密,但用localhost不能免密。
# 要想使localhost也能免密登录,则需要将其再加上,如下:
sys_encpwd -H localhost -P 54321 -D 库名 -U 用户名 -W 密码
2)定时脚本编写
# 切换kinbase用户
su kingbase
cd /home/kingbase
mkdir -p DBDataBackup/data
touch kingbase_cron_backup.sh
其中 /home/kingbase/DBDataBackup/kingbase_cron_backup.sh,内容如下:
#!/bin/bash
# 配置参数 params conf
# export PGPASSWROD="system" # 数据库密码
BACKUP_DIR="/home/kingbase/DBDataBackup/data" # 备份存储目录
KEEP_DAYS=100 # 备份保留天数
# 创建备份目录(如果不存在)create backup dir
mkdir -p ${BACKUP_DIR}
# 备份文件名 generate file
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="${BACKUP_DIR}/kingbase_cron_${DATE}.dmp"
# 执行备份 run
echo "Start backup DB..."
/opt/Kingbase/ES/V8/ClientTools/bin/sys_dump \
-h 127.0.0.1 \
-p 54321 \
-d onroad \
-U system \
-F c \
-v \
-f "${BACKUP_FILE}"
# 检查备份结果 check
if [ $? -eq 0 ]; then
echo "Finish backup!File: ${BACKUP_FILE}"
else
echo "Fail backup!Please check error info"
exit 1
fi
# 清理旧备份 clean old bak
echo "Clean over ${KEEP_DAYS} day backup data..."
find ${BACKUP_DIR} -name "kingbase_cron_*.dmp" -mtime +${KEEP_DAYS} -exec rm -f {} \;
echo "Clean finish, keep recent ${KEEP_DAYS} day backup data"
至此,先执行脚本测试一下,没问题再继续。
3)定时任务设置
定时任务设置如下:
# 切换root用户
su
# 编辑crontab
## crontab -e # 为当前root用户添加定时任务
crontab -u kingbase -e # 为kingbase用户添加定时任务
# 像vim命令一样在里面添加如下内容。(此命令表示每天凌晨2点执行备份脚本。)
0 2 * * * /bin/bash /home/kingbase/DBDataBackup/kingbase_cron_backup.sh
# 验证定时任务
## crontab -l # 查看当前root用户下有哪些定时任务
crontab -u kingbase -l # 查看kingbase用户下有哪些定时任务
# 重启crond服务
systemctl restart crond # 或者 service crond restart
注:
crontab命令的时间参数由5个字段组成,格式为:分钟 小时 日 月 星期 shell(脚本)命令
如26 23 * * * /bin/bash /home/backup/kingbasesql-backup.sh
,则表示每天晚上 23:26 执行定时任务sh脚本。
crontab其他命令:
# 删除定时任务
# ****** 可以通过下面方式,或者也可以通过 crontab -e 进入编辑器删除 ****** #
## crontab -r # 删除当前root用户下所有定时任务
crontab -u kingbase -r # 删除kingbase用户下所有定时任务