打开manager-管理服务器
状态从打开转成配置状态
在归档配置那将非归档改成归档,记得点确定
之后将状态改回去,从配置->打开
备份有冷备与热备,冷备暂时不说,因为要停机
热备的话,直接在manager里的备份里新建一个即可
backup database full to "DB_DAMENG_FULL_2022_08_15_12_55_31" backupset 'DB_DAMENG_FULL_2022_08_15_12_55_31';
如果出现下面的错误,需要执行
checkpoint(100)
这个时候我删除一条表记录(下图只有6条了,我已经删除了)
之后咱可以模拟数据文件出问题了
比如删除某个数据文件
模拟一下表空间的还原与恢复
必须停机先/dm8/bin/DmServiceDMSERVER stop
用dmrman还原
校验下备份集
check backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2022_08_15_12_58_57'
show backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2022_08_15_12_58_57'
还原恢复一下数据库实例到我备份前的点(这个点是没有删除id为7的记录的,所以还原后应该能看见id为7的记录)
这里我没有还原表空间,直接整库还原
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2022_08_15_12_58_57';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2022_08_15_12_58_57';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
启动数据库实例并查看数据(此时应该包含id为7的记录)
那怎么弄成恢复成前一刻的没有id为7的时刻呢
停机,然后在刚才执行的语句里多加一句即可:
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2022_08_15_12_58_57';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2022_08_15_12_58_57';
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
自己手工备份太麻烦了,于是用到了达梦的作业
先创建代理环境
之后新建作业,先新建个全量备份,每周三,周六的1点备份:
call SP_CREATE_JOB('FULLBAK1',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('FULLBAK1');
call SP_ADD_JOB_STEP('FULLBAK1', 'bak1', 6, '00000000/dm8/JOB_BACKUP', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('FULLBAK1', 'bak1', 1, 2, 1, 72, 0, '01:00:00', NULL, '2022-08-15 16:17:02', NULL, '');
call SP_JOB_CONFIG_COMMIT('FULLBAK1');
再来个增量备份,周一,周二,周四,周五,周日的1点增量
call SP_CREATE_JOB('JOB2',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB2');
call SP_ADD_JOB_STEP('JOB2', 'test2', 6, '10000000/dm8/JOB_BACKUP
/dm8/JOB_BACKUP', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB2', 'test2', 1, 2, 1, 55, 0, '01:00:00', NULL, '2022-08-15 16:22:03', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB2');
简单测试下我的job是否成功:
1)等到了时间生成了完全备份(手工修改了下时间,我不可能真的等到晚上1点啊)
2)删除id为4的记录
3)再等到时间了自动执行增量备份
4)停机,不加归档日志试试还原恢复一次(不需要执行全量,它自己默认会读取本目录下的全量文件,所以当初建立job2这个增量的时候,把生成的目录也改成JOB_BACKUP下了,不要放到JOB_BACKUP2下,以后再查查那个参数是指定基目录的)
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/JOB_BACKUP/DB_DAMENG_INCREMENT_2022_08_15_16_37_55';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/JOB_BACKUP/DB_DAMENG_INCREMENT_2022_08_15_16_37_55';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
启动实例,连接manager再看看数据,数据是增量备份后的,忘记截图了.
还发现个特点,无论是restore全量还是增量,只要最后执行了归档的那个恢复命令,数据是一样的,有空的小伙伴可以做一个试试.
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';