案例说明:

KingbaseES V8R6在通过sys_rman执行物理备份恢复时,可以通过参数‘--kb1-path’,指定恢复的数据(data)目录,但如果原备份中包含自定义表空间时,需要建立表空间映射,再执行恢复。

适用版本:

KingbaseES V8R6

一、案例复现

1、建立自定义表空间

test=# create tablespace user01 location '/data/kingbase/v8r6_C7/tbs';
CREATE TABLESPACE
test=# \db+
List of tablespaces
Name | Owner | Location | Access privileges | Options | Size | Description
-------------+--------+----------------------------+-------------------+---------+---------+-------------
sys_default | system | | | | 64 MB |
sys_global | system | | | | 658 kB |
sysaudit | system | | | | 24 kB |
user01 | system | /data/kingbase/v8r6_C7/tbs | | | 0 bytes |
(4 rows) prod=# create table u_tbs1 (id int ,name varchar(10)) tablespace user01;
CREATE TABLE prod=# \d+ u_tbs1;
Table "public.u_tbs1"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+----------------------------+-----------+----------+---------+----------+--------------+-------------
id | integer | | | | plain | |
name | character varying(10 char) | | | | extended | |
Tablespace: "user01"
Access method: heap

2、执行数据库的全备

[kingbase@node102 bin]$ /opt/Kingbase/ES/V8R6_C7/Server/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup

3、查看数据库备份信息

[kingbase@node102 bin]$ ./sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase info
stanza: kingbase
status: ok
cipher: none
db (current)
wal archive min/max (V008R006C007B0012): 000000010000000000000001/000000010000000000000005
full backup: 20230202-144709F
timestamp start/stop: 2023-02-02 14:47:09 / 2023-02-02 14:47:12
wal start/stop: 000000010000000000000005 / 000000010000000000000005
database size: 81.8MB, database backup size: 81.8MB
repo1: backup set size: 81.8MB, backup size: 81.8MB

4、关闭数据库服务执行备份恢复

1)关闭数据库服务

[kingbase@node102 bin]$ ./sys_ctl stop -D /data/kingbase/v8r6_C7/data/
waiting for server to shut down.... done
server stopped

2)建立自定义恢复目录并恢复数据库

# 建立恢复目录
[kingbase@node102 v8r6_C7]$ mkdir -p /data/kingbase/v8c7/data #执行数据恢复
[kingbase@node102 bin]$ /opt/Kingbase/ES/V8R6_C7/Server/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --kb1-path=/data/kingbase/v8c7/data --archive-mode=off restore
2023-02-02 14:51:56.189 P00 INFO: restore command begin 2.27: --archive-mode=off --band-width=0 --config=/home/kingbase/kbbr_repo/sys_rman.conf --exec-id=22745-9736a61a --link-all --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V8R6_C7/Server/log --log-subprocess --non-archived-space=1024 --kb1-path=/data/kingbase/v8c7/data --process-max=4 --repo1-path=/home/kingbase/kbbr_repo --stanza=kingbase
2023-02-02 14:51:56.201 P00 INFO: repo1: restore backup set 20230202-144709F, recovery will start at 2023-02-02 14:47:09
2023-02-02 14:51:56.201 P00 INFO: remap data directory to '/data/kingbase/v8c7/data'
ERROR: [040]: unable to restore to path '/data/kingbase/v8r6_C7/tbs/SYS_12_202209081' because it contains files
HINT: try using --delta if this is what you intended.
2023-02-02 14:51:56.202 P00 INFO: restore command end: aborted with exception [040]

---如上图所示,通过‘--kb1-path’指定了数据库恢复目录,但是自定义表空间数据仍然恢复到了原data目录下,出现恢复错误。

二、解决表空间恢复

1、创建表空间存储目录

[kingbase@node102 bin]$ mkdir -p /data/kingbase/v8c7/tbs

2、建立表空间映射并恢复数据库

