达梦数据库物理备份与逻辑备份

一、备份的分类

1、物理备份、还原、恢复

  • 处理逻辑:
    物理备份是通过备份集的方式将数据文件中有效的数据也拷贝至备份集中,再通过备份集进行恢复还原
  • 备份方式:
    热备(联机备份):数据库在做热备时,需要开启了归档模式,联机模式下备份的时间节点或LSN是在备份开始的时候,而备份开始~备份结束之间所产生的事务将写到归档日志中,所以在热备时,也要备份至备份集中;
    冷备(脱机备份):数据库冷备因为时在脱机模式下,所以不会产生事务,备份开始与结束时间节点的数据一致,所以不需要开启归档模式
  • 还原
    还原是将数据库还原至备份开始的时间节点,是备份的逆过程
    恢复
    恢复是使用归档将数据库恢复到最新状态或指定时间点;或使用备份集中的 redo 信息将数据库恢复至一致性状态。

2、逻辑备份与还原

  • 处理逻辑:
    逻辑备份与还原是通过$DM_HOME/bin目录下的dexp/dimp 进行逻辑导出和导入;
    逻辑备份是将指定对象(库级、模式级、表级)的数据导出到 文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置;
    逻辑还原是逻辑备份的逆过程;

二、物理备份、还原、恢复使用(以下演示均为数据库级)

1、冷备(脱机备份)

插入测试数据

SQL> create TABLESPACE TBS1 DATAFILE '/dm8/data/DMOA/TBS1_01.DBF' SIZE 500
autoextend ON next 1 MAXSIZE 1024;
SQL> create USER TEST identified by dameng123 limit failed_login_attemps
3,PASSWORD_LOCK_TIME 1,PASSWORD_GRACE_TIME 10 DEFAULT tablespace TBS1;
SQL> create table TEST.emp(
id int primary key not null UNIQUE,
name varchar(100) not null,
age int
);
SQL> insert into TEST.emp values(1,'张三',21),(2,'李四',22);
commit;
SQL> select * from TEST.emp;
行号 ID NAME AGE
---------- ----------- ---- -----------
1 1 张三 21
2 2 李四 22
已用时间: 2.016(毫秒). 执行号:600.
SQL>

step1:查看默认备份路径及备份还原策略

select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');

BAK_PATH:备份路径
BAK_USE_AP:备份还原实现策略。 1:DMAP 辅助进程方式,要求必须启动 DMAP 服务, 可支
持第三方备份。DMAP 插件执行,改造了备份还 原任务子 系统,允许指定并行度,大幅提升了备份
还 原的效率,特别是加密、压缩的处理效率。 2:无辅助进程方式,不依赖 DMAP,由主进程
DMSERVER 自身执行备份还原,但不支持第三方备份

SQL> select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');

行号       ID          NAME       TYPE      VALUE              SYS_VALUE          FILE_VALUE
---------- ----------- ---------- --------- ------------------ ------------------ ------------------
           DESCRIPTION
           -----------------------------------------------------------------------------------
1          6           BAK_PATH   READ ONLY /dm8/data/DMOA/bak /dm8/data/DMOA/bak /dm8/data/DMOA/bak
           backup file path

2          666         BAK_USE_AP SYS       1                  1                  1
           backup use assistant plus-in, 0:use sub process; 1:use AP; 2:not use AP. default 1.


已用时间: 2.665(毫秒). 执行号:370.

step2:检查数据是否关闭,DmAPService辅助进程有没有开启(BAK_USE_AP为1,当前采用DMAP 辅助进程方式进行备份)

[root@localhost ~]# ps -ef|grep dmap|grep -v grep
dmdba      19366       1  0 7月21 ?       00:00:01 /dm8/bin/dmap
[root@localhost ~]# su - dmdba
上一次登录: 五 722 13:44:45 CST 2022 pts/2 上
[dmdba@localhost ~]$ DmServiceDMOA status
DmServiceDMOA (pid 22612) is running.
[dmdba@localhost ~]$ DmServiceDMOA stop
Stopping DmServiceDMOA:                                    [ OK ]
[dmdba@localhost ~]$ DmServiceDMOA status
DmServiceDMOA is stopped

step3:备份

