一、备份、还原和恢复的意义
备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。还原与恢复的主要目的是将目标数据库恢复到备份结束时刻的状态。
二、备份的方式
物理备份
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文件路径,备份名,备份集目录以及备份类型
命令行方式(DMRMAN工具)
[dmdba@localhost bin]$ ./dmrman
RMAN> backup database ‘/dm8/data/DMDB/dm.ini' backupset 'dm8/backup'
还原
数据库还原(数据库关闭,dmap服务打开)
图形化方式
命令行方式
还原数据库
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)图形化方式
数据库备份
备份集目录明显跟上次不同
遇到上述情况需要checkpoint(100);
需要指定工作目录才能在库备份目录下显示出来
归档备份、表空间备份同理,表备份热备无需开归档
数据库、表空间还原需要脱机,步骤同冷备的还原一样。表空间的还原需要联机。
(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
以上是我分享的内容,如有不妥之处,请多多指正!