1. 首页 > 国产数据库教程 > 达梦DM教程 > 正文

DM教程FG041-达梦数据库备份恢复最佳实践

Part01-基础概念与理论知识

1.1 备份恢复概述

DM数据库的备份恢复是确保数据安全的重要手段,主要包括数据备份和数据恢复两个方面。数据备份是将数据库中的数据复制到其他存储介质的过程,数据恢复是将备份的数据还原到数据库的过程。通过定期的备份操作,可以在数据丢失或损坏时快速恢复数据,确保业务的连续性。

1.2 备份类型与特点

DM数据库支持多种备份类型,包括:

  • 物理备份:直接备份数据库的物理文件,包括数据文件、日志文件等。
  • 逻辑备份:备份数据库的逻辑结构和数据,包括表结构、数据等。
  • 全量备份:备份数据库的全部数据。
  • 增量备份:备份自上次备份以来变化的数据。
  • 差异备份:备份自上次全量备份以来变化的数据。
  • 热备份:在数据库运行状态下进行的备份。
  • 冷备份:在数据库关闭状态下进行的备份。

Part02-生产环境规划与建议

2.1 备份策略制定

制定合理的备份策略是确保数据安全的关键。备份策略应包括以下内容:

  • 备份类型:根据数据重要性和业务需求选择合适的备份类型。
  • 备份频率:根据数据变化频率和业务需求确定备份频率。
  • 备份时间:选择业务低峰期进行备份,减少对业务的影响。
  • 备份存储:选择安全可靠的存储介质,确保备份数据的安全。
  • 备份验证:定期验证备份的有效性,确保备份数据可以正常恢复。

2.2 备份存储规划

备份存储规划应考虑以下因素:

  • 存储介质:选择性能稳定、容量充足的存储介质,如磁盘、磁带等。
  • 存储位置:将备份数据存储在与数据库服务器不同的位置,避免单点故障。
  • 存储容量:根据备份数据量和保留期限,规划足够的存储容量。
  • 存储安全:采取适当的安全措施,如加密、访问控制等,确保备份数据的安全。

风哥提示:备份数据应定期进行异地备份,确保在本地发生灾难时可以恢复数据。

Part03-生产环境项目实施方案

3.1 备份方案设计

备份方案设计应包括以下内容:

  1. 确定备份类型和频率:根据业务需求确定全量备份、增量备份和差异备份的频率。
  2. 选择备份工具:根据备份需求选择合适的备份工具,如dmrman、DM管理工具等。
  3. 配置备份参数:根据备份需求配置备份参数,如备份路径、压缩方式、并行度等。
  4. 编写备份脚本:编写自动化备份脚本,减少人工操作,提高备份效率。
  5. 设置备份监控:设置备份监控,及时发现并解决备份过程中的问题。

3.2 恢复方案设计

恢复方案设计应包括以下内容:

  1. 确定恢复场景:根据可能的故障场景,制定相应的恢复方案。
  2. 准备恢复工具:准备必要的恢复工具,如dmrman、DM管理工具等。
  3. 编写恢复脚本:编写自动化恢复脚本,提高恢复效率。
  4. 设置恢复测试:定期进行恢复测试,确保恢复方案的有效性。
  5. 制定恢复流程:制定详细的恢复流程,确保恢复过程的顺利进行。

Part04-生产案例与实战讲解

4.1 全量备份与恢复

全量备份是备份数据库的全部数据,是最基础的备份方式。以下是具体的操作步骤:

4.1.1 在线全量备份

# 使用dmrman进行在线全量备份
[dmdba@fgedu ~]$ /dm/app/bin/dmrman
RMAN> backup database ‘/dm/fgdata/fgedudb/dm.ini’ full backupset ‘/dm/backup/full_backup_20240101’ compressed;
# 输出信息
backup database ‘/dm/fgdata/fgedudb/dm.ini’ full backupset ‘/dm/backup/full_backup_20240101’ compressed;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Begin backup database compress…
Check backupset ‘/dm/backup/full_backup_20240101’
Backup set path: /dm/backup/full_backup_20240101
Backing up database (/dm/fgdata/fgedudb/dm.ini)…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Backup successfully!
time used: 00:00:00.847

4.1.2 全量恢复

