本文记录一次使用人大金仓数据库(KingbaseES)(postgres版)的备份与还原。
postgresql 版本:11.5
人大金仓数据库版本:KingbaseES V8R6
./sys_dump -h 10.10.3.104 -p 54321 -d “hrmww” -U postgres -f /u01/apps/csk.dmp
ksql -U postgres -d hrmww -p 54321 -f /u01/apps/dum3p.dmp
.
/sys_restore -username “postgres” --role “postgres” --dbname “hrmwv2_hlw” /u01/apps/dum3p.dmp
人大金仓数据库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
这样是不打日志的,想要他打日志需要重定向一下。
命令如下:
./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 中查看。
由于人大金仓数据库数据库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