一、备份、还原和恢复的意义

备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。还原与恢复的主要目的是将目标数据库恢复到备份结束时刻的状态。

二、备份的方式

物理备份

1、冷备

2、热备

1、冷备

冷备也称脱机备份。数据库处于关闭状态时进行的备份操作,被称为脱机备份。从 V2.0 版本开始,使用 DMRMAN 工具进行脱机备份,并且支持对异常关闭的数据库进行脱机库备份。备份异常关闭的数据库,要求配置了本地归档,如果本地归档不完整,则需要先修复本地归档,再进行备份。冷备要求数据库关闭,DMAP服务打开,具体如下:

[dmdba@localhost bin]$ ./DmServiceDMSERVER stop

检查DmAP服务的状态。如果关闭,需要打开DmAP

[dmdba@localhost bin]$ ./DmAPService status

[dmdba@localhost bin]$ ./DmAPService start

图形化方式(控制台工具)做冷备

[dmdba@localhost ]$ cd /dm8/tool

[dmdba@localhost tool ]$./console

这里以数据库备份为例,归档备份同理。不同的是归档备份前提是有本地归档或远程归档。添加归档可以在manager管理工具选中连接名,右击管理服务器-系统管理(选择配置-点击转换)-归档配置(选择归档模式为归档再添加归档目标)-点击确定,再在状态打开,点击转换。

点击新建备份,输入ini文件路径,备份名,备份集目录以及备份类型

docker 达梦数据库 备份恢复 达梦数据库备份命令_docker 达梦数据库 备份恢复

命令行方式(DMRMAN工具)

 [dmdba@localhost bin]$ ./dmrman
RMAN> backup database ‘/dm8/data/DMDB/dm.ini' backupset 'dm8/backup'

还原

数据库还原(数据库关闭,dmap服务打开)

图形化方式

docker 达梦数据库 备份恢复 达梦数据库备份命令_dba_02

docker 达梦数据库 备份恢复 达梦数据库备份命令_表空间_03

docker 达梦数据库 备份恢复 达梦数据库备份命令_数据库_04

命令行方式

还原数据库

RMAN> restore database '/dm8/data/DMDB/dm.ini' from backupset '/dm8/backup'

恢复数据库

RMAN> recover database '/dm8/data/DMDB/dm.ini' from backupset '/dm8/backup'

更新数据库魔术

RMAN> recover database '/dm8/data/DMDB/dm.ini' update db_magic

启动数据库

[dmdba@localhost bin]$ ./DmServiceDMSERVER start

2、热备


热备也称联机备份。数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,称为联机备份。。热备时,可能存在一些处于活动状态的事务正在执行,为确保备份数据的一致性,
需要将备份期间产生的 REDO 日志一起备份。因此,只能在配置本地归档、并开启本地归档
的数据库上执行热备。数据库、归档可以热备,但表和表空间必须热备。另外,临时表空间不支持备份,表备份不支持增量备份。热备要求数据库、DMAP服务打开,数据库处于归档模式。



(1)图形化方式



数据库备份




docker 达梦数据库 备份恢复 达梦数据库备份命令_docker 达梦数据库 备份恢复_05


 

 


docker 达梦数据库 备份恢复 达梦数据库备份命令_database_06

docker 达梦数据库 备份恢复 达梦数据库备份命令_dba_07

docker 达梦数据库 备份恢复 达梦数据库备份命令_database_08

docker 达梦数据库 备份恢复 达梦数据库备份命令_docker 达梦数据库 备份恢复_09

备份集目录明显跟上次不同

docker 达梦数据库 备份恢复 达梦数据库备份命令_表空间_10

遇到上述情况需要checkpoint(100);

docker 达梦数据库 备份恢复 达梦数据库备份命令_database_11

需要指定工作目录才能在库备份目录下显示出来

 归档备份、表空间备份同理,表备份热备无需开归档