[dmdba@localhost ~]$ dmrman
dmrman V8
RMAN> backup database '/dm8/data/DMOA/dm.ini';
backup database '/dm8/data/DMOA/dm.ini';
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26777], file_lsn[26777]
Processing backupset /dm8/data/DMOA/bak/DB_DMOA_FULL_20220722_140742_254228
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]                                 
backup successfully!
time used: 00:00:01.561
RMAN> exit
time used: 0.152(ms)
[dmdba@localhost ~]$ ll /dm8/data/DMOA/bak
总用量 0
drwxr-xr-x 2 dmdba dinstall 101  722 14:07 DB_DMOA_FULL_20220722_140742_254228
[dmdba@localhost ~]$ cd /dm8/data/DMOA/bak/DB_DMOA_FULL_20220722_140742_254228
[dmdba@localhost DB_DMOA_FULL_20220722_140742_254228]$ ls
DB_DMOA_FULL_20220722_140742_254228.bak  DB_DMOA_FULL_20220722_140742_254228.meta

step4:还原并验证

-- 删除数据
SQL> delete TEST.emp;
影响行数 2

已用时间: 0.666(毫秒). 执行号:601.
SQL> commit;
操作已执行
已用时间: 0.804(毫秒). 执行号:602.
# 还原与恢复
[dmdba@localhost DB_DMOA_FULL_20220722_140742_254228]$ DmServiceDMOA stop
Stopping DmServiceDMOA:                                    [ OK ]
[dmdba@localhost DB_DMOA_FULL_20220722_140742_254228]$ dmrman            
dmrman V8
# 以下是整库还原,如需要恢复某个表空间时,则可加上tablespace 表空间名
# restore database '/dm8/data/DMOA/dm.ini' tablespace TBS1 from backupset '/dm8/data/DMOA/bak/DB_DMOA_FULL_20220722_140742_254228';
RMAN> restore database '/dm8/data/DMOA/dm.ini' from backupset '/dm8/data/DMOA/bak/DB_DMOA_FULL_20220722_140742_254228';
restore database '/dm8/data/DMOA/dm.ini' from backupset '/dm8/data/DMOA/bak/DB_DMOA_FULL_20220722_140742_254228';
[Percent:0.00%][Speed:0.00M/s][Cost:00:00:01][Remaining:00:00:00]Normal of FAST                     
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]                                 
restore successfully.
time used: 00:00:02.488
RMAN> 
# 当备份集为脱机备份即备份过程中无日志生成,那么此时还原后的数据库中数据与备份时数据状态一致。在不需要重做归档日志恢复数据的情况下,可以直接更新DB_MAGIC完成数据库恢复
RMAN> recover database '/dm8/data/DMOA/dm.ini' update db_magic;
recover database '/dm8/data/DMOA/dm.ini' update db_magic;
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26777], file_lsn[26777]
recover successfully!
time used: 00:00:01.050
-- 验证
SQL> select * from TEST.emp;

服务器[192.168.220.131:5234]:处于普通打开状态
已连接

行号       ID          NAME AGE
---------- ----------- ---- -----------
1          1           张三 21
2          2           李四 22

2、热备(联机备份)

热备份与还原恢复的处理逻辑
在这里插入图片描述
上图是物理备份、还原、恢复的处理逻辑,在联机模式下开启了归档模式;备份集中数据页的截止或
LSN的截止是在备份的开始时间,备份开始后数据库操作不会立即写入数据文件中,而是首先以日志的
形式写入归档日志中,所以备份集中还保存有归档日志;在利用备份集还原库后还需要恢复库,恢复到
指定的时间节点或者最新时间节点

step1:查看默认备份路径及备份还原策略

select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');

​ BAK_PATH:备份路径

​ BAK_USE_AP:备份还原实现策略。 1:DMAP 辅助进程方式,要求必须启动 DMAP 服务, 可支持第三方备份。DMAP 插件执行,改造了备份还 原任务子 系统,允许指定并行度,大幅提升了备份还 原的效率,特别是加密、压缩的处理效率。 2:无辅助进程方式,不依赖 DMAP,由主进程 DMSERVER 自身执行备份还原,但不支持第三方备

SQL> select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');

行号       ID          NAME       TYPE      VALUE              SYS_VALUE          FILE_VALUE
---------- ----------- ---------- --------- ------------------ ------------------ ------------------
           DESCRIPTION
           -----------------------------------------------------------------------------------
1          6           BAK_PATH   READ ONLY /dm8/data/DMOA/bak /dm8/data/DMOA/bak /dm8/data/DMOA/bak
           backup file path

2          666         BAK_USE_AP SYS       1                  1                  1
           backup use assistant plus-in, 0:use sub process; 1:use AP; 2:not use AP. default 1.


