数据库组成
第一章 基本概念
1.1 表空间与数据文件
DM8数据库支持多种表空间类型,每种类型具有特定的功能和限制:
表空间分类:
SYSTEM表空间:存储系统字典和元数据信息
ROLL表空间:管理事务回滚段,保证数据一致性
TEMP表空间:处理临时数据和排序操作(不支持TEMP表空间备份还原)
MAIN表空间:默认用户表空间
HMAIN表空间:HUGE表专用存储空间(不支持HMAIN表空间备份还原)
用户自定义表空间:用户根据业务需求创建的表空间
1.2 重做日志(REDO日志)
重做日志是数据库恢复机制的核心组件,具有以下特性:
日志功能:
记录所有物理页的修改操作
包含操作类型、文件编号、页号、页内偏移等详细信息
DML操作(INSERT/DELETE/UPDATE)和DDL操作最终都转化为数据页修改
默认配置:
DM8默认创建两个联机重做日志文件:DAMENG01.log、DAMENG02.log
采用循环写入机制,确保日志文件的连续性
1.3 归档日志
归档模式为数据库提供了更高级别的数据保护:
生成机制:
在归档模式下,联机REDO日志被连续拷贝到归档目录
归档日志文件以时间戳命名,如:ARCHIVE_LOCAL1_20160217171507968.log
性能影响:
开启归档模式会对系统性能产生一定影响
提供更安全的数据保护,支持时间点恢复
1.4 PWR记录
PWR(Page Written Record)是重做日志中的特殊记录类型:
记录内容:
表空间ID、文件ID、数据页号和当前LSN信息
每次数据刷盘操作都会生成对应的PWR日志
优化作用:
提升系统故障恢复速度
避免无用I/O操作,快速判断数据是否已写入磁盘
1.5 检查点与日志序列号
检查点和LSN机制共同保证数据的一致性:
检查点功能:
按数据修改顺序将缓冲区中的脏页写入磁盘
动态调整CKPT_LSN值,释放日志空间
LSN(日志序列号):
表示REDO日志产生的顺序
系统为每个REDO日志分配唯一的LSN值
1.6 备份集
备份集是备份操作的基本单位,具有完整的组织结构:
备份集组成:
备份集目录/
├── 备份片文件(.bak) # 存储备份数据
└── 元数据文件(.meta) # 存储备份信息
元数据内容:
备份集本身的相关信息
备份源库的建库参数信息
备份数据文件信息
备份片文件信息
第二章 备份还原核心概念
2.1 备份
备份是将数据经过处理后写入备份文件的过程:
备份分类标准:
按组织形式:物理备份 vs 逻辑备份
按数据库状态:联机备份 vs 脱机备份
按粒度大小:
库备份
表空间备份
归档备份(支持联机和脱机)
表备份
按数据一致性:一致性备份 vs 非一致性备份
按数据完整性:完全备份 vs 增量备份
归档备份特性:
将归档文件备份到备份片
必要时可使用归档备份集还原归档
2.2 还原
还原是将备份数据写回到目标数据库的过程:
还原特性:
还原后的数据通常处于非一致性状态
需要执行恢复操作才能使数据一致
分类标准与备份类似
2.3 恢复
恢复是应用归档日志使数据达到一致状态的过程:
恢复类型:
更新DB_MAGIC:直接更新数据库标识
从备份集恢复:利用备份集中的日志
从归档恢复:重做本地归档日志
恢复灵活性:
支持恢复到最新状态
支持恢复到指定时间点或LSN值
第三章 备份还原技术原理
3.1 归档机制
3.1.1 本地归档
工作原理:
Redo日志写入联机日志文件后,由归档线程写入本地归档
相对于直接拷贝数据文件,备份集更小,I/O效率更高
管理工具:
sql
– 按时间删除归档日志
SF_ARCHIVELOG_DELETEBEFORE_TIME(time_val);
– 按LSN删除归档日志
SF_ARCHIVELOG_DELETEBEFORE_LSN(lsn_val);
3.1.2 远程归档
配置方式:
共享本地归档的远程归档
通过MAL发送的远程归档
与本地归档区别:
主要区别在于REDO日志写入的位置
远程归档将日志写入其他节点的指定目录
3.1.3 归档切换
功能说明:
确保已写入联机日志但未写入归档的REDO日志完整归档
保证归档日志备份的完整性
切换语句:
sql
– 以下三条语句功能相同,任选其一执行
ALTER DATABASE ARCHIVELOG CURRENT;
ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SYSTEM SWITCH LOGFILE;
3.1.4 归档修复
应用场景:
数据库异常关闭导致部分REDO日志未写入归档
归档内容比实际可恢复数据少
修复流程:
收集本地归档日志文件
扫描获取最后一个有效RLOG_PKG偏移
截取有效内容,创建新的归档日志文件
扫描联机日志,拷贝缺失的REDO日志
3.2 备份技术
3.2.1 备份内容关键指标
CKPT_LSN:检查点LSN,标识已持久化的修改
BEGIN_LSN:备份开始点(CKPT_LSN+1)
END_LSN:备份结束点
FILE_LSN:文件级别的LSN值
3.2.2 加密与压缩
压缩配置:
压缩级别:1-9级,默认级别1
级别越高压缩比越高,但压缩速度越慢
加密配置:
支持简单加密和完全加密
可指定加密算法
先压缩后加密的处理顺序
增量备份加密要求:
必须与基备份使用相同的加密算法和密码
3.2.3 PWR优化
优化原理:
通过扫描PWR日志比较LSN值与基备份BEGIN_LSN
直接确定需要备份的数据页,提高增量备份效率
启用方式:
sql
– 在备份语句中指定USE PWR启用优化
BACKUP DATABASE INCREMENT USE PWR WITH BACKUPDIR ‘/backup’;
3.2.4 并行备份
支持范围:
库级、归档备份、表空间级并行备份
配置参数:
PARALLEL:指定并行数,默认4
最大并行数受目标数据文件数量限制
并行数为0或1时按非并行处理
备份结果结构:
备份集目录/
├── 主备份集目录
└── 子备份集目录(多个)
3.3 还原与恢复技术
3.3.1 还原过程
数据还原:
将数据页从备份集写回到目标数据文件
库还原需要准备匹配的目标库
表空间还原只能在源库上执行
归档还原流程:
读取元数据文件,校验备份集有效性
收集并过滤需要还原的归档文件
根据OVERWRITE参数处理已存在文件
执行还原操作(解压缩、解密等处理)
3.3.2 恢复过程
备份集恢复场景:
备份集包含归档日志:生成临时归档文件并重做
备份集不包含归档日志:重做本地归档的指定段
无日志需要重做:直接更新DB_MAGIC
3.3.3 解密和解压缩
解密流程:
验证用户输入的加密密码和算法
读取备份数据后执行解密操作
写入目标文件前完成解密
解压缩:
自动进行,无需用户干预
处理顺序:先解密后解压缩
3.3.4 并行还原
使用条件:
仅支持并行备份集的还原
使用目标备份集的并行数
支持非并行还原(指定NOT PARALLEL)
3.4 介质管理层(MML)
SBT接口架构:
DM8自定义的API函数层
负责备份数据在存储介质上的实际读写操作
存储介质支持:
磁盘介质(DISK):dmsbt(Windows:dmsbt.dll,Linux:dmsbt.so)
磁带介质(TAPE):dmsbtex(Windows:dmsbt.ex,Linux:dmsbtex.so)
第三方集成:
只需替换相应的dmsbtex文件即可集成第三方存储
第四章 应用场景分析
4.1 备份还原方式选择
4.1.1 库级备份还原
适用场景:
物理损坏修复
严重逻辑损坏或表空间被删除
要求目标库脱机且正常退出
工具要求: 需使用DMRMAN工具完成
4.1.2 表空间级备份还原
适用场景:
表空间内多个表数据逻辑损坏
支持从库级备份中还原表空间
4.1.3 归档备份还原
优势:
利用归档文件修复数据
建议保留尽量多的归档文件
4.1.4 表级备份还原
适用场景:
个别表数据逻辑损坏
重要表的频繁备份
表数据迁移操作
特点: 联机执行,不影响其他表正常工作
4.1.5 完全备份与增量备份
增量备份策略:
基础数据量大、修改不频繁时建议使用
定期重新执行完全备份(如每N次增量备份后)
4.2 恢复方式选择
4.2.1 从备份集恢复
适用条件:
备份集为联机备份集(LEVEL=0)
备份时包含日志(未指定WITHOUT LOG参数)
只需恢复到备份时状态
4.2.2 从归档恢复
灵活性:
所有备份集都支持
可恢复到指定LSN或时间点
不指定则恢复到最新状态
最终步骤: 所有恢复操作后都需要更新DB_MAGIC
第五章 备份还原实践方法
5.1 联机SQL备份
5.1.1 前置条件
必须配置归档模式
系统处于OPEN状态
5.1.2 数据库备份
完全备份:
sql
– 基本完全备份
BACKUP DATABASE BACKUPSET ‘/backup/bak_full01’;
– 完整语法(FULL参数可省略)
BACKUP DATABASE FULL BACKUPSET ‘/backup/full_bak_01’;
– DDL_CLONE参数:只备份定义不备份数据
BACKUP DATABASE FULL DDL_CLONE BACKUPSET ‘/backup/structure_only’;
增量备份:
sql
– 自动搜索基备份
BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/backup/base’;
– 指定基备份
BACKUP DATABASE INCREMENT BASE ON BACKUPSET ‘/backup/full_bak_01’
BACKUPSET ‘/backup/inc_bak_01’;
5.1.3 表空间备份
完全备份:
sql
BACKUP TABLESPACE MAIN BACKUPSET ‘/backup/ts_main_full’;
增量备份:
sql
BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR ‘/backup/base’
BACKUPSET ‘/backup/ts_main_inc’;
限制条件: MOUNT状态/MPP环境不允许表空间备份
5.1.4 高级备份选项
完整备份示例:
sql
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ‘/backup/bak_20231220’
DEVICE TYPE DISK
BACKUPINFO ‘完整数据库备份’
MAXPIECESIZE 300
COMPRESSED LEVEL 5
PARALLEL 6;
加密备份:
sql
BACKUP DATABASE BACKUPSET ‘/backup/encrypted_backup’
IDENTIFIED BY “password123”
WITH ENCRYPTION 2
ENCRYPT WITH RC4;
5.1.5 表备份
特性:
均为联机完全备份
不需要备份归档日志
不支持增量备份
基本语法:
sql
BACKUP TABLE tab_01 BACKUPSET ‘/backup/table_bak’;
限制: 备份状态/MOUNT状态/MPP环境不允许表备份
5.1.6 归档备份
前提条件: 服务器必须配置归档
备份语法:
sql
BACKUP ARCHIVE LOG ALL BACKUPSET ‘/backup/arch_bak’;
5.1.7 跟踪日志
配置示例:
sql
BACKUP DATABASE BACKUPSET ‘/backup/with_trace’
TRACE FILE ‘/logs/backup_trace.log’
TRACE LEVEL 2;
参数说明:
TRACE FILE:跟踪日志文件路径
TRACE LEVEL:1-不启用,2-启用(默认1)
5.2 备份管理
5.2.1 备份信息视图
DM8提供完整的备份监控视图体系:
视图名称
功能描述
V$BACKUPSET
备份集基本信息
V$BACKUPSET_DBINFO
备份集的数据库信息
V$BACKUPSET_DB
备份集中数据库文件信息
V$BACKUPSET_ARCH
备份集的归档信息
V$BACKUPSET_BKP
备份片的详细信息
V$BACKUPSET_SEARCH_DIRS
备份集搜索目录
V$BACKUPSET_TABLE
备份表信息
V$BACKUPSET_INDEX
备份索引信息
V$BACKUPSET_SUBS
并行子备份集信息
5.3 还原操作
5.3.1 工具选择
Disql工具:支持表还原和库还原
DMRMAN工具:表空间还原必须使用
5.3.2 表空间还原条件
表空间必须处于完整状态
支持从表空间完全/增量备份或数据库备份还原
5.3.3 表还原特性
不需要配置归档
表处于OPEN状态时可执行
需要恢复操作完成数据一致性
第六章 最佳实践建议
6.1 备份策略设计
完全备份频率:
生产环境:每周至少一次完全备份
开发测试环境:根据变更频率调整
增量备份策略:
数据变更频繁:每天执行增量备份
结合业务低峰期安排备份窗口
6.2 恢复演练
定期进行恢复测试,验证备份有效性
制定详细的灾难恢复预案
记录恢复时间和成功率的监控指标
6.3 性能优化建议
备份性能:
根据存储性能调整并行度
使用压缩减少网络传输和存储占用
合理设置备份片大小,避免文件过大
恢复性能:
预先准备恢复环境,减少等待时间
根据业务优先级制定恢复顺序
监控恢复进度,及时调整资源分配
文章
阅读量
获赞
