前言
数据库数据库的备份与还原包含物理备份与还原和逻辑备份与还原两种类型。两者的区别是物理备份直接扫描数据库文件(数据文件、控制文件和日志文件等),找出那些那些已经分配、使用的数据页,复制并保存到备份集中。而逻辑备份时指将指定对象(库级、模式级、表级、用户级)的数据导出到文件的备份方式。
物理备份与还原
一、简介
物理备份分为完全备份和增量备份;联机备份(热备)和脱机备份(冷备)。
备份级别:全库备份、表空间级备份、表级备份、归档备份。
联机备份:需要数据库是启动状态,同时要求数据库打开归档。
二、温馨提醒:
数据库默认的备份路径由参数BAK_PATH指定,建议备份路径不要和数据库原始数据文件放在同一磁盘。DM数据库默认不开启归档的。数据库的还原仅仅是还原到备份的那一刻,如果使数据库故障时可以恢复到故障的前一刻(完全恢复),或者恢复到指定的时间点或指定 LSN(不完全恢复)。需要配置归档。归档配置有两种方式:一是联机归档配置,数据库实例启动情况下,使用 SQL 语句完成dmarch.ini和ARCH_INI配置;二是手动配置归档,数据库实例未启动的情况下,手动编写dmarch.ini文件和设置参数ARCH_INI。下面讲解的是联机归档配置。
查找数据库备份路径的命令:
SQL> select * from v$parameter t where name in 'BAK_PATH';
(注:默认备份路径是:/dm8/data/DAMENG/bak)
查看是否开始归档的命令:
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 N
已用时间: 2.481(毫秒). 执行号:55002.
使用 SQL 语句配置本地归档,语法如下:
ALTER DATABASE <ADD|MODIFY|DELETE> ARCHIVELOG <归档配置语句>;
<归档配置语句>::= 'DEST = <归档目标>,TYPE = <归档类型>'
<归档类型>::=<local 方式>|<remote 方式>
<local 方式>::=LOCAL [,FILE_SIZE = <文件大小>]
[,SPACE_LIMIT = <空间大小限制>]
<remote 方式>::=REMOTE [,FILE_SIZE = <文件大小>]
[,SPACE_LIMIT = <空间大小限制>],INCOMING_PATH = <归档存放路径>
配置归档示例如下:
SQL> alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
操作已执行
已用时间: 2.224(毫秒). 执行号:0.
三、全量备份:
SQL> backup database;
操作已执行
已用时间: 00:00:02.329. 执行号:700.
(注:没有指定备份路径,所以备份集存放于默认备份路径中,这里多了一个备份集DB_DAMENG_FULL_2020_001553_483741)
四、增量备份
SQL> backup database increment;
操作已执行
已用时间: 00:00:03.452. 执行号:701.
在默认的备份集路径下。可以查看到刚刚备份的增量备份集
DB_DAMENG_INCREMENT_2020_00_233918
可通过以下命令。查看增量备份对应的基础备份集。
SQL> select backup_path,base_name from v$backupset;
如果需要指定全量备份的的目录和名称,可以使用以下命令(指定备份集名称ONLINEBAK_01,备份集路径/dm8/backup/full)
SQL> backup database full to ONLINEBAK_01 backupset '/dm8/backup/full/ONLINEBAK_01';
操作已执行
已用时间: 998.235(毫秒). 执行号:703.
增量备份:指定基础备份集为ONLINEBAL_01,备份名称为ONLINEBAKINCR_01,备份路径为/dm8/backup/incr。
SQL> backup database increment base on backupset '/dm8/backup/full/ONLINEBAK_01' to ONLINEBAKINCR_01 backupset '/dm8/backup/incr/ONLINEBAK_01';
操作已执行
已用时间: 873.446(毫秒). 执行号:704.
表空间、模式、归档备份与库备份大同小异,不着重描述。
表空间备份(表空间名:dmtbs):
SQL> backup tablespace “dmtbs”;
表备份:(表名:table dmhr.employee)
SQL> backup table dmhr.employee;
归档备份
SQL> backup ARCHIVELOG all;
五、DM图形化界面进行备份还原:
如果是在条件允许的情况下,可以在DM管理工具进行图形化界面的备份。
六、脱机备份
脱机备份(数据库关闭下的备份)备份的前提,要保证数据库状态是出于关闭状态。有两种方式。如下
1.使用dmrman工具脱机备份,在目录下打开dmrman工具
('/dm8/data/DAMENG/dm.ini'根据实例进行选择)
RMAN> backup database '/dm8/data/DAMENG/dm.ini';
backup database '/dm8/data/DAMENG/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[41557], file_lsn[41557]
Processing backupset /dm8/data/DAMENG/bak/DB_DAMENG_FULL_2020_011208_205461
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.282
2.使用console控制台工具脱机备份(图形)
七、物理还原
库级、表空间还原不支持联机恢复,只支持脱机恢复还原。
表空间还原:
模拟故障:删除表空间dmtbs中的dmtbs02.PDF数据文件
[dmdba@localhost dmtbs]$ ll
总用量 65536
-rw-r--r--. 1 dmdba dinstall 33554432 2月 10 01:52 dmtbs01.PDF
-rw-r--r--. 1 dmdba dinstall 33554432 2月 10 01:52 dmtbs02.PDF
[dmdba@localhost dmtbs]$ rm dmtbs02.PDF
[dmdba@localhost dmtbs]$ ll
总用量 32768
-rw-r--r--. 1 dmdba dinstall 33554432 2月 10 01:52 dmtbs01.PDF
dmrman中还原该表空间数据文件
RMAN> restore database '/dm8/data/DAMENG/dm.ini' tablespace "dmtbs" from backupset '/dm8/data/DAMENG/bak/TS_dmtbs_FULL_2020_015508_757023';
restore database '/dm8/data/DAMENG/dm.ini' tablespace "dmtbs" from backupset '/dm8/data/DAMENG/bak/TS_dmtbs_FULL_2020_015508_757023';
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[43149], file_lsn[43149]
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.296
重新查看dmtbs数据文件,可以查看到数据文件dmtbs02.PDF还原回来了。
[dmdba@localhost dmtbs]$ ll
总用量 65536
-rw-r--r--. 1 dmdba dinstall 33554432 2月 10 02:17 dmtbs01.PDF
-rw-r--r--. 1 dmdba dinstall 33554432 2月 10 02:17 dmtbs02.PDF
如果需要基于归档将表空间恢复到最新状态;
RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace "dmtbs" with archivedir '/dm8/arch';
recover database '/dm8/data/DAMENG/dm.ini' tablespace "dmtbs" 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[43149], file_lsn[43149]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully.
time used: 606.709(ms)
全库的还原与恢复
模拟故障:删除数据文件SYSTEM.DBF
全库恢复:
RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2020_011208_205461';
全库还原:
RMAN> recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
更新数据库魔数:
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
逻辑备份与还原
逻辑备份与还原使用dxep命令和dimp命令执行,该命令在bin目录下,必须在实例OPEN状态下才能执行。
逻辑导出或导入有四个级别:
数据库级(full=y) 用户级(owner=XXX) 模式级(schemas=XXX) 表级(tables=XX)
这个操作,我一般是在DM管理工具中进行导入与导出操作,只需要在对应级别进行操作即可。
比如咋导出模式时,直接在对应的表格选择“导出”,然后进行操作。导入也类似。
如果需要使用dxep和dimp命令行操作的,可参考图形界面的“命令”,或者在/docs/zh-cn/ops/Logical-backup.html进行学习。如下。
(如有错误,欢迎指正)
(达梦云适配技术社区的网址:)