数据库、表空间还原需要脱机,步骤同冷备的还原一样。表空间的还原需要联机。

(2)命令行方式(disql工具)

数据库到配置模式

alter database mount;

打开归档配置

alter database archivelog;

增加归档文件

alter database add archivelog 'type=local,dest=/dm8/arch,file_size=80,space_limit=0';

数据库到打开状态

alter database open;

查数据库归档

select arch_mode from v$database;

arch_mode 为y说明开了归档

备份数据库:

SQL> backup database;

备份表空间:表空间备份只能联机,还原只能脱机

SQL> backup tablespace DMHR;

备份表:

SQL> backup table emp;

备份归档:

SQL> backup archivelog;

 

命令行方式下增量备份

做增量备份,一定要有一次完全备份。以完全备份作为基准,备份改变的。

SQL> backup database backupset '/dm8/backup/full_bak';

SQL> backup database increment with backupdir '/dm8/backup/full_bak' backupset '/dm8/backup/inr_bak';

increment:指定是增量备份

with backupdir:指定完全备份的路径

 还原

数据库、表空间还原前先关闭数据库

(1)整库还原

dmrman 还原:

RMAN> restore database '/dm8/data/DMDB/dm.ini' from backupset '/dm8/backup'

数据恢复

(打开数据归档以后使用这个命令进行数据恢复,冷备的数据恢复和热备的数据恢复有区别,热备需要执行以下命令)

RMAN>recover database ‘/dm8/data/DMDB/dm.ini’' with archivedir '/dm8/arch';

更新数据库魔术

RMAN> recover database '/dm8/data/DMDB/dm.ini' update db_magic;

(2)表空间还原

创建表空间:创建表空间TEST,数据文件初始大小为50m,每次自动扩展

2m,最大可扩展1024m;

create tablespace "TEST" datafile '/dm8/data/DAMENG/TEST01.DBF' size

50 autoextend on next 2 maxsize 1024 CACHE = NORMAL;

备份表空间

backup tablespace "TEST" full to "TS_TEST_FULL_2021_01_07_14_40_19" backupset '/dm8/backup';

表空间脱机

Alter tablespace test offline;

关闭数据库服务 ./DmServiceDMSERVER stop

 

表空间还原

RMAN> restore database '/dm8/data/DAMENG/dm.ini'  tablespace TEST from backupset '/dm8//backup/'

表空间恢复:

RMAN> recover database '/dm8/data/DMDB/dm.ini' tablespace TEST;

逻辑备份

 

工具:dexp 逻辑导出 dimp 逻辑导入
这是达梦自带的工具,分为四种级别:
数据库级别,用户级,模式级和表级,四种级别独立互斥,不能同时存在,四种级别所提供的功能:
数据库级(full):导出或导入整个数据库中的访问对象。
用户级(owner):导出或导入一个或多个用户所拥有的所有对象。
模式级(schemas):导出或导入一个或多个模式下的所有对象。
表级(table):导出或导入一个或多个指定的表或表分区。

1、逻辑导出

 

要求数据库打开

逻辑导出数据库:

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA file=/dm8/backup/full.dmp full=y

备份表:

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA file=/dm8/backup/emp.dmp tables=sysdba.emp

备份模式:

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA file=/dm8/backup/dmhr.dmp  schemas=dmhr

备份用户:

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA file=/dm8/backup/tast.dmp owner=test

2.   逻辑导入

假设emp表损坏:dimp还原

[dmdba@localhost bin]$ ./dimp SYSDBA/SYSDBA file=/dm8/backup/emp.dmp tables=emp.dmp  ignore=y

如果表存在注意参数IGNORE

如果表不存在:

[dmdba@localhost bin]$ ./dimp SYSDBA/SYSDBA file=/dm8/backup/emp.dmp   tables=sysdba.emp


 

 

 

 以上是我分享的内容,如有不妥之处,请多多指正!