Skip to content

DB2 - 备份与恢复

本章涵盖了备份和恢复 Db2 数据库的基本策略和命令,这是任何数据库管理员的关键技能。

健壮的备份策略建立在两个关键指标之上:恢复点目标(RPO),即最大可接受的数据丢失量;恢复时间目标(RTO),即最大可接受停机时间。您在 Db2 中选择的日志记录方法直接影响您实现这些目标的能力。

从宏观上看,备份是您的数据库数据和元数据在特定时间点的完整副本。恢复是使用该备份以及事务日志将数据库恢复到一致状态的过程。

在此模式下,日志文件被视为环形缓冲区。当最后一个日志文件已满时,Db2 会覆盖第一个。这很简单,并且对日志所需的磁盘空间最小。然而,它仅支持崩溃恢复和离线备份。您无法执行时间点恢复。此模式适用于数据丢失不关键的开发或测试环境。

在此模式下,Db2 会在日志文件满时将其归档到单独的位置,而不是覆盖它们。这会创建所有事务的完整历史记录。归档日志是在线备份和时间点恢复的先决条件,因此对于最小化数据丢失(低 RPO)至关重要的生产数据库而言,它是必不可少的。

Db2 提供了灵活的备份选项以适应不同的需求。

离线备份要求数据库处于非激活状态,确保没有活动的连接。这会创建一个完全一致的快照。这是最简单的备份形式,但需要应用程序停机。

# 确保没有应用程序连接
db2 list applications
# 如果存在连接,强制它们断开
db2 force application all
# 停用数据库
db2 deactivate db sample
# 执行备份
db2 backup database sample to /backup/location
# 备份成功。此备份映像的时间戳为:20231027103000

在线备份可以在数据库处于活动状态并服务用户时进行。这仅在数据库配置为归档日志记录时才可能。它通过消除备份所需的停机时间来提供高可用性。

首先,让我们启用归档日志记录。此更改要求在之后立即进行一次离线备份。

# 检查当前日志状态
db2 get db cfg for sample | grep LOGARCHMETH1
# 对于循环日志,它将显示 'LOGARCHMETH1 = OFF'。
# 为归档日志创建目录
mkdir -p /db2/logs/archive
# 更新数据库配置以启用归档日志记录
db2 update db cfg for sample using LOGARCHMETH1 'DISK:/db2/logs/archive'
# 重要提示:启用归档日志记录后,您必须立即进行一次离线备份。
db2 backup database sample to /backup/location

一旦归档日志记录被启用并且初始备份完成,您就可以执行在线备份了。

# 执行在线备份,压缩映像并包含必要的日志
db2 backup database sample online to /backup/location compress include logs
# 备份成功。此备份映像的时间戳为:20231027110000

如果备份损坏,它将毫无用处。请务必验证您的备份映像。

# 验证备份文件的完整性
db2ckbkp /backup/location/SAMPLE.0.db2inst1.DBPART000.20231027110000.001
# 映像已验证。

恢复(Restoring)是将数据库从备份映像中恢复原状的过程。RESTORE 命令用于此目的。

# 从目录中最新的备份恢复数据库
db2 restore database sample from /backup/location
# 或者使用其时间戳从特定的备份映像恢复
db2 restore database sample from /backup/location taken at 20231027110000

从在线备份恢复后,数据库将处于“前滚待定”状态。这意味着您必须应用归档的事务日志以使其达到一致状态。这被称为前滚恢复。

# 前滚到所有可用日志的末尾
db2 rollforward db sample to end of logs and stop
# 恢复到特定时间点(例如,在用户错误发生前)
db2 rollforward db sample to 2023-10-27-12.00.00.000000 using local time and stop
  • 自动化: 编写备份过程脚本,并使用 cron (Linux/UNIX) 或任务计划程序 (Windows) 进行调度。
  • 定期测试: 定期通过将备份恢复到不同的服务器来测试您的恢复过程,以确保备份有效并且您熟悉该过程。
  • 云存储: 现代策略通常涉及备份到云对象存储(如 AWS S3 或 IBM COS),以实现异地保护和持久性。
  • 增量备份: 对于非常大的数据库,请考虑增量备份或差分备份,它们仅备份自上次完全备份以来发生更改的数据,从而节省时间和空间。
  • 高可用性 (HADR): 为了实现接近零的 RPO 和 RTO,Db2 的高可用性灾难恢复 (HADR) 功能提供了一个备用数据库,通过日志传送与主数据库保持同步。这是任务关键型系统的黄金标准。