[kingbase@node102 bin]$ /opt/Kingbase/ES/V8R6_C7/Server/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --kb1-path=/data/kingbase/v8c7/data --archive-mode=off   --tablespace-map=user01=/data/kingbase/v8c7/tbs restore
2023-02-02 14:54:10.679 P00 INFO: restore command begin 2.27: --archive-mode=off --band-width=0 --config=/home/kingbase/kbbr_repo/sys_rman.conf --exec-id=22983-6acf7342 --link-all --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V8R6_C7/Server/log --log-subprocess --non-archived-space=1024 --kb1-path=/data/kingbase/v8c7/data --process-max=4 --repo1-path=/home/kingbase/kbbr_repo --stanza=kingbase --tablespace-map=user01=/data/kingbase/v8c7/tbs
2023-02-02 14:54:10.691 P00 INFO: repo1: restore backup set 20230202-144709F, recovery will start at 2023-02-02 14:47:09
2023-02-02 14:54:10.691 P00 INFO: remap data directory to '/data/kingbase/v8c7/data'
2023-02-02 14:54:10.691 P00 INFO: map tablespace 'sys_tblspc/16559' to '/data/kingbase/v8c7/tbs'
......
2023-02-02 14:54:12.423 P00 INFO: Restore Process: FILE: 2207 / 2207 100% SZIE: 85799190 bytes / 85799190 bytes 81.8MB / 81.8MB 100%
2023-02-02 14:54:12.424 P00 INFO: write updated /data/kingbase/v8c7/data/kingbase.auto.conf
2023-02-02 14:54:12.428 P00 INFO: restore global/sys_control (performed last to ensure aborted restores cannot be started)
2023-02-02 14:54:12.429 P00 INFO: restore size = 81.8MB, file total = 2207
2023-02-02 14:54:12.429 P00 INFO: restore command end: completed successfully (1753ms) ---如上所示,数据库恢复完成。



---如上图所示,需要建立表空间映射,再执行恢复。

三、数据访问测试

1、查看自定义表空间存储信息

[kingbase@node102 data]$ cd ../tbs
[kingbase@node102 tbs]$ ls -lh
total 0
drwx------ 3 kingbase kingbase 18 Feb 2 14:54 SYS_12_202209081

2、启动数据库实例(在恢复后的data目录)

[kingbase@node102 tbs]$ cd /opt/Kingbase/ES/V8R6_C7/Server/bin
[kingbase@node102 bin]$ ./sys_ctl start -D /data/kingbase/v8c7/data/
.......
server started

3、连接数据库查看表空间信息

[kingbase@node102 bin]$ ./ksql -U system test
ksql (V8.0)
Type "help" for help. test=# \db+
List of tablespaces
Name | Owner | Location | Access privileges | Options | Size | Description
-------------+--------+-------------------------+-------------------+---------+----------+-------------
sys_default | system | | | | 64 MB |
sys_global | system | | | | 658 kB |
sysaudit | system | | | | 24 kB |
user01 | system | /data/kingbase/v8c7/tbs | | | 18 bytes |
(4 rows) test=# \c prod
You are now connected to database "prod" as user "system".
prod=# \d+ u_tbs1
Table "public.u_tbs1"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+----------------------------+-----------+----------+---------+----------+--------------+-------------
id | integer | | | | plain | |
name | character varying(10 char) | | | | extended | |
Tablespace: "user01"
Access method: heap ---如上所示,表空间恢复到新的存储目录下,数据访问正常。

四、总结

对于KingbaseES V8R6物理备份的恢复,可以恢复到指定的目录,在生产环境下建立测试环境。但对于包含自定义表空间的备份的恢复,注意需要建立表空间映射后再执行恢复。

参考文档:

https://help.kingbase.com.cn/v8/highly/backup-restore/backup/sys-rman-5.html#id13

