DB2数据库的备份恢复操作是数据库运维的基础工作,不同业务场景需要选择不同的备份策略,对应的恢复方式也有差异。下面通过多个实用范例帮助大家快速掌握相关操作。

范例一:DB2离线全量备份与全库恢复
离线备份需要数据库处于断开所有连接的状态,适合业务低峰期执行,备份文件完整包含整个数据库的所有数据。
1. 离线全量备份步骤
首先断开所有数据库连接,执行离线备份命令:
-- 断开所有数据库连接 db2 force applications all -- 执行离线全量备份,备份文件存放到/home/db2inst1/backup目录,备份名为full_backup_202405 db2 backup db sample to /home/db2inst1/backup with 2 buffers buffer 1024 parallelism 1 without prompting
2. 全库恢复步骤
如果数据库损坏需要恢复,执行以下命令:
-- 恢复全库,使用刚才的备份文件 db2 restore db sample from /home/db2inst1/backup taken at 20240510120000 -- 恢复完成后执行前滚操作,让数据库回到一致状态 db2 rollforward db sample to end of logs and stop
范例二:DB2在线归档备份与时间点恢复
在线备份不需要断开业务连接,适合7*24小时运行的业务系统,需要提前开启归档日志模式。
1. 开启归档日志并配置
先修改数据库配置开启归档:
-- 开启归档日志模式,需要数据库处于离线状态 db2 update db cfg for sample using logarchmeth1 disk:/home/db2inst1/archlogs -- 修改后重启数据库使配置生效 db2 force applications all db2 deactivate db sample db2 activate db sample
2. 在线全量备份
-- 执行在线全量备份,包含日志 db2 backup db sample online to /home/db2inst1/backup include logs
3. 时间点恢复操作
如果需要恢复到某个特定时间点,比如2024年5月10日14点30分,执行以下命令:
-- 恢复数据库到指定时间点 db2 restore db sample from /home/db2inst1/backup taken at 20240510143000 -- 前滚到指定时间点 db2 rollforward db sample to 2024-05-10-14.30.00 using local time and stop
范例三:DB2增量备份与表空间恢复
增量备份只备份自上次备份后变更的数据,减少备份时间和存储空间,适合数据量大的数据库。
1. 增量备份执行
先执行一次全量备份作为基准,再执行增量备份:
-- 基准全量备份 db2 backup db sample to /home/db2inst1/backup -- 增量备份,只备份变更数据 db2 backup db sample incremental to /home/db2inst1/backup
2. 单表空间恢复
如果只有某个表空间损坏,不需要恢复全库,执行表空间恢复:
-- 恢复指定的USERSPACE1表空间 db2 restore db sample tablespace USERSPACE1 from /home/db2inst1/backup -- 前滚表空间到一致状态 db2 rollforward db sample to end of logs tablespace USERSPACE1 and stop
操作注意事项
- 备份前确认备份目录有足够存储空间,避免备份失败
- 在线备份必须开启归档日志,否则无法执行
- 恢复操作前建议先对当前数据库做备份,避免操作失误导致数据丢失
- 增量恢复需要按照全量备份、增量备份的顺序依次恢复,不能跳过基准备份
以上范例覆盖了DB2备份恢复的大部分常见场景,实际使用时可以根据业务需求调整参数,操作前建议在测试环境验证命令正确性。