最近在项目开发过程中,使用了国产数据库人大金仓(即Kingbase数据库),在使用过过程中需要对数据库进行备份与还原,在此对相关的命令进行简单介绍,以备不时之需。
Linux环境下安装人大金仓可参考此篇文章:Linux环境下安装人大金仓数据库
人大金仓中的备份命令为 sys_dump,数据还原的方式有两种,分别是ksql、sys_restore命令,下面对这几个命令分别进行介绍。
sys_dump 是用于备份 KingbaseES 数据库的工具。根据官网介绍,即使数据库目前正在并发使用,它也能创建一致的备份。sys_dump 不阻塞其他用户访问数据库(读取或写入)。
使用sys_dump时,需要进入到数据库安装路径下的Server/bin 目录下执行。人大金仓的默认安装路径为 /opt/Kingbase/ES/V8,如下所示:
执行sys_dump命令时需要进入到Server/bin目录下执行。
sys_dump 命令可以将数据备份为SQL脚本文件和dump归档文件。
./sys_dump -h 127.0.0.1 -p 54321 -d db_demo -U system -f /opt/backup/db_demo.sql
./sys_dump -h 127.0.0.1 -p 54321 -d db_demo -U system -Fc -f /opt/backup/db_demo.dump
备份dump文件时 最好加上 -Fc 参数,否则在使用sys_restore命令进行还原时会出现如下提示:
# 输入文件显示为文本格式转储。请使用ksql
sys_restore: error: input file appears to be a text format dump. Please use ksql.
其它都一样,只是后缀名不同。
执行上诉命令后,需要输入相关用户对应的密码,如上需要输入system对应的密码。
以上命令是没有任何信息输出的,如果想查看输出的信息,可以使用标准输出将内容写入文件(前提是有输出),如下所示:
./sys_dump -h 127.0.0.1 -p 54321 -d db_demo -U system -f /opt/backup/db_demo.dump >> /opt/backup/backup.log
查看 log文件内容即可。
命令各参数介绍
说明:其他命令的配置项基本相同,后续不再赘述!
上诉命令执行完成后,会在指定目录生成db.demo.sql文件,此时说明已经备份完成。
人大金仓中,sys_restore 命令和 ksql 命令都可以进行数据还原。只是有一些区别,下边详细说。
sys_restore 可以从由 sys_dump命令创建的dump归档文件还原数据库数据。该命令需要在安装路径下的Server/bin 目录下执行。
./sys_dump -h 127.0.0.1 -p 54321 -d db_demo -U system -Fc -f /opt/backup/db_demo.dump >> /opt/backup/backup.log
还原时会打出信息到标准输出上,可以使用文件进行接收。
./sys_restore -h 127.0.0.1 -p 54321 -d db_demo -U system /opt/backup/db_demo.dump >> /opt/backuo/restore.log 2>&1
执行命令、输入密码后即可成功还原数据。
那么sys_restore 能否还原SQL文件呢,试一下便知!
./sys_restore -h 127.0.0.1 -p 54321 -d db_demo -U system /opt/backup/db_demo.sql >> /opt/backuo/restore.log 2>&1
经过测试,sys_restore 命令也可以还原sql脚本文件。
Ksql 是 KingbaseES 数据库的主要命令行界面。可以使用 Ksql 设置数据库初始化参数、创建和管理用户、创建和更改数据库对象 (例如表和索引)、插入和更新数据、运行 SQL 查询等等。当然也可以使用 Ksql 连接到 KingbaseES 数据库实例。
./ksql -h "127.0.0.1" -p 54321 -d db_demo -U ledger -f /opt/backup/db_demo.sql >> /opt/backup/ksql_restore.log 2>&1
./ksql -h "127.0.0.1" -p 54321 -d db_demo -U ledger -f /opt/backup/db_demo.dump >> /opt/backup/ksql_restore.log 2>&1
在使用ksql进行还原时请注意,如果你还原的文件是 通过sys_dump 命令 并且加了 -F(format --format=format) 参数的,那么就不能通过ksql进行还原,而是要通过sys_restore命令进行还原,否则会报如下信息:
# 输入是Kingbase自定义格式转储。
The input is a Kingbase custom-format dump.
# 使用sys_restore命令行客户端将此转储还原到数据库。
Use the sys_restore command-currLine client to restore this dump to a database.
通过 sys_dump 命令备份时不加 -F(format --format=format) 参数,不管是sql脚本文件还是dump归档文件都是可以通过ksql进行还原恢复,注意此去别。
简单记录,以备不时之需!
如有帮助,还请多多点赞、收藏。