KingbaseES V8R6 备份恢复案例 -- 自定义表空间指定目录恢复的更多相关文章

  1. KingbaseES V8R6备份恢复案例之---自定义表空间指定恢复目录数据恢复

    案例说明: KingbaseES V8R6在通过sys_rman执行物理备份恢复时,可以通过参数'--kb1-path',指定恢复的数据(data)目录,但如果原备份中包含自定义表空间时,需要建立表空 ...

  2. Oracle DB 执行表空间时间点恢复

    • 列出在执行表空间时间点恢复(TSPITR) 时会发生的操作 • 阐释TSPITR 使用的术语的定义 • 确定适合将TSPITR 用作解决方案的情况 • 确定时间点恢复的正确目标时间 • 确定不能使 ...

  3. ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库,表空间,数据文件

    ORACLE RMAN备份及还原   RMAN能够进行增量备份:数据库.表空间.数据文件 仅仅有使用过的block能够被备份成backup set 表空间与数据文件相应关系:dba_data_file ...

  4. 流复制-pg_start_backup(带自定义表空间)

    一.准备slave库 archive_mode = on ---开启归档模式 archive_command = 'test ! -f /mysqldata/pg/archive_active/%f ...

  5. KingbaseES V8R6备份恢复案例之---同一数据库创建不同stanza备份

    案例说明: 在生产环境,有的应用需要调用数据库的sys_rman做备份,为了区分数据库自身的sys_rman备份和应用的备份,可以使用不同的stanza name创建备份.本案例介绍了,如何在King ...

  6. KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份

    案例说明: KingbaseES V8R6通过sys_backup.sh执行物理备份,默认sys_backup.sh执行备份初始化时,需要连接test数据库进行身份的认证:在一些生产环境为了安全需求, ...

  7. KingbaseES V8R6备份恢复案例之---手工清理冗余历史备份

    案例说明: 对于KingbaseES V8R6的通过sys_rman执行的物理历史备份,可以在执行备份时,备份的保留(retention)策略自动清理.不能通过手工删除备份,可以通过expire参数手 ...

  8. 12C-使用跨平台增量备份减少可移动表空间的停机时间 (Doc ID 2005729.1)

    12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 20057 ...

  9. 11G-使用跨平台增量备份减少可移动表空间的停机时间 XTTS (Doc ID 1389592.1)

    11G - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 13895 ...

  10. KingbaseES V8R6 维护管理案例之---Kstudio在CentOS 7启动故障

    ​ 案例说明: 在CentOS 7上安装KingbaseES V8R6C006数据库后,启动Kstudio图形界面启动失败,gtk动态库加载失败,安装gtk相关动态库后,问题解决. 适用版本: Kin ...

随机推荐

  1. SpringBoot+Shiro+LayUI权限管理系统项目-7.实现用户管理

    1.说明 只讲解关键部分,详细看源码,文章下方捐赠或QQ联系捐赠获取. 2.功能展示 包括用户增删改查和分配角色. 3.业务模型 @Data @EqualsAndHashCode(callSuper ...

  2. html中iframe调用兄弟iframe中的js方法

    问题说明 最近工作中碰到一个页面有一个主iframe A,用于操作主要业务元素.其中有一个弹出框里面也嵌入了一个iframe B, 此时,我需要在B中调用A中JS的指定方法.下面咱们来通过例子还原一下 ...

  3. pycharm—flask创建简单web项目

    1.系统 系统 版本 OS win 10 pycharm 专业版2022.3.1 2.引入flask包 pip install flask 3.项目目录展示.代码.浏览器访问 from flask i ...

  4. linux和unix中的IO模型总结

    高性能网络IO编程模型 一.I/O模型简介 在一个 linux 操作系统中,一般分为用户空间和内核空间. 用户空间一般就是我们进行应用程序编程的地方. 内核空间就是 linux 操作系统自己运行的一些 ...

  5. centos7.x及centos8.x安装新版docker

    前置步骤 # 如之前安装过docker,请先删除 yum remove docker docker-common docker-selinux docker-engine centos7 # cent ...

  6. 【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包

    问题描述 在之前的一篇博文中,介绍了在App Service中抓取网络日志: 抓取Windows的网络包:[应用服务 App Service]App Service中抓取网络日志 抓取Linux的网络 ...

  7. Nebula Graph 特性讲解——RocksDB 统计信息的收集和展示

    由于 Nebula Graph 的底层存储使用了 RocksDB,出于运维管理需要,我们的社区用户 @chenxu14 在 pr#2243 为 Nebula Graph 贡献了 RocksDB 统计信 ...

  8. Java 包装类的使用(自动装箱+自动拆箱)+Vector

    1 package com.bytezreo.ut; 2 3 import java.util.Scanner; 4 import java.util.Vector; 5 6 /** 7 * 8 * ...

  9. Sealos 是企业节省成本的终极武器

    本文通过多维度,多场景对比来阐述 Sealos 为企业节省大量成本,结合一些现有客户具体的实际情况全面分析成本模型,企业可以根据自己的实际情况来对号入座,看是否适合使用 Sealos. 云操作系统节省 ...

  10. 一文学会JDBC实现java和mySQL的数据连接(尚硅谷学习课程代码+笔记+思路总结)

    JDBC是指数据库连接技术,用于java连接mySQL等数据库.本文详细介绍了尚硅谷课程中JDBC的学习内容和补充知识. 概述 java语言只提供规范接口,存在于java.sql.javax.sql包 ...