以下是DB2数据库的备份和恢复常用命令及详细步骤:
---
### **一、备份数据库命令**
#### **1. 离线备份(数据库处于非活动状态)**
```bash
# 停用数据库连接
db2 deactivate db <数据库名>
# 执行离线备份
db2 backup db <数据库名> to '<备份目录路径>'
```
- **示例**:
```bash
db2 deactivate db MYDB
db2 backup db MYDB to '/backup/mydb_offline'
```
---
#### **2. 在线备份(数据库处于活动状态,需启用归档日志)**
```bash
# 确认归档日志已启用(LOGARCHMETH1 配置不为 OFF)
db2 get db cfg for <数据库名> | grep -i "LOGARCHMETH1"
# 执行在线备份
db2 backup db <数据库名> online to '<备份目录路径>' include logs
```
- **示例**:
```bash
db2 backup db MYDB online to '/backup/mydb_online' include logs
```
---
#### **3. 增量备份(仅备份自上次全量后的变更)**
```bash
db2 backup db <数据库名> incremental delta to '<备份目录路径>'
```
- **说明**:`delta` 表示差异增量,`cumulative` 表示累积增量。
---
### **二、恢复数据库命令**
#### **1. 从备份恢复数据库**
```bash
# 进入备份文件所在目录(需指定时间戳)
cd /backup/mydb_offline
# 执行恢复命令
db2 restore db <原数据库名> from '<备份目录路径>' taken at <时间戳>
```
- **时间戳获取**:备份文件名包含时间戳(如 `20231001120000`)。
- **示例**:
```bash
db2 restore db MYDB from '/backup/mydb_offline' taken at 20231001120000
```
---
#### **2. 恢复后前滚日志(在线备份恢复必需)**
```bash
# 前滚到日志末尾并完成恢复
db2 rollforward db <数据库名> to end of logs and complete
```
- **示例**:
```bash
db2 rollforward db MYDB to end of logs and complete
```
---
#### **3. 覆盖现有数据库**
```bash
# 强制覆盖同名数据库
db2 restore db <原数据库名> from '<备份路径>' taken at <时间戳> replace existing
```
---
### **三、关键参数说明**
| 参数 | 说明 |
|---------------------|--------------------------------------------------------------------|
| `online` | 在线备份(数据库可继续使用) |
| `include logs` | 包含备份

1万+

被折叠的 条评论
为什么被折叠?



