源 DB2 版本是 10.5,目标是 DB2 11.5,操作系统为 Linux
下面给出在线备份(数据库 + 活动日志 + 归档日志)并在 DB2 11.5 环境恢复的步骤、注意事项与示例脚本。
内容包含兼容性说明、备份与日志采集、文件传输、目标恢复(restore + rollforward)、以及验证与常见问题排查。
重要兼容性说明(先读):
- 从 DB2 10.5 恢复到 DB2 11.5 一般是允许的(低版本备份恢复到高版本通常受支持),但请务必在测试环境先做演练。
- 跨平台(例如 AIX -> Linux)可能存在备份镜像不可直接还原的问题;若跨平台,请改用 db2move/export-import、db2relocatedb 或迁移工具。
- 若源与目标架构相同(同为 x86_64 Linux),可直接恢复。
一、准备工作(源端 10.5)
登录实例用户
- su – db2inst1
检查版本与数据库配置
- db2level
- db2 connect to ISIMDB
- db2 get db cfg for ISIMDB | egrep -i “logarchmeth|logretain|logprimary|logsecond|logfilsiz|pagebuffers”


确认日志归档模式
- 若 LOGARCHMETH1 = * (例如 DISK:/path) 则已有归档。若为 NULL 或 CIRCULAR,则说明当前为循环日志(不能做基于日志的 rollforward 到备份后时间点)。若需要点时间恢复,必须先配置归档并确保产生归档日志(注意:改变日志模式可能需要数据库重启或特定操作;在生产请谨慎操作)。
- 查看当前日志序列号:
“db2pd -d ISIMDB -logs” 或 db2 “get snapshot for db on ISIMDB”


