风哥教程参考DB2官方文档Backup and Recovery Guide、Database Administration等内容,详细介绍DB2离线全量备份的原理、操作步骤、最佳实践以及在生产环境中的应用。更多视频教程www.fgedu.net.cn
目录大纲
- Part01-离线全量备份基础概念与理论知识
- Part02-生产环境离线备份规划与建议
- Part03-生产环境离线全量备份实施方案
- Part04-离线全量备份生产案例与实战讲解
- Part05-风哥经验总结与分享
Part01-离线全量备份基础概念与理论知识
离线全量备份是指在数据库处于非活动状态时,对整个数据库进行完整备份的过程。学习交流加群风哥微信: itpux-com
离线全量备份的特点:
- 数据库必须处于非活动状态
- 备份整个数据库的所有数据
- 备份过程中数据库不可访问
- 备份速度快,恢复简单
- 不需要应用日志即可恢复到备份时间点
- 备份完整性高:确保所有数据都被备份
- 恢复速度快:不需要应用日志
- 备份过程简单:操作步骤少
- 备份文件小:相比在线备份,不需要包含日志信息
- 适用于小型数据库:备份时间短,影响小
- 小型数据库:备份时间短,影响小
- 维护窗口:在系统维护期间进行
- 数据库迁移:需要完整备份进行迁移
- 初始备份:作为增量备份的基础
- 测试环境:为测试提供完整数据
Part02-生产环境离线备份规划与建议
在生产环境中,离线备份时间应考虑:
- 业务低峰期:选择业务量最小的时间段
- 维护窗口:与系统维护时间结合
- 备份时间:确保备份在维护窗口内完成
- 频率:根据业务需求确定备份频率
风哥提示:备份存储应选择安全、可靠的存储介质,确保备份数据的安全性和可访问性。
- 存储介质:磁盘、磁带、云存储等
- 存储位置:本地存储和异地存储
- 存储容量:确保有足够的空间存储备份
- 存储性能:确保备份速度满足要求
- 存储冗余:使用RAID等技术提高可靠性
- 检查数据库状态:确保数据库正常运行
- 检查存储空间:确保备份目标有足够空间
- 通知相关人员:提前通知业务人员和技术团队
- 准备备份脚本:自动化备份过程
- 测试备份环境:确保备份过程顺利进行
Part03-生产环境离线全量备份实施方案
System Database Directory
Number of entries in the directory = 1
Database 1 entry:
Database alias = FGEDB
Database name = FGEDB
Local database directory = /db2/fgdata
Database release level = 12.10
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
$ db2 “GET DATABASE CONFIGURATION FOR fgedb | grep -i log”
Log retain for recovery status = NO
User exit for logging status = NO
Catalog cache size (4KB) = 300
Log buffer size (4KB) = 256
Log file size (4KB) = 2048
Number of primary log files = 15
Number of secondary log files = 5
Changed path to log files = /db2/log
Path to log files = /db2/log
Mirror log path = /db2/logmirror
First active log file = S0000000.LOG
Block log on disk full = NO
Block non logged operations = NO
Percent max primary log space by transaction = 0
Percent max log space by transaction = 0
Max number of active log files = 0
Secondary log archive method (LOGARCHMETH2) = OFF
Log archive method (LOGARCHMETH1) = DISK:/db2/archlog
Log archive compression = OFF
Log archive retention period = 0
Log pages during index build = 0
Log index build = OFF
hadr log gap monitor logging = OFF
Number of log history files = 0
Log history retention time = 0
Auto archive = OFF
Auto delete archived log files = OFF
DB20000I The DEACTIVATE DATABASE command completed successfully.
$ db2 “BACKUP DATABASE fgedb TO ‘/db2/backup'”
Backup successful. The timestamp for this backup image is : 20260101120000
$ db2 “ACTIVATE DATABASE fgedb”
DB20000I The ACTIVATE DATABASE command completed successfully.
Validate database backup image succeeded.
total 2097152
-rw——- 1 db2inst1 db2iadm1 2147483648 Jan 1 12:00 20260101120000
Part04-离线全量备份生产案例与实战讲解
创建离线全量备份脚本:
#!/bin/bash
# offline_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
DATE=$(date +”%Y%m%d%H%M%S”)
BACKUP_DIR=”/db2/backup”
DB_NAME=”fgedb”
LOG_FILE=”/db2/scripts/backup_${DATE}.log”
# 创建备份目录
mkdir -p $BACKUP_DIR
echo “Starting offline backup for database $DB_NAME at $(date)” >> $LOG_FILE
# 停用数据库
echo “Deactivating database $DB_NAME…” >> $LOG_FILE
db2 “DEACTIVATE DATABASE $DB_NAME” >> $LOG_FILE 2>&1
# 执行备份
echo “Performing offline backup…” >> $LOG_FILE
db2 “BACKUP DATABASE $DB_NAME TO ‘$BACKUP_DIR'” >> $LOG_FILE 2>&1
# 激活数据库
echo “Activating database $DB_NAME…” >> $LOG_FILE
db2 “ACTIVATE DATABASE $DB_NAME” >> $LOG_FILE 2>&1
# 验证备份
echo “Validating backup…” >> $LOG_FILE
db2 “VALIDATE BACKUP ‘$BACKUP_DIR/NODE0000/$(ls -la $BACKUP_DIR/NODE0000/ | tail -1 | awk ‘{print $9}’)'” >> $LOG_FILE 2>&1
# 清理7天前的备份
echo “Cleaning up old backups…” >> $LOG_FILE
find $BACKUP_DIR -name “*” -mtime +7 -delete >> $LOG_FILE 2>&1
echo “Offline backup completed at $(date)” >> $LOG_FILE
# 发送通知
echo “Database backup completed. Please check log file: $LOG_FILE” | mail -s “DB2 Backup Complete” admin@fgedu.net.cn
设置定时任务:
# 每周日凌晨2点执行离线全量备份
0 2 * * 0 /db2/scripts/offline_backup.sh
Restore successful.
创建备份监控脚本:
#!/bin/bash
# backup_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
BACKUP_DIR=”/db2/backup”
DB_NAME=”fgedb”
# 检查最近24小时是否有备份
RECENT_BACKUP=$(find $BACKUP_DIR -name “*” -mtime -1 | wc -l)
if [ $RECENT_BACKUP -eq 0 ]; then
echo “No backup found in the last 24 hours for database $DB_NAME” | mail -s “DB2 Backup Alert” admin@fgedu.net.cn
fi
# 检查备份目录空间
BACKUP_SPACE=$(df -h $BACKUP_DIR | tail -1 | awk ‘{print $5}’ | sed ‘s/%//’)
if [ $BACKUP_SPACE -gt 80 ]; then
echo “Backup directory $BACKUP_DIR is running out of space ($BACKUP_SPACE% used)” | mail -s “DB2 Backup Space Alert” admin@fgedu.net.cn
fi
Part05-风哥经验总结与分享
- 选择合适的备份时间:业务低峰期
- 确保备份存储安全:使用可靠的存储介质
- 验证备份完整性:每次备份后进行验证
- 自动化备份过程:减少人工操作
- 监控备份状态:及时发现备份失败
- 定期清理过期备份:避免存储空间不足
- 备份时间过长:优化备份策略,考虑使用并行备份
- 备份失败:检查数据库状态、存储空间和权限
- 恢复失败:检查备份文件完整性
- 存储空间不足:清理过期备份,增加存储容量
- 数据库无法停用:检查连接状态,终止活动连接
离线备份与在线备份的选择:
- 离线备份:适用于小型数据库,维护窗口充足的场景
- 在线备份:适用于大型数据库,需要24×7运行的场景
- 混合策略:结合使用离线全量备份和在线增量备份
- 备份频率:根据业务需求和数据变更频率确定
- 恢复测试:定期测试恢复流程,确保备份可用
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
