人大金仓数据库KingbaseES 数据逻辑备份

人大金仓数据库KingbaseES 数据逻辑备份

关键字:

逻辑备份、恢复、人大金仓、KingbaseES

一、绪论

作为对外服务的核心之一,对数据库的备份与恢复是我们运行维护服务器的关键。在面临硬盘损坏、地质灾害等不可抗力因素导致的数据损坏时,在没有高可用设计支持的情况下,对数据的备份就是数据可靠性保证的最后底线;而数据的可靠性体现了服务的可靠性,因此定期对数据库进行备份十分重要。

数据库的备份分为物理备份与逻辑备份,物理备份在备份时通常需要进行停机操作,以确保备份的完整性,同时对恢复的版本,环境有一定的要求;而逻辑备份作为一种更为轻量的备份,适用于数据量较小的场景,同时对环境要求大大降低,因此逻辑备份同样受到青睐。具体的备份策略优劣则完全取决于需求,本文将围绕逻辑备份常用的工具展开介绍。

在开始介绍前,首先对本文涉及的一些概念或缩写进行解释,如表1所示。

表1 概念与解释

概念

解释

${db_path}

数据库安装路径

${data_path}

数据库的数据路径

实例50804

运行在端口号50804上的实例

数据库集簇

数据库数据目录下包含的多个数据库

需要注意的是,这里备份的数据库并不是我们平日说的“KingBaseES(KES)数据库”或是“Oxx数据库”,这里的数据库指的是我们使用ksqljdbc等方式中通过参数所指定的数据库。举个例子,我们使用ksql连接上部署在54321的KES数据库,需要使用命令:ksql -U xxxx -p 54321 –d test,这个命令表示我们使用用户名为xxxx登录部署在端口号为54321上的数据库,而test就是我们所访问的数据库。这个数据库可以通过SQL命令:CREATE DATABASE ${database_name};的方式创建。因此一个数据库实例对应且唯一对应一个${data_path},但可以包含多个数据库,即数据库集簇。

二、单一数据库逻辑备份工具——sys_dump

sys_dump是对单一数据库进行逻辑备份的工具,其二进制文件在磁盘中的路径在${db_path}\Server\bin。可以根据备份文件的类型可以将备份文件分为两类:dmp与sql,这两类文件的恢复方式也各不相同,下面将分别介绍如何使用两类文件进行备份与恢复。

2.1 备份为dmp文件并恢复

使用用户system对数据库test被备份为dmp文件使用的命令如下:

./sys_dump -Usystem -dtest -p50804 -Fc > backup.dmp

其中50804为数据库实例所运行的端口号,参数-F表示文件输出格式,c为custom模式,这里输出为dmp格式。箭头后面的内容表示输出文件的路径与文件名,只写文件名则在当前工作路径下输出名为backup.dmp的文件。运行该命令需要所使用的用户口令(密码),具体如下图所示。

使用backup.dmp文件恢复数据库需要使用到工具sys_restore,恢复的对象可以是本机的另一个数据库实例,也可以是另一台机器的数据库实例。这里我们以本机的另一数据库实例为例,使用的命令如下:

./sys_restore -Usystem -dtest -p50805 backup.dmp

其中50805表示运行在端口50805上的数据库实例 。命令的含义是使用实例50805上的system,将backup.dmp的内容恢复至50805中的test数据库中;需要注意的是,这个数据库必须已经使用CREATE DATABASE命令创建。通过使用命令\d查询数据库情况可以看到实例50804上的内容已经被恢复至实例50805上。

2.2 备份为sql文件并恢复

使用用户system对数据库test被备份为sql文件使用的命令如下:

./sys_dump -Usystem -dtest -p50804 -Fp > backup.sql

其中50804为数据库实例所运行的端口号,参数-F表示文件输出格式,p为plain模式,这里输出为sql格式。其余的内容与2.1的内容一致,这里我们直接看运行的效果。

还原backup.sql文件需要使用ksql,这里以还原至实例50805的test1数据库(需提前创建)为例,命令具体如下:

./ksql -U system -d test1 -p 50805 -f backup.sql

执行该命令后会将命令的执行情况输出至shell中,如下图所示(限于篇幅执行情况只截了部分内容):

连接至实例50805,查看数据库表情况,可以看到数据被恢复至了实例50805的test1数据库中,如下图所示。

三、数据库集簇逻辑备份工具——sys_dumpall

数据库集簇的备份方式与使用sys_dump备份sql文件的流程类似,但不同的地方在于:sys_dumpall备份时是对集簇中的每个数据库执行sys_dump,可能需要多次输入口令;同时使用的时候因为恢复角色和表空间信息需要较高的权限,因此需要使用数据库管理员账号。其余命令的详情和sys_dump部分基本一致。这里以备份实例50805上的数据库集簇为例,命令如下:

./sys_dumpall -Usystem -p50805 > backups.sql

命令的执行效果如下:

恢复时同样适用ksql工具,这里以将backups.sql恢复至实例50793为例,命令如下:

./ksql -U system -d test -p 50793 -f backups.sql

恢复时同样会输出命令的执行情况,命令的具体执行效果如下(限于篇幅执行情况只截了部分内容):

四、总结

逻辑备份与恢复的方便、快速、轻量与可移植是目前逻辑备份仍被广泛使用的原因之一,但对于数据量较大的场景下,物理备份的效率会更高。因此实际生产环境下,备份请务必根据生产环境的需要慎重考虑备份方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值