Skip to content

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 start

3.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 管理工具进行备份

  1. 登录 DM 管理工具
  2. 选择要备份的数据库实例
  3. 右键点击"备份恢复" -> "新建备份"
  4. 选择"全量备份"类型
  5. 设置备份名称和路径
  6. 点击"开始备份"按钮
  7. 等待备份完成,查看备份结果

全量备份配置参数

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_AP0是否使用异步IO进行备份
BAK_BUF_SIZE10备份缓冲区大小(MB)
BAK_WORK_THREAD4备份工作线程数

全量备份最佳实践

5.1 备份策略设计

5.1.1 备份频率

  • 核心业务数据库:每周一次全量备份
  • 非核心业务数据库:每两周或每月一次全量备份
  • 根据数据变化率调整备份频率

5.1.2 备份时间

  • 选择业务低峰期进行备份
  • 避免在系统维护窗口之外进行大型备份
  • 考虑备份完成后的数据验证时间

5.2 备份存储管理

5.2.1 存储介质

  • 优先使用高速存储设备(如SSD)进行备份
  • 备份文件应存储在与生产数据库不同的物理位置
  • 考虑使用磁带库等离线存储设备进行长期归档

5.2.2 备份文件命名规范

{数据库名}_{备份类型}_{备份时间}_{备份标识}.bak
示例:DAMENG_FULL_20260113_001.bak

5.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 7DM 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 管理工具监控

  1. 登录 DM 管理工具
  2. 选择目标数据库实例
  3. 点击"备份恢复" -> "备份历史"
  4. 查看备份任务的状态、进度和结果

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';
  1. 定期验证备份完整性:使用校验和验证备份文件的完整性,定期进行恢复测试
  2. 优化备份性能:调整备份参数,选择合适的备份时间和存储介质
  3. 安全存储备份文件:使用加密、压缩等手段保护备份文件,存储在安全的位置
  4. 监控备份任务:实时监控备份进度和状态,及时处理备份失败情况
  5. 制定恢复计划:基于全量备份制定详细的恢复流程,确保在需要时能够快速恢复数据
  6. 定期更新备份策略:根据业务变化和数据库增长情况,定期调整备份策略

常见问题(FAQ)

Q1: 全量备份会锁定数据库吗?

A1: 在线全量备份不会锁定整个数据库,只会对备份过程中涉及的数据对象进行短暂的锁操作。离线全量备份需要关闭数据库,因此会影响业务运行。

Q2: 全量备份和增量备份有什么区别?

A2: 全量备份包含数据库的所有数据,而增量备份只包含自上次备份以来变化的数据。全量备份是备份策略的基础,增量备份依赖于全量备份。

Q3: 如何选择全量备份的频率?

A3: 全量备份的频率应根据数据变化率、业务重要性和存储成本来确定。一般建议核心业务数据库每周一次全量备份,非核心业务数据库每两周或每月一次。

Q4: 备份文件需要压缩吗?

A4: 建议启用备份压缩,可以显著减少备份文件的大小,节省存储空间和传输时间。DM数据库提供了高效的压缩算法,对备份性能影响较小。

Q5: 如何验证全量备份的有效性?

A5: 可以通过以下方法验证:

  1. 使用校验和验证备份文件的完整性
  2. 定期进行恢复测试,确保备份文件可以成功恢复
  3. 检查备份日志,确认备份过程中没有错误

Q6: 全量备份可以跨版本恢复吗?

A6: 一般情况下,不建议跨大版本进行恢复。建议在升级数据库版本后重新执行全量备份,以确保备份文件与当前数据库版本兼容。

Q7: 如何提高全量备份的速度?

A7: 可以通过以下方法提高备份速度:

  1. 增加备份缓冲区大小和工作线程数
  2. 使用更快的存储设备
  3. 启用异步IO备份
  4. 启用并行备份(DM 8+)
  5. 在业务低峰期执行备份

Q8: 备份文件应该存储在哪里?

A8: 备份文件应存储在与生产数据库不同的物理位置,最好是离线存储介质或远程存储系统。同时,应考虑备份文件的安全性和可访问性,制定合理的备份保留策略。