外观
DM 全量备份
概念与定义
全量备份是指对数据库中所有数据进行完整的备份操作,包括数据文件、控制文件、日志文件等关键组件。全量备份是数据库备份策略的基础,其他类型的备份(如增量备份、日志备份)通常都依赖于全量备份。
1.2 备份原理
DM数据库的全量备份基于数据库的一致性状态,通过读取数据库的所有数据块并将其写入备份文件来实现。在备份过程中,DM数据库会自动处理事务一致性,确保备份文件中包含完整的事务数据。
1.3 适用场景
- 首次实施备份策略时
- 定期(如每周)进行完整备份
- 数据库结构发生重大变化后
- 进行重要操作前的预防性备份
全量备份类型
2.1 物理备份与逻辑备份
2.1.1 物理备份
- 定义:直接备份数据库的物理文件
- 优点:备份速度快,恢复效率高,占用空间小
- 工具:dmrman、dmbackup
- 适用场景:大型数据库,快速恢复需求
2.1.2 逻辑备份
- 定义:备份数据库的逻辑对象,如表、视图、存储过程等
- 优点:备份文件可读性强,可跨版本恢复
- 工具:dexp
- 适用场景:小型数据库,跨版本迁移
2.2 在线备份与离线备份
2.2.1 在线备份
- 定义:数据库处于运行状态时进行的备份
- 优点:不影响业务运行
- 要求:数据库需处于归档模式
- 工具:dmrman、dmbackup、SQL命令
2.2.2 离线备份
- 定义:数据库关闭时进行的备份
- 优点:备份过程更安全,资源消耗小
- 适用场景:维护窗口,数据库迁移
- 工具:dmrman
全量备份操作方法
3.1 使用 dmrman 工具进行全量备份
3.1.1 离线全量备份
bash
# 1. 关闭数据库
./DmServiceDMSERVER stop
# 2. 启动 dmrman
./dmrman
# 3. 执行全量备份
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO 'FULL_BACKUP_20260113' BACKUPSET '/opt/dmdbms/backup/FULL_BACKUP_20260113';
# 4. 退出 dmrman
EXIT;
# 5. 启动数据库
./DmServiceDMSERVER start3.1.2 在线全量备份
bash
# 1. 确保数据库处于归档模式
# 2. 启动 dmrman
./dmrman
# 3. 执行在线全量备份
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO 'ONLINE_FULL_20260113' BACKUPSET '/opt/dmdbms/backup/ONLINE_FULL_20260113';
# 4. 退出 dmrman
EXIT;3.2 使用 dmbackup 工具进行全量备份
bash
# 在线全量备份
./dmbackup backup -t full -d /opt/dmdbms/data/DAMENG -b /opt/dmdbms/backup/DM_FULL_20260113 -c "FULL BACKUP FOR DAMENG"3.3 使用 SQL 命令进行全量备份
sql
-- 连接数据库
disql SYSDBA/SYSDBA@localhost:5236
-- 执行全量备份
BACKUP DATABASE FULL TO 'SQL_FULL_20260113' BACKUPSET '/opt/dmdbms/backup/SQL_FULL_20260113';
-- 退出
EXIT;3.4 使用 DM 管理工具进行备份
- 登录 DM 管理工具
- 选择要备份的数据库实例
- 右键点击"备份恢复" -> "新建备份"
- 选择"全量备份"类型
- 设置备份名称和路径
- 点击"开始备份"按钮
- 等待备份完成,查看备份结果
全量备份配置参数
4.1 备份工具参数
4.1.1 dmrman 主要参数
FULL:指定全量备份类型TO:指定备份名称BACKUPSET:指定备份集路径COMPRESSED:启用备份压缩ENCRYPTED:启用备份加密WITH CHECKSUM:启用校验和验证
4.1.2 dmbackup 主要参数
-t full:指定全量备份-d:数据库路径-b:备份集路径-c:备份描述-s:启用压缩-e:启用加密-v:启用校验和
4.2 数据库配置参数
| 参数名 | 默认值 | 说明 |
|---|---|---|
BAK_PATH | ./bak | 默认备份路径 |
BAK_USE_AP | 0 | 是否使用异步IO进行备份 |
BAK_BUF_SIZE | 10 | 备份缓冲区大小(MB) |
BAK_WORK_THREAD | 4 | 备份工作线程数 |
全量备份最佳实践
5.1 备份策略设计
5.1.1 备份频率
- 核心业务数据库:每周一次全量备份
- 非核心业务数据库:每两周或每月一次全量备份
- 根据数据变化率调整备份频率
5.1.2 备份时间
- 选择业务低峰期进行备份
- 避免在系统维护窗口之外进行大型备份
- 考虑备份完成后的数据验证时间
5.2 备份存储管理
5.2.1 存储介质
- 优先使用高速存储设备(如SSD)进行备份
- 备份文件应存储在与生产数据库不同的物理位置
- 考虑使用磁带库等离线存储设备进行长期归档
5.2.2 备份文件命名规范
{数据库名}_{备份类型}_{备份时间}_{备份标识}.bak
示例:DAMENG_FULL_20260113_001.bak5.2.3 备份保留策略
- 保留最近3-6个月的全量备份
- 根据业务需求和法规要求调整保留期限
- 定期清理过期备份文件,释放存储空间
5.3 备份验证
5.3.1 备份完整性检查
bash
# 使用 dmrman 验证备份集
./dmrman
CHECK BACKUPSET '/opt/dmdbms/backup/FULL_BACKUP_20260113';5.3.2 定期恢复测试
- 每月至少进行一次全量备份恢复测试
- 记录恢复时间和过程中遇到的问题
- 根据测试结果调整备份策略
常见问题与解决方案
6.1 备份失败问题
6.1.1 问题:备份过程中出现"空间不足"错误
解决方案:
- 检查备份目标路径的可用空间
- 启用备份压缩功能
- 调整备份保留策略,清理过期备份
6.1.2 问题:在线备份失败,提示"数据库未处于归档模式"
解决方案:
- 启用数据库归档模式
- 重启数据库使配置生效
- 重新执行备份操作
6.2 备份性能问题
6.2.1 问题:备份速度过慢
解决方案:
- 增加备份缓冲区大小(调整
BAK_BUF_SIZE参数) - 增加备份工作线程数(调整
BAK_WORK_THREAD参数) - 使用更快的存储设备
- 启用异步IO备份(设置
BAK_USE_AP=1)
6.2.2 问题:备份过程影响业务性能
解决方案:
- 调整备份优先级
- 增加数据库共享内存
- 在业务低峰期执行备份
版本差异说明
7.1 DM 7 与 DM 8 的差异
| 特性 | DM 7 | DM 8 |
|---|---|---|
| 备份压缩算法 | 基本压缩 | 高级压缩算法,压缩率更高 |
| 备份加密 | 支持 | 支持更安全的加密算法 |
| 备份并行度 | 有限支持 | 全面支持并行备份 |
| 增量备份基于 | 仅基于全量备份 | 支持基于全量或增量备份 |
7.2 不同版本的注意事项
- DM 7.6 之前的版本不支持在线增量备份
- DM 8.0 开始支持备份集的合并功能
- 升级数据库版本后,建议重新执行全量备份
监控与管理
8.1 备份任务监控
8.1.1 使用系统视图监控
sql
-- 查看备份历史
SELECT * FROM V$BACKUP_HISTORY;
-- 查看备份集信息
SELECT * FROM V$BACKUPSET;
-- 查看备份进度
SELECT * FROM V$BACKUP_PROGRESS;8.1.2 使用 DM 管理工具监控
- 登录 DM 管理工具
- 选择目标数据库实例
- 点击"备份恢复" -> "备份历史"
- 查看备份任务的状态、进度和结果
8.2 备份集管理
8.2.1 查看备份集信息
bash
./dmrman
LIST BACKUPSET '/opt/dmdbms/backup/FULL_BACKUP_20260113';8.2.2 删除备份集
bash
./dmrman
DELETE BACKUPSET '/opt/dmdbms/backup/FULL_BACKUP_20260113';- 定期验证备份完整性:使用校验和验证备份文件的完整性,定期进行恢复测试
- 优化备份性能:调整备份参数,选择合适的备份时间和存储介质
- 安全存储备份文件:使用加密、压缩等手段保护备份文件,存储在安全的位置
- 监控备份任务:实时监控备份进度和状态,及时处理备份失败情况
- 制定恢复计划:基于全量备份制定详细的恢复流程,确保在需要时能够快速恢复数据
- 定期更新备份策略:根据业务变化和数据库增长情况,定期调整备份策略
常见问题(FAQ)
Q1: 全量备份会锁定数据库吗?
A1: 在线全量备份不会锁定整个数据库,只会对备份过程中涉及的数据对象进行短暂的锁操作。离线全量备份需要关闭数据库,因此会影响业务运行。
Q2: 全量备份和增量备份有什么区别?
A2: 全量备份包含数据库的所有数据,而增量备份只包含自上次备份以来变化的数据。全量备份是备份策略的基础,增量备份依赖于全量备份。
Q3: 如何选择全量备份的频率?
A3: 全量备份的频率应根据数据变化率、业务重要性和存储成本来确定。一般建议核心业务数据库每周一次全量备份,非核心业务数据库每两周或每月一次。
Q4: 备份文件需要压缩吗?
A4: 建议启用备份压缩,可以显著减少备份文件的大小,节省存储空间和传输时间。DM数据库提供了高效的压缩算法,对备份性能影响较小。
Q5: 如何验证全量备份的有效性?
A5: 可以通过以下方法验证:
- 使用校验和验证备份文件的完整性
- 定期进行恢复测试,确保备份文件可以成功恢复
- 检查备份日志,确认备份过程中没有错误
Q6: 全量备份可以跨版本恢复吗?
A6: 一般情况下,不建议跨大版本进行恢复。建议在升级数据库版本后重新执行全量备份,以确保备份文件与当前数据库版本兼容。
Q7: 如何提高全量备份的速度?
A7: 可以通过以下方法提高备份速度:
- 增加备份缓冲区大小和工作线程数
- 使用更快的存储设备
- 启用异步IO备份
- 启用并行备份(DM 8+)
- 在业务低峰期执行备份
Q8: 备份文件应该存储在哪里?
A8: 备份文件应存储在与生产数据库不同的物理位置,最好是离线存储介质或远程存储系统。同时,应考虑备份文件的安全性和可访问性,制定合理的备份保留策略。
