在数据库管理中,数据的安全性和完整性至关重要。达梦数据库提供了丰富的数据保护机制,其中归档备份和恢复就是其中的重要一环。本文将详细介绍达梦数据库的归档日志、归档备份、归档还原操作流程以及常见的几种利用归档还原数据的方式。
在介绍归档日志前先说明下重做日志,即REDO日志,又因为是正在使用中的日志,也叫联机日志。重做日志被用来记录所有对数据库进行的修改操作,包括数据的插入、更新、删除等。这些日志信息被写入到当前的重做日志文件中,形成一个完整的变更历史记录,重做日志文件默认存在2个,都以log为扩展名,数据将以循环的方式写入到重做日志文件中。
存储在磁盘上,形成一个完整的变更历史记录。当数据库发生故障或数据丢失时,管理员可以通过这些归档日志来恢复数据库到某个特定的时间点或事务状态,从而确保数据的完整性和一致性。
归档日志是数据库在开启归档模式后才会有的日志文件,在开启归档模式后数据库会将重做日志同时写入到联机日志文件和归档日志文件中,否则只会写入到联机日志文件中。归档日志主要用于在数据库发生故障或数据丢失时,通过归档日志来恢复数据库到某个时间点的一致性状态。当数据库发生故障或数据丢失时,管理员可以通过这些归档日志来恢复数据库到某个特定的时间点或事务状态,从而确保数据的完整性和一致性。
归档备份操作会按指定条件将当前数据库的本地归档日志文件整理成一个备份集保存起来。 这里说的数据库归档日志文件指的是与当前数据库db_magic、permanent_magic相同的归档文件,如果不一致则不会进行备份。
这里提供了3类备份条件、all、lsn范围、时间范围,根据需要使用即可,这里的notBackedUpSpec配置项是用于控制备份冗余量的,适当运用可实现类似增量备份的效果,减少归档备份集大小。
例如,备份所有归档日志到/dm8/backup/test1中,此备份集不会包含已备份过3次的归档日志。这样连续备份后只会存在2份归档日志副本。
与数据还原的区别是,归档日志文件还原是直接将备份集中包含的归档日志还原到指定目录中,需要在脱机状态下执行。
FROM BACKUPSET ‘xxx’:指定用于还原的备份集路径
TO ARCHIVEDIR:指定将备份集中的归档日志还原到哪个路径下,或使用TO DATABASE来还原到实例归档路径
OVERWRITE <level>: 此配置用于设置归档还原时的文件冲突处理方式
基本操作流程如下:
准备工作
确认归档备份文件的完整性和可用性。
停止数据库服务
在进行归档还原操作前,需要先停止数据库服务,确保数据库处于关闭状态。
进行归档还原
模拟数据丢失利用全备加归档恢复的场景:
创建作业,每隔3分钟生成数据和新的归档日志
进行全备
表中包含3条数据
备份结果
模拟数据异常,手动还原到指定时间点
当前已有数据
当前已有的归档日志
执行一次归档备份
删掉MAIN.DBF以及部分归档日志使数据库故障
停掉数据库来进行脱机还原
systemctl stop DmServiceDMSERVER
将归档备份还原到临时目录测试(也可以直接还原到实例的归档目录)
归档日志还原结果
使用全备+加归档还原到2024-04-25 13:16:00
此时恢复的数据全部来源于全备以及指定目录中的归档日志。
如果需要进一步利用本地没来得及备份的归档日志或没来得及从联机日志写入归档的数据,那就还需要在还原前执行归档修复repair archivelog database '/opt/dmdbms/data/DAMENG/dm.ini'
并在update db_magic之前继续执行(此处执行实例的归档目录)recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/data/DAMENG/arch' until time '2024-04-25 13:16:00'。
启动数据库查看结果,可以看到此时数据已经恢复到13:14:49秒插入的数据,即13:16:00之前最新的数据
其他注意
为了保证数据库故障后能最大限度恢复利用归档恢复数据,需要设置一个合适的归档备份频率,避免在设置了归档大小上限的前提下归档日志循环利用导致的归档数据覆盖丢失。
文章
阅读量
获赞