> 文档中心 > 人大金仓数据库的备份与还原 KingbaseES V8R6

人大金仓数据库的备份与还原 KingbaseES V8R6


人大金仓数据库备份与还原

文章目录

  • 人大金仓数据库的备份与还原
    • 前言
    • 备份
      • sys_dump 命令
    • 还原
      • ksql 命令
      • sys_restore
    • 一. 从人大金仓数据库备份还原到人大金仓数据库
    • 二 从postgresql数据库备份还原到人大金仓数据库
  • 后记

前言

本文记录一次使用人大金仓数据库(KingbaseES)(postgres版)的备份与还原。

postgresql 版本:11.5
人大金仓数据库版本:KingbaseES V8R6

备份

sys_dump 命令

./sys_dump -h 10.10.3.104 -p 54321 -d “hrmww” -U postgres -f /u01/apps/csk.dmp

还原

ksql 命令

ksql -U postgres -d hrmww -p 54321 -f /u01/apps/dum3p.dmp

sys_restore

.
/sys_restore -username “postgres” --role “postgres” --dbname “hrmwv2_hlw” /u01/apps/dum3p.dmp

一. 从人大金仓数据库备份还原到人大金仓数据库

  1. 人大金仓数据库备份

人大金仓数据库sys_dump命令不能直接执行,需要进到人大金仓数据库目录下的Server/bin下执行,我的目录:

 [root@Kingbase-zookeeper-01 bin]# pwd/u01/apps/Kingbase/Server/bin

执行命令:

./sys_dump -h 0.0.0.100 -p 54321 -d "数据库名"  -U postgres  -f /u01/apps/csk1.dmp

人大金仓数据库的备份与还原 KingbaseES V8R6

这样是不打日志的,想要他打日志需要重定向一下。

命令如下:

./sys_dump -h 0.0.0.100 -p 54321 -d "数据库名"  -U postgres  -f /u01/apps/csk1.dmp  >> /u01/日志.txt  2>&1

2.还原人大金仓数据库

创建一个新的数据库"cscs"用于还原

  CREATE DATABASE "cscs"WITH  OWNER = "postgres"  ENCODING = 'UTF8';

我们先用官方说的sys_restore命令还原:

进到人大金仓数据库目录下的Server/bin下执行,如果不指定目录,或进到目录下

./sys_restore -username "postgres" --role "postgres" --dbname "cscs"  /u01/apps/csk3.dmp >> /u01/日志.txt  2>&1

查看报错:

sys_restore: error: input file appears to be a text format dump. Please use ksql.sys_restore: error: input file appears to be a text format dump. Please use ksql.

显示不支持此格式,只支持dump格式,建议用ksql命令:

那咱们换换格式试一试

还是先备份

./sys_dump -h 0.0.0.100 -p 54321 -d "数据库名"  -U postgres  -f /u01/apps/csk12.dump  >> /u01/日志.txt  2>&1

再还原试试

./sys_restore -username "postgres" --role "postgres" --dbname "cscs"  /u01/apps/csk12.dump >> /u01/日志.txt  2>&1

结果还是不行。
使用ksql 还原

./ksql -U postgres -h "0.0.0.0"  -d cscs -p 54321 -f /u01/apps/csk3.dmp >> /u01/日志.txt  2>&1 

结果发现没有问题 ,可以还原。
报错及详情可以在/u01/日志.txt 中查看。

我想了想那个报错是不是以为我没有采用压缩格式备份导致的,这次加上 --format=c 参数试试,看看有啥问题 。
备份命令:

./sys_dump -h 0.0.0.104 -p 54321 -d "数据库名" --format=c  -U postgres  -f /u01/apps/csk15.dump  >> /u01/日志.txt  2>&1

还原命令:
./sys_restore -h “10.10.3.104” -p “54321” -U postgres --role “postgres” --dbname “cs” /u01/apps/csk15.dump >> /u01/日志.txt 2>&1
结果:
还原成功了
报错及详情可以在/u01/日志.txt 中查看。

二 从postgresql数据库备份还原到人大金仓数据库

由于人大金仓数据库数据库pg版是基于pg开发的,那pg的一些功能人大金仓数据库也能用
pg还原是用了copy命令,而人大金仓也支持copy命令。那我们能不能用pg_dump和人大金仓的ksql来进行还原数据库呢?

现在pg数据库进行备份,由于不能采用压缩的形式来备份,备份文件的大小跟数据库差不多,需要注意空间大小。
在pg服务器下执行;

pg_dump --file "/u01/pgsql.sql" --host "0.0.0.12" --port "5432" --username "postgres" --dbname "数据库名"  --verbose --role "postgres"  --encoding "UTF8"

把备份文件传输到人大金仓数据库的服务器上,用ksql命令执行:

./ksql -U postgres -d hrmwv2_hlw -p 54321 -f /u01/pgsql.sql >> /u01/日志.txt 2>&1

结果可以执行成功。
报错及详情可以在/u01/日志.txt 中查看。

这里需要注意 fdw无法还原 ,以及一些外部链接都不会还原

后记

如果本文章有何错误,请您评论中指出,或联系我,我会改正,如果您觉得这篇文章有用,请帮忙一键三连,让更多的人看见,谢谢
作者 yang_z_1 csdn博客地址: https://blog.csdn.net/yang_z_1?type=blog

说说控