已用时间: 2.665(毫秒). 执行号:370.

step2:检查是否开启归档模式,检查数据库是否启动,DmAPService辅助进程有没有开启(BAK_USE_AP为1,当前采用DMAP 辅助进程方式进行备份)、

-- ARCH_MODE为N表示未开启归档模式
SQL> select db.name,db.ARCH_MODE from SYS."V$DATABASE" db where db.NAME = 'DMOA';

行号       NAME ARCH_MODE
---------- ---- ---------
1          DMOA N

已用时间: 0.903(毫秒). 执行号:601.
-- 需先进入配置模式开启归档,在打开数据库
SQL> ALTER DATABASE MOUNT;
操作已执行
已用时间: 372.535(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 2.955(毫秒). 执行号:0.
SQL> select db.name,db.ARCH_MODE from SYS."V$DATABASE" db where db.NAME = 'DMOA';

行号       NAME ARCH_MODE
---------- ---- ---------
1          DMOA Y

已用时间: 0.969(毫秒). 执行号:602.
SQL> alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
操作已执行
已用时间: 1.293(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 335.248(毫秒). 执行号:0.

step3:备份

[dmdba@localhost DMOA]$ mkdir -p DMOA_BAK
[dmdba@localhost DMOA]$ disql SYSDBA/SYSDBA:5234

服务器[LOCALHOST:5234]:处于普通打开状态
登录使用时间 : 1.593(ms)
disql V8
SQL> backup database full to DMOA_FULL_BAK_01 backupset '/dm8/DMOA_BAK/DMOA_FULL_BAK_01 ';
操作已执行
已用时间: 00:00:01.339. 执行号:700.
SQL> exit
[dmdba@localhost DMOA_FULL_BAK_01]$ pwd
/dm8/DMOA_BAK/DMOA_FULL_BAK_01
[dmdba@localhost DMOA_FULL_BAK_01]$ ll
总用量 23120
-rw-r--r-- 1 dmdba dinstall   179200  722 15:37 DMOA_FULL_BAK_01_1.bak
-rw-r--r-- 1 dmdba dinstall 23402496  722 15:37 DMOA_FULL_BAK_01.bak
-rw-r--r-- 1 dmdba dinstall    86528  722 15:37 DMOA_FULL_BAK_01.meta
[dmdba@localhost DMOA_FULL_BAK_01]$ 

step4:还原与恢复,热备份的还原恢复同样需脱机

--删除表数据
SQL> delete TEST.emp;
影响行数 2

已用时间: 0.878(毫秒). 执行号:603.
SQL> commit;
操作已执行
已用时间: 0.822(毫秒). 执行号:604.
# 脱机
[dmdba@localhost DMOA_FULL_BAK_01]$ DmServiceDMOA stop
Stopping DmServiceDMOA:                                    [ OK ]
[dmdba@localhost DMOA_FULL_BAK_01]$ DmServiceDMOA status
DmServiceDMOA is stopped
# 还原与恢复
[dmdba@localhost DMOA_FULL_BAK_01]$ dmrman
dmrman V8
RMAN> restore database '/dm8/data/DMOA/dm.ini' from backupset '/dm8/DMOA_BAK/DMOA_FULL_BAK_01';
restore database '/dm8/data/DMOA/dm.ini' from backupset '/dm8/DMOA_BAK/DMOA_FULL_BAK_01';
file dm.key not found, use default license!
[Percent:0.00%][Speed:0.00M/s][Cost:00:00:01][Remaining:00:00:00]Normal of FAST                     
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]                                 
restore successfully.
time used: 00:00:02.605
# 使用归档恢复到最新状态。
RMAN> recover database '/dm8/data/DMOA/dm.ini' with archivedir '/dm8/arch';
recover database '/dm8/data/DMOA/dm.ini' with archivedir '/dm8/arch';

Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[28185], file_lsn[28185]
EP:0 total 0 pkgs applied, percent: 0%
EP:0 total 1 pkgs applied, percent: 25%
EP:0 total 2 pkgs applied, percent: 50%
EP:0 total 3 pkgs applied, percent: 75%
EP:0 total 4 pkgs applied, percent: 100%
recover successfully!
time used: 00:00:02.489
RMAN> 
# 更新数据库魔数
RMAN> recover database '/dm8/data/DMOA/dm.ini' update db_magic;
recover database '/dm8/data/DMOA/dm.ini' update db_magic;
file dm.key not found, use default license!

Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[29758], file_lsn[29758]
recover successfully!
time used: 00:00:01.041
-- 验证
SQL> select * from TEST.emp;

服务器[192.168.220.131:5234]:处于普通打开状态
已连接

行号       ID          NAME AGE
---------- ----------- ---- -----------
1          1           张三 21
2          2           李四 22

已用时间: 1.572(毫秒). 执行号:400.
SQL>

三、逻辑备份与还原

dexp 逻辑导出、dimp 逻辑导入四个级别: 全库(full=y) 按用户(owner=XXX) 按模式(schemas=XXX) 按表(tables=XX)

dexp逻辑导出、导入

[dmdba@localhost ~]$ dexp help  
dexp V8
格式: ./dexp  KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)

例程: ./dexp  SYSDBA/SYSDBA GRANTS=Y TABLES=(SYSDBA.TAB1,SYSDBA.TAB2,SYSDBA.TAB3)

USERID 必须是命令行中的第一个参数
[dmdba@localhost DMOA_BAK]$ mkdir -p /dm8/DMOA_BAK/dexp
# 全库导出:
[dmdba@localhost DMOA_BAK]$ dexp userid=sysdba/SYSDBA:5234 directory=/dm8/DMOA_BAK/dexp file=dmoa_full.dmp log=dmoa_full.log full=y
[dmdba@localhost dexp]$ pwd
/dm8/DMOA_BAK/dexp
[dmdba@localhost dexp]$ ls 
dmoa_full.dmp  dmoa_full.log
[dmdba@localhost dexp]$ 
# 全库导入:
[dmdba@localhost DMOA_1]$ dimp userid=sysdba/SYSDBA:5235 directory=/dm8/DMOA_BAK/dexp file=dmoa_full.dmp log=dmoa_1_impfull.log full=y
[dmdba@localhost DMOA_1]$ disql SYSDBA/SYSDBA:5235

服务器[LOCALHOST:5235]:处于普通打开状态
登录使用时间 : 1.853(ms)
disql V8
SQL> select * from TEST.emp;

行号     ID          NAME   AGE        
---------- ----------- ------ -----------
1          1           张三 21
2          2           李四 22

已用时间: 20.892(毫秒). 执行号:51400.
SQL> 


# 按用户导出:
[dmdba@localhost DMOA_1]$ dexp userid=sysdba/SYSDBA:5234 directory=/dm8/DMOA_BAK/dexp file=dmoa_user_TEST.dmp log=dmoa_user_TEST.log owner=TEST
[dmdba@localhost dexp]$ ls /dm8/DMOA_BAK/dexp |grep TEST
dmoa_user_TEST.dmp.dmp
dmoa_user_TEST.log
[dmdba@localhost dexp]$ 
# 按用户导入:
[dmdba@localhost DMOA_1]$ dimp userid=sysdba/SYSDBA:5235 directory=/dm8/DMOA_BAK/dexp file=dmoa_user_TEST.dmp log=dmoa_user_TEST_impfull.log OWNER=TEST

# 按模式导出:
[dmdba@localhost dexp]$ dexp userid=sysdba/SYSDBA:5234 directory=/dm8/DMOA_BAK/dexp file=dmoa_schema_TEST.dmp log=dmoa_schema_TEST.log schemas=TEST
[dmdba@localhost dexp]$ ls /dm8/DMOA_BAK/dexp |grep schema
dmoa_schema_TEST.dmp
dmoa_schema_TEST.log
[dmdba@localhost dexp]$
# 按模式导入(将 A 模式导入到 B 模式,使用 REMAP_SCHEMA 参数):
dimp userid=sysdba/SYSDBA:5235 directory=/dm8/DMOA_BAK/dexp file=dmoa_schema_TEST.dmp log=dmoa_schema_TEST_impDMHR.log REMAP_SCHEMA=TEST:NEW_SCHEMA


# 按表导出:
[dmdba@localhost dexp]$ dexp userid=sysdba/SYSDBA:5234 directory=/dm8/DMOA_BAK/dexp file=emp.dmp log=emp.log tables=TEST.emp
[dmdba@localhost dexp]$ ls /dm8/DMOA_BAK/dexp |grep emp
emp.dmp
emp.log
[dmdba@localhost dexp]$ 
# 按表导入
[dmdba@localhost dexp]$ dimp userid=sysdba/SYSDBA:5235 directory=/dm8/DMOA_BAK/dexp file=emp.dmp log=emp_imp.log tables=TEST.emp remap_schema=SYSDBA:MAIN
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值