归档还原理解
1、核心组件概念
1.1、表空间与数据文件
DM8表空间类型主要包括:SYSTEM、ROLL、TEMP、MAIN、HMAIN以及用户自定义表空间。
注意:不支持对TEMP(临时)表空间和HMAIN(HUGE表空间)进行备份与还原。
1.2、重做日志
REDO日志:记录所有物理页的修改,包括操作类型、文件号、页号等详细信息。所有DML和DDL操作最终都会转化为对数据页的修改。
默认存在两个联机重做日志文件:DAMENG01.log和 DAMENG02.log。
1.3、归档日志
在归档模式下,联机REDO日志会被持续拷贝到归档目录,生成归档日志文件
开启归档模式会对性能有轻微影响,但能保证数据安全,是实现完整备份还原的基础。
1.4、PWR记录
PWR是REDO日志中的一种特殊记录,记录了数据页回写磁盘时的表空间ID、文件ID、页号及LSN信息。
作用:在数据库故障恢复时,根据PWR记录可快速判断数据页是否已写回磁盘,避免无用IO,大幅提升恢复速度。
1.5、检查点与日志序列号
检查点:负责将缓冲区中的脏页按顺序写入磁盘,并调整CKPT_LSN值,释放日志空间。
日志序列号:用于标识日志记录的顺序
1.6、备份集:一次完整备份称为一个备份集,它是一个目录
包含:备份片:存储实际备份数据(.bak文件)。
元数据文件:存储备份集的描述信息(.meta文件),包括备份集信息、源库参数、备份文件列表等。
2、备份、还原与恢复定义
备份:将数据库数据经过处理、压缩后写入备份文件,并将相关信息写入元数据文件的过程,就是数据的实体文件。
还原:将备份集中的数据写回到目标库相应数据文件的过程。还原后的数据通常处于非一致状态,需要后续恢复操作。
恢复:重做归档日志,使还原后的数据库达到数据一致性状态的过程。未经恢复的数据库不可用。
3、归档机制
3.1、原理解释
本地归档:将REDO日志写入数据库实例所在节点的本地磁盘归档文件的过程。归档日志不可覆盖,但可通过系统函数按时间或LSN删除。
远程归档:将归档目录设置在远程节点,专用于DMDSC(达梦数据共享集群)环境,提供更高的可用性。
归档切换:强制将已写入联机日志但未归档的REDO日志写入归档文件,确保归档完整性。 命令:ALTER DATABASE ARCHIVELOG CURRENT;(或 ALTER SYSTEM ARCHIVE LOG CURRENT;/ ALTER SYSTEM SWITCH LOGFILE;)
归档修复:在数据库异常关闭后,扫描联机日志文件,将未及时归档的REDO日志重新写入归档文件,保证归档链的连续。
3.2、备份原理
关键LSN:CKPT_LSN:检查点LSN。BEGIN_LSN/END_LSN:备份开始/结束时的LSN。FILE_LSN:文件LSN。
3.3、PWR优化
通过扫描归档日志中的PWR记录,直接比较日志LSN与基备份的BEGIN_LSN,快速确定需要备份的增量数据页,提升增量备份效率。
在备份语句中指定 USE PWR来启用,默认不启用。
4、还原与恢复原理
4.1、还原恢复:就是拿着一个时间点的备份文件,用归档文件里的操作进行重演
应用场景分析
库级:最彻底的恢复方式,适用于严重物理或逻辑损坏。
表空间级:适用于某个表空间内多个表数据丢失的逻辑损坏。
表级:适用于单表数据丢失或表迁移,支持联机操作。
归档备份:用于保护归档日志,可用于数据修复。
完全/增量备份:基础数据量大、修改不频繁时,采用“完全备份+增量备份”策略,定期做新的完全备份。
4.2、恢复方式选择:
从备份集恢复:适用于联机备份集(且备份了日志),恢复到备份时间点。
从归档恢复:所有备份集均适用,可恢复到指定时间点或LSN,灵活性最高。所有恢复操作完成后,均需更DB_MAGIC。
4.3、具体方法
DM8备份还原方法
1、配置归档:手动修改配置文件。
注意:执行联机库备份、表空间备份前,数据库必须处于归档模式。
2、联机执行:SQL语句进行备份
数据库备份
完全备份:BACKUP DATABASE BACKUPSET ‘/path/to/bak_full01’;
增量备份:BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/path/to/base_backup’ BACKUPSET ‘/path/to/bak_incr’;
3、表空间备份:SQL语句进行备份
完全备份:BACKUP TABLESPACE MAIN BACKUPSET ‘/path/to/ts_bak’;
增量备份:需指定基备份:BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET ‘/path/to/base_backup’ BACKUPSET ‘/path/to/ts_incr’;
注意:MOUNT状态、MPP和DSC环境不允许表空间备份。
4、表备份:SQL语句进行备份
仅为联机完全备份,无需备份日志,无增量概念。
BACKUP TABLE schema_name.table_name BACKUPSET ‘/path/to/tab_bak’;
注意:MOUNT状态、MPP和DSC环境不允许表备份。
文章
阅读量
获赞
