基础信息汇总
- 数据库版本:KingbaseES V8
- 数据库地址:127.0.0.1
- 数据库端口:9988
- 管理员账号:system
- 账号密码:xxxxxxx
- 待备份数据库:
OS_Core、OS_Core_GPS - 工具目录:
/data/kingbase/Server/bin - 备份文件输出目录:
/home/kingbase/ - 备份格式:
-Fc自定义压缩dmp(生产推荐,支持选择性恢复、高压缩)
一、完整备份操作分步详解(逐条命令解释)
步骤1:切换金仓操作系统用户(必做)
bash
su - kingbase
说明
- 人大金仓数据库程序、数据、配套工具全部归属操作系统用户
kingbase;root用户执行备份会出现权限不足、文件读写失败、密码文件不识别等问题。 su - kingbase带横杠代表完整切换用户环境,自动加载kingbase家目录环境变量、家目录路径,区别于su kingbase(仅切换身份,不切换环境)。- 执行后会要求输入操作系统kingbase用户密码,输入无提示,输完回车。
步骤2:创建数据库免密登录文件 .kbpass
bash
echo "127.0.0.1:9988:*:system:xxxxxxx" > ~/.kbpass
字段格式解析(固定格式:主机:端口:数据库:用户名:密码)
127.0.0.1 |
9988 |
* |
system |
xxxxxxx |
|---|---|---|---|---|
| 数据库IP | 数据库端口 | *代表匹配所有数据库 | 数据库登录账号 | 账号密码 |
补充说明
~代表当前kingbase用户家目录,即/home/kingbase/;>为重定向输出,将拼接好的密码字符串覆盖写入.kbpass文件;- 不加此文件:执行sys_dump备份时,命令行会弹窗交互输入数据库密码,无法一键执行;
- 文件名为固定
.kbpass,金仓客户端工具(sys_dump、ksql、sys_restore)会自动识别该文件。
步骤3:设置密码文件权限(强制要求,否则失效)
bash
chmod 600 ~/.kbpass
说明
- Linux安全机制:密码文件不能让其他用户读取,权限大于600时金仓会直接忽略该文件;
600权限含义:仅文件所有者kingbase拥有读写权限,同组用户、其他用户无任何权限;- 权限设置错误常见报错:备份时仍然提示输入密码。
步骤4:进入金仓客户端工具bin目录
bash
cd /data/kingbase/Server/bin
说明
- 该目录存放所有备份、恢复客户端工具:
sys_dump、sys_restore、ksql; - 不进入此目录也可以写绝对路径执行
/data/kingbase/Server/bin/sys_dump,cd切换后命令更简短; - 若提示
No such file or directory,核对金仓实际安装路径。
步骤5:备份第一个库 OS_Core
bash
./sys_dump -h 127.0.0.1 -p 9988 -U system -d OS_Core -Fc -Z9 -E UTF8 -f /home/kingbase/OS_Core_$(date +%Y%m%d).dmp
所有参数逐条拆解
| 参数 | 含义 |
|---|---|
./sys_dump |
当前目录下执行备份工具 |
-h 127.0.0.1 |
指定数据库服务IP |
-p 9988 |
指定数据库端口 |
-U system |
指定登录数据库用户名 |
-d OS_Core |
指定要备份的目标数据库名 |
-Fc |
备份格式:自定义二进制压缩格式,后缀.dmp;支持单表、单schema单独恢复,生产首选 |
-Z9 |
压缩等级9,最高压缩,备份文件体积最小 |
-E UTF8 |
指定备份字符集,避免中文乱码 |
-f 文件路径 |
指定备份文件输出位置和文件名 |
$(date +%Y%m%d) |
动态拼接当天日期,例:OS_Core_20260715.dmp,区分每日备份,防止覆盖旧文件 |
步骤6:备份第二个库 OS_Core_GPS
bash
./sys_dump -h 127.0.0.1 -p 9988 -U system -d OS_Core_GPS -Fc -Z9 -E UTF8 -f /home/kingbase/OS_Core_GPS_$(date +%Y%m%d).dmp
说明
逻辑和上一条完全一致,仅修改-d后的数据库名、输出文件名,单独生成独立备份包,两个库完全隔离,恢复互不影响。
备份执行成功判断标准
命令执行完成无红色报错,终端无提示密码输入,/home/kingbase/目录生成对应.dmp文件,文件大小不为0。
二、对应备份文件恢复完整命令(配套笔记)
前置条件
- 依旧使用
su - kingbase切换用户; - 无需重复创建
.kbpass(仅首次备份创建一次,永久生效); - 恢复前需提前在数据库中创建空数据库(名称和原库一致)。
1. 先登录数据库创建空库(恢复前必执行)
bash
cd /data/kingbase/Server/bin
# 登录数据库客户端
./ksql -h 127.0.0.1 -p 9988 -U system
登录成功后执行建库SQL:
sql
-- 创建OS_Core空库
CREATE DATABASE OS_Core ENCODING UTF8;
-- 创建OS_Core_GPS空库
CREATE DATABASE OS_Core_GPS ENCODING UTF8;
-- 退出ksql客户端
\q
2. 恢复 OS_Core 库 dmp备份包
bash
cd /data/kingbase/Server/bin
./sys_restore -h 127.0.0.1 -p 9988 -U system -d OS_Core /home/kingbase/OS_Core_20260715.dmp
参数说明
sys_restore:dmp压缩包专用恢复工具(不能用ksql恢复Fc格式文件)-d OS_Core:目标恢复到哪个空数据库- 最后一段为你的备份文件完整路径,需要替换成实际生成的文件名
3. 恢复 OS_Core_GPS 库 dmp备份包
bash
cd /data/kingbase/Server/bin
./sys_restore -h 127.0.0.1 -p 9988 -U system -d OS_Core_GPS /home/kingbase/OS_Core_GPS_20260715.dmp
补充:如果是纯SQL备份文件(-Fp格式)恢复命令
若以后导出.sql文本备份,使用ksql恢复:
bash
./ksql -h 127.0.0.1 -p 9988 -U system -d OS_Core -f /home/kingbase/xxx.sql
三、常见故障排查笔记
-
提示输入数据库密码
原因:
.kbpass不存在 / 权限不是600 / IP、端口、账号密码填写错误解决:重新执行创建密码文件+chmod 600命令
-
./sys_dump: No such file or directory
原因:cd目录错误,核对
/data/kingbase/Server/bin真实路径 -
权限不足,无法写入/home/kingbase/
原因:未执行
su - kingbase,使用root用户备份;切换kingbase用户重试 -
恢复时报库不存在
原因:未提前执行CREATE DATABASE创建空库,先登录ksql新建对应数据库再恢复
-
中文乱码
备份、恢复均添加参数
-E UTF8,数据库编码统一UTF8
四、极简一键备份整合(可一次性复制全部执行)
bash
su - kingbase
echo "127.0.0.1:9988:*:system:xxxxxx" > ~/.kbpass
chmod 600 ~/.kbpass
cd /data/kingbase/Server/bin
./sys_dump -h 127.0.0.1 -p 9988 -U system -d OS_Core -Fc -Z9 -E UTF8 -f /home/kingbase/OS_Core_$(date +%Y%m%d).dmp
./sys_dump -h 127.0.0.1 -p 9988 -U system -d OS_Core_GPS -Fc -Z9 -E UTF8 -f /home/kingbase/OS_Core_GPS_$(date +%Y%m%d).dmp