达梦8备份与还原
概念:
- 归档模式:备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。配
有归档日志的数据库系统在出现故障时丢失数据的可能性更小,这是因为一旦出现介质故障
如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。 - 归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,就生成了归档日志文件。归档日志文件以归档时间命名。但只有在归档模式下运行时,DM数据库才会将重做日志写入到归档日志文件中。
- 重做日志:记录了所有物理页的修改,执行检查点的时候将redo日志刷盘。
备份前准备:
1.开启 DmAPService 服务
./DmAPService start #bin目录下
2.开启归档模式
alter database mount;
alter database add archivelog 'type=local,dest=/dm8/data/DAMENG/arch file_size=64,space_limit=10240';
alter database archivelog;
alter database open;
查询归档:
select arch_mode from v$database;
select arch_lsn,clsn,path from v$arch_file;
备份还原测试(使用dmrman方式)
将数据库服务关闭
./DmServiceDMSERVER stop
1.完全备份:
1.1备份:
backup database '/dm8/data/DAMENG/dm.ini' full to fullbak01 backupset '/dm8/data/DAMENG/backup/fullbak01';
1.2模拟数据库故障,redo日志丢失:
mv DAMENG02.log DAMENG02.log.bak
数据库启动报错:
1.3 还原数据库:
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/backup/fullbak01';
1.4 根据归档日志,恢复数据库到指定时间点:
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/data/DAMENG/arch' until time '2022-06-28 15:20:00';
1.5 更新永久魔数,保证数据库的唯一性。
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
1.6查看
查看redo日志,DAMENG02.log已经恢复:
数据库也启动成功:
2.增量备份还原测试:
增量备份分为累积增量备份和差异增量备份,在做增量备份之前,需要有一个基备份。他们的基备份不同为:
- 累积增量备份:累计增量备份只能使用完全备份作为基备份。
- 差异增量备份:差异增量备份可以使用完全备份或者增量备份作为基备份。
2.1 累积增量备份测试:
2.11 创建表空间tbs01,tbs01下创建表t1,插入数据。
create tablespace tbs01 datafile '/dm8/data/tbs/tbs01.dbf' size 128;
create table t1(id int,name varchar(20)) tablespace tbs01;
insert into t1 values(1,'张三');
insert into t1 values(2,'李四');
commit;
2.12 创建完全备份 fullbak02。
backup database full to fullbak02 backupset '/dm8/data/backup/fullbak02';
指定备份集目录:
select sf_bakset_backup_dir_add('disk','/dm8/data/backup/fullbak02');
select backup_name,backup_path,begin_lsn,end_lsn,desc# from v$backupset;
2.13 基于完全fullbak02 ,进行累积增量备份。
backup database increment cumulative base on backupset '/dm8/data/backup/fullbak02' to cum_bak_01 backupset '/dm8/data/backup/cum_bak_01' backupinfo '累计增量备份01';
2.14 模拟表空间数据文件损坏
重启数据库,查看表t1,t1处于脱机状态。
2.15 还原,恢复,更新数据库
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/backup/cum_bak_01';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/backup/cum_bak_01';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
2.16 在disql查询t1表:显示t1已找回。
select * from t1;
2.2 差异增量备份测试
差异增量备份以上一次的累积增量备份(cum_bak_01)作为基备份:
2.21 在t1表中插入数据
insert into t1 values(3,time);
2.21 进行差异增量备份:
1.新建完全备份fullbak03
2.以完全备份fullbak03为基备份进行累积增量备份cum_bak_02
3.以累积增量备份cum_bak_02为基备份进行差异增量备份inc_bak_01
backup database full to fullbak02 backupset '/dm8/data/backup/fullbak03';
backup database increment cumulative base on backupset '/dm8/data/backup/fullbak03' to cum_bak_02 backupset '/dm8/data/backup/cum_bak_02' backupinfo '累计增量备份02';
backup database increment base on backupset '/dm8/data/backup/cum_bak_02' to inc_bak_01 backupset '/dm8/data/backup/inc_bak_01' backupinfo '差异增量备份01';
模拟数据误删:
delete from t1 where name='time1';
2.23 以差异增量备份集进行还原,恢复,更新数据库:
DmServiceDMSERVER stop
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/backup/cum_bak_02';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/backup/cum_bak_02';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;