# 使用dmrman进行全量恢复
[dmdba@fgedu ~]$ /dm/app/bin/dmrman
RMAN> restore database ‘/dm/fgdata/fgedudb/dm.ini’ from backupset ‘/dm/backup/full_backup_20240101’;
# 输出信息
restore database ‘/dm/fgdata/fgedudb/dm.ini’ from backupset ‘/dm/backup/full_backup_20240101’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Check backupset ‘/dm/backup/full_backup_20240101’
Backupset[/dm/backup/full_backup_20240101] is valid.
Restore database start…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Restore database successfully!
time used: 00:00:00.652
RMAN> recover database ‘/dm/fgdata/fgedudb/dm.ini’ with archivedir ‘/dm/arch’;
# 输出信息
recover database ‘/dm/fgdata/fgedudb/dm.ini’ with archivedir ‘/dm/arch’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Recover database start…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Recover database successfully!
time used: 00:00:00.123
RMAN> recover database ‘/dm/fgdata/fgedudb/dm.ini’ update db_magic;
# 输出信息
recover database ‘/dm/fgdata/fgedudb/dm.ini’ update db_magic;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Update db_magic start…
Update db_magic successfully!
time used: 00:00:00.012

4.2 增量备份与恢复

增量备份是备份自上次备份以来变化的数据,可以减少备份时间和存储空间。以下是具体的操作步骤:

4.2.1 增量备份

风哥提示:
# 使用dmrman进行增量备份
[dmdba@fgedu ~]$ /dm/app/bin/dmrman
RMAN> backup database ‘/dm/fgdata/fgedudb/dm.ini’ increment with backupdir ‘/dm/backup/full_backup_20240101’ backupset ‘/dm/backup/incremental_backup_20240102’ compressed;
# 输出信息
backup database ‘/dm/fgdata/fgedudb/dm.ini’ increment with backupdir ‘/dm/backup/full_backup_20240101’ backupset ‘/dm/backup/incremental_backup_20240102’ compressed;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Begin backup database compress…
Check backupset ‘/dm/backup/incremental_backup_20240102’
Backup set path: /dm/backup/incremental_backup_20240102
Backing up database (/dm/fgdata/fgedudb/dm.ini)…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Backup successfully!
time used: 00:00:00.543

4.2.2 增量恢复

# 使用dmrman进行增量恢复
[dmdba@fgedu ~]$ /dm/app/bin/dmrman
RMAN> restore database ‘/dm/fgdata/fgedudb/dm.ini’ from backupset ‘/dm/backup/full_backup_20240101’;
# 输出信息
restore database ‘/dm/fgdata/fgedudb/dm.ini’ from backupset ‘/dm/backup/full_backup_20240101’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE 学习交流加群风哥微信: itpux-com
Normal of KEEP
Normal of ROLL
Check backupset ‘/dm/backup/full_backup_20240101’
Backupset[/dm/backup/full_backup_20240101] is valid.
Restore database start…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Restore database successfully!
time used: 00:00:00.652
RMAN> restore database ‘/dm/fgdata/fgedudb/dm.ini’ increment from backupset ‘/dm/backup/incremental_backup_20240102’;
# 输出信息
restore database ‘/dm/fgdata/fgedudb/dm.ini’ increment from backupset ‘/dm/backup/incremental_backup_20240102’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Check backupset ‘/dm/backup/incremental_backup_20240102’
Backupset[/dm/backup/incremental_backup_20240102] is valid.
Restore increment start…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Restore increment successfully!
time used: 00:00:00.321
RMAN> recover database ‘/dm/fgdata/fgedudb/dm.ini’ with archivedir ‘/dm/arch’;
# 输出信息
recover database ‘/dm/fgdata/fgedudb/dm.ini’ with archivedir ‘/dm/arch’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Recover database start…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Recover database successfully!
time used: 00:00:00.123
RMAN> recover database ‘/dm/fgdata/fgedudb/dm.ini’ update db_magic;
# 输出信息
recover database ‘/dm/fgdata/fgedudb/dm.ini’ update db_magic;
Database mode = 0, oguid = 0 学习交流加群风哥QQ113257174
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Update db_magic start…
Update db_magic successfully!
time used: 00:00:00.012

4.3 差异备份与恢复

差异备份是备份自上次全量备份以来变化的数据,比增量备份更简单。以下是具体的操作步骤:

4.3.1 差异备份

# 使用dmrman进行差异备份
[dmdba@fgedu ~]$ /dm/app/bin/dmrman
RMAN> backup database ‘/dm/fgdata/fgedudb/dm.ini’ differential with backupdir ‘/dm/backup/full_backup_20240101’ backupset ‘/dm/backup/differential_backup_20240102’ compressed;
# 输出信息
backup database ‘/dm/fgdata/fgedudb/dm.ini’ differential with backupdir ‘/dm/backup/full_backup_20240101’ backupset ‘/dm/backup/differential_backup_20240102’ compressed;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Begin backup database compress…
Check backupset ‘/dm/backup/differential_backup_20240102’
Backup set path: /dm/backup/differential_backup_20240102
Backing up database (/dm/fgdata/fgedudb/dm.ini)…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Backup successfully!
time used: 00:00:00.456