确保目标服务器(DB2 11.5)已经安装并且实例用户存在,且有足够磁盘空间。
二、备份流程(源端 10.5,在线备份并包含必要日志)
目标:生成一个在线备份镜像(包含活动日志),同时收集归档日志用于 rollforward 还原。
步骤 A — 在线备份(包含日志)
- 创建备份目录并赋权
mkdir -p /data/backups/ISIMDB
chown db2inst1:db2iadm1 /data/backups/ISIMDB - 执行在线备份并包含日志(可启用压缩)
db2 “backup db ISIMDB online to /data/backups/ISIMDB compress include logs”
说明: - online:数据库在线,业务不中断
- include logs:将必要的活动日志包含到备份镜像(便于恢复)
- compress:可选,减少磁盘与传输量
执行成功后,记录输出的备份镜像名与时间戳(例如 ISIMDB.0.db2inst1.20251114.123456)。
步骤 B — 列出并记录备份历史(获取 taken at 时间戳)
db2 “list history backup all for ISIMDB show detail”
记录:备份镜像 taken at 值(用于 restore 的 taken at 参数),及该镜像需要的日志范围(history 里会显示需要的 first and last log)。
步骤 C — 收集归档日志(若配置了 LOGARCHMETH)
- 确认 LOGARCHMETH1 路径,例如 DISK:/db2/archlogs
db2 get db cfg for ISIMDB | grep -i LOGARCHMETH1 - 将归档目录内从(备份镜像所需的 first log)到最新的日志文件复制到安全目录:
mkdir -p /data/backups/ISIMDB_archlogs
rsync -av /db2/archlogs/ /data/backups/ISIMDB_archlogs/ - 如果 LOGARCHMETH 未配置(circular logging),可尝试执行 archive log(若支持):
db2 “archive log for database ISIMDB into /data/backups/ISIMDB_archlogs”
注意:archive log 只有在配置了归档方法时才有效。
步骤 D — 验证备份与日志完整性(可选)
- md5sum / sha256sum 备份镜像与归档日志:
md5sum /data/backups/ISIMDB/* > /data/backups/ISIMDB/md5sums.txt
md5sum /data/backups/ISIMDB_archlogs/* > /data/backups/ISIMDB_archlogs/md5sums.txt - 使用 db2ckbkp(10.5 提供)检查备份镜像:
db2ckbkp /data/backups/ISIMDB/ISIMDB.0.db2inst1.* (若可用)
三、传输备份与归档日志到目标 DB2 11.5 主机
- 在目标机器创建接收目录,属主为目标实例用户(例如 db2inst1)
mkdir -p /data/restore/backups/ISIMDB
mkdir -p /data/restore/archlogs/ISIMDB
chown -R db2inst1:db2grp /restore/backups/ISIMDB /restore/archlogs/ISIMDB - 传输文件(使用 rsync 或 scp)
rsync -avz /data/backups/ISIMDB/ db2user@target:/restore/backups/ISIMDB/
rsync -avz /data/backups/ISIMDB_archlogs/ db2user@target:/restore/archlogs/ISIMDB/ - 在目标机上校验 md5(对比源端生成的 md5sums.txt 或重新生成并比对)
四、在目标 DB2 11.5 上恢复(restore + rollforward)
注意:在目标上恢复 10.5 的备份到 11.5,DB2 在恢复过程中可能会进行版本升级(migration),建议先在测试机演练。
步骤 A — 以目标实例用户登录并启动实例
su – db2inst1
db2start
db2level # 确认 11.5
步骤 B — 将备份镜像放到可访问目录(已传输至 /restore/backups/ISIMDB)
- 列出备份:
ls -l /restore/backups/ISIMDB
步骤 C — 恢复数据库
- 如果目标上没有同名数据库:
db2 “restore db ISIMDB from /restore/backups/ISIMDB taken at into ISIMDB” - 如果要覆盖已有数据库(谨慎):
db2 “restore db ISIMDB from /restore/backups/ISIMDB taken at into ISIMDB replace existing”
如何获取 :
使用 db2 list history backup all for ISIMDB show detail 查看 taken at。或者从备份镜像文件名里获取。
步骤 D — 如果恢复进入 rollforward pending 状态(通常在线备份 include logs 会需要 rollforward),执行 rollforward:
- 将归档日志放到可访问目录并指定 USING LOG PATH:
db2 “rollforward db ISIMDB to end of logs and complete using log path (‘/restore/archlogs/ISIMDB’)” - 如果要 rollforward 到某时间点(point-in-time):
db2 “rollforward db ISIMDB to time ‘YYYY-MM-DD-HH.MM.SS’ and complete using log path (‘/restore/archlogs/ISIMDB’)”
注意:
- 如果备份镜像内已包含从备份开始到备份结束的活动日志,且你只需恢复到备份完成点,通常可以直接 rollforward to end of logs and complete(并指定 log path,若有外部归档)。
- 若 rollforward 报错找不到某些日志,需将对应日志文件放到指定路径或调整 log path 列表顺序以包含所有需要的日志目录。
步骤 E — 连接并验证数据库
db2 connect to ISIMDB
db2 “select count() from syscat.tables” db2 “list tablespaces show detail” db2 “select count() from schema.important_table” # 应用级检查
五、恢复后工作(post-restore)
- 更新统计信息(RUNSTATS)、重建索引(如需要)、检查表空间状态与自动增长设置。
db2 “runstats on table schema.table with distribution and detailed indexes all”
db2 “reorgchk -d ISIMDB -t all” 或对关键表执行 REORG。 - 检查用户/权限、外部连接(LDAP)、应用连接池配置。
- 若使用 HADR/Replication,在切换到新环境前禁用/调整复制配置,或按 HADR 步骤重新配置。
六、常见错误与排查(针对 10.5 -> 11.5 恢复)
1.错误:备份镜像不兼容或 restore 失败
- 原因:跨平台或备份镜像格式不兼容。解决:如果是跨平台,请改用 db2move/export-import;若是版本或 fix pack 导致的不兼容,参考 IBM 文档或先在中间版本上做升级再备份恢复。
2.错误:rollforward 报缺少日志文件
- 原因:所需归档日志未传输或 log path 未正确指定。解决:从源端拷贝缺失日志,或检查备份 history 得到需要的日志范围。
3.字符集问题或数据乱码
- 原因:源与目标数据库字符集不同。解决:在目标创建数据库时尽量指定与源相同编码,或采用 db2move export/import 方式进行字符集转换。
4.权限/用户映射问题
- 恢复后若缺失用户或权限,请在目标上创建相应操作系统用户或在数据库内创建对应的 DB users / roles。
七、示例 Bash 自动化脚本(源端:生成备份并 rsync 到目标)
下面示例脚本仅作为参考,请在测试环境验证并根据实际路径、用户、目标地址调整。
!/bin/bash
backup_and_send_isimdb.sh
SRC_BACKUP_DIR=/data/backups/ISIMDB
SRC_ARCH_DIR=/data/backups/ISIMDB_archlogs
TARGET_USER=db2user
TARGET_HOST=target.example.com
TARGET_BACKUP_DIR=/restore/backups/ISIMDB
TARGET_ARCH_DIR=/restore/archlogs/ISIMDB
DB=ISIMDB
mkdir -p ${SRC_BACKUP_DIR} ${SRC_ARCH_DIR}
chown db2inst1:db2grp ${SRC_BACKUP_DIR} ${SRC_ARCH_DIR}
执行在线备份并包含日志
sudo -u db2inst1 db2 “backup db ${DB} online to ${SRC_BACKUP_DIR} compress include logs”
if [ $? -ne 0 ]; then
echo “Backup failed” >&2
exit 1
fi
归档日志(仅当配置了归档)
sudo -u db2inst1 db2 “archive log for database ${DB} into ${SRC_ARCH_DIR}”
生成校验和
cd ${SRC_BACKUP_DIR}
md5sum * > md5sums.txt
cd ${SRC_ARCH_DIR}
md5sum * > md5sums.txt
传输到目标
rsync -avz ${SRC_BACKUP_DIR}/ ${TARGET_USER}@${TARGET_HOST}:${TARGET_BACKUP_DIR}/
rsync -avz ${SRC_ARCH_DIR}/ ${TARGET_USER}@${TARGET_HOST}:${TARGET_ARCH_DIR}/
echo “Backup and transfer completed.”