金仓数据库KingbaseES V8R6 逻辑恢复到新的 schema

前言

本文介绍一下KingbaseES V8R6版本中逻辑恢复时,将原有的对象恢复到新的schema。

sys_restore命令中如果只加入了-g(原schema) -G(新schema)参数 那么导入数据后,表的schema为最新,但是表的owner没变化。如需owner也替换为最新,还需要加入-O参数。

当然,我们还可以导出.sql格式结尾的文件,然后对文件进行编辑替换掉原来的shcema。但是对于大数据量可能会影响速度。

注:逻辑备份恢复命令的参数说明详见官方文档解释:https://help.kingbase.com.cn/v8/admin/reference/ref-client/app-pgrestore.html?highlight=sys_restore

测试

创建测试环境:

CREATE USER abc ;

CREATE DATABASE abc WITH OWNER abc;

\c abc abc

CREATE SCHEMA abc;

ALTER SCHEMA abc OWNER to abc;

GRANT USAGE ON SCHEMA abc to abc;

create table t1(id int);
查看t1表的schema,owner都是abc
abc=> \d
               List of relations
 Schema |        Name         | Type  | Owner
--------+---------------------+-------+--------
 abc    | t1                  | table | abc
 public | sys_stat_statements | view  | system
(2 rows)


创建U2用户
\c abc system

CREATE USER u2 with superuser;
CREATE SCHEMA u2 ;

ALTER SCHEMA u2 OWNER to u2;

GRANT USAGE ON SCHEMA u2 to u2;

1、sys_dump导出abc库下的表,加入-O,-g,-G参数导入

sys_dump -Uabc -Fc -f abc.dmp abc -p 2920

sys_restore 恢复刚才导出的文件,注意这里加入了-O参数,
-O参数的作用:默认原始表的owner是abc,加入此参数表示不延用原始的owner,而是根据 -U 指定owner
-g,-G 指定目标schema为u2
sys_restore  -Uu2  -dabc -Fc  -p 2920 -gabc -Gu2 -O abc.dmp

abc-#   \c abc u2
You are now connected to database "abc" as user "u2".
abc-#
abc-# \d
               List of relations
 Schema |        Name         | Type  | Owner
--------+---------------------+-------+--------
 public | sys_stat_statements | view  | system
 u2     | t1                  | table | u2
(2 rows)

下面看一下不加-O参数的导入结果,t1表的owner没变,还是导出前的abc。


sys_restore  -Uu2  -dabc -Fc  -p 2920 -gabc -Gu2  abc.dmp
abc=# \d
               List of relations
 Schema |        Name         | Type  | Owner
--------+---------------------+-------+--------
 public | sys_stat_statements | view  | system
 u2     | t1                  | table | abc
(2 rows)

2、导出sql文件,再用sed命令替换原来schema

sys_dump -Usystem -Fp -f abc.sql abc -p 2920
sed -i 's/abc/u2/g'  abc.sql 
sed -i 's/public/u2/g'  abc.sql 

ksql  abc  -Usystem  -f abc.sql
查看t1表的schema,owner已经替换为最新
abc=# \d
               List of relations
 Schema |        Name         | Type  | Owner
--------+---------------------+-------+--------
 public | sys_stat_statements | view  | system
 u2     | t1                  | table | u2
(2 rows)

更多信息,参见https://help.kingbase.com.cn/v8/index.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值