4.3.2 差异恢复

# 使用dmrman进行差异恢复
[dmdba@fgedu ~]$ /dm/app/bin/dmrman
RMAN> restore database ‘/dm/fgdata/fgedudb/dm.ini’ from backupset ‘/dm/backup/full_backup_20240101’;
# 输出信息
restore database ‘/dm/fgdata/fgedudb/dm.ini’ from backupset ‘/dm/backup/full_backup_20240101’; 更多视频教程www.fgedu.net.cn
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Check backupset ‘/dm/backup/full_backup_20240101’
Backupset[/dm/backup/full_backup_20240101] is valid.
Restore database start…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Restore database successfully!
time used: 00:00:00.652
RMAN> restore database ‘/dm/fgdata/fgedudb/dm.ini’ differential from backupset ‘/dm/backup/differential_backup_20240102’;
# 输出信息
restore database ‘/dm/fgdata/fgedudb/dm.ini’ differential from backupset ‘/dm/backup/differential_backup_20240102’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Check backupset ‘/dm/backup/differential_backup_20240102’
Backupset[/dm/backup/differential_backup_20240102] is valid.
Restore differential start…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Restore differential successfully!
time used: 00:00:00.345
RMAN> recover database ‘/dm/fgdata/fgedudb/dm.ini’ with archivedir ‘/dm/arch’;
# 输出信息
recover database ‘/dm/fgdata/fgedudb/dm.ini’ with archivedir ‘/dm/arch’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Recover database start…
[Percent:100%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
Recover database successfully!
time used: 00:00:00.123 更多学习教程公众号风哥教程itpux_com
RMAN> recover database ‘/dm/fgdata/fgedudb/dm.ini’ update db_magic;
# 输出信息
recover database ‘/dm/fgdata/fgedudb/dm.ini’ update db_magic;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Update db_magic start…
Update db_magic successfully!
time used: 00:00:00.012

4.4 备份验证与监控

备份验证与监控是确保备份有效性的重要手段,以下是具体的操作步骤:

4.4.1 备份验证

# 使用dmrman进行备份验证
[dmdba@fgedu ~]$ /dm/app/bin/dmrman
RMAN> check backupset ‘/dm/backup/full_backup_20240101’;
# 输出信息
check backupset ‘/dm/backup/full_backup_20240101’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Check backupset ‘/dm/backup/full_backup_20240101’ from DB视频:www.itpux.com
Backupset[/dm/backup/full_backup_20240101] is valid.
time used: 00:00:00.234

4.4.2 备份监控

编写备份监控脚本,定期检查备份状态:

#!/bin/bash
# backup_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 检查备份目录
BACKUP_DIR=”/dm/backup”
# 检查最近的备份文件
latest_backup=$(ls -lt $BACKUP_DIR | grep -v “total” | head -1 | awk ‘{print $9}’)
# 检查备份文件大小
backup_size=$(du -sh $BACKUP_DIR/$latest_backup | awk ‘{print $1}’)
# 检查备份时间
backup_time=$(stat -c %y $BACKUP_DIR/$latest_backup)
echo “最近的备份: $latest_backup”
echo “备份大小: $backup_size”
echo “备份时间: $backup_time”
# 验证备份有效性
/dm/app/bin/dmrman << EOF check backupset '$BACKUP_DIR/$latest_backup'; exit; EOF

Part05-风哥经验总结与分享

5.1 备份恢复最佳实践

根据多年的数据库维护经验,以下是一些备份恢复的最佳实践:

  • 定期执行全量备份,确保数据的完整性。
  • 根据数据变化频率,适当执行增量备份或差异备份。
  • 将备份数据存储在与数据库服务器不同的位置,避免单点故障。
  • 定期验证备份的有效性,确保备份数据可以正常恢复。
  • 制定详细的恢复流程,确保在数据丢失时可以快速恢复。
  • 定期进行恢复测试,验证恢复方案的有效性。
  • 建立完善的备份监控机制,及时发现并解决备份过程中的问题。

5.2 常见问题与解决方案

在备份恢复过程中,经常会遇到以下问题,以下是相应的解决方案:

5.2.1 备份失败

原因:存储空间不足、权限不足、数据库状态异常等。

解决方案:检查存储空间、确保备份目录权限正确、检查数据库状态。

5.2.2 恢复失败

原因:备份文件损坏、恢复参数错误、数据库状态异常等。

解决方案:验证备份文件有效性、检查恢复参数、检查数据库状态。

5.2.3 备份速度慢

原因:存储性能不足、备份参数配置不当、数据库负载过高等。

解决方案:使用性能更好的存储设备、优化备份参数、选择业务低峰期进行备份。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息