外观
DM 异机恢复
异机恢复的核心特点:
- 将数据库恢复到不同的服务器
- 支持跨硬件平台恢复
- 支持跨操作系统恢复
- 支持不同版本之间的恢复
- 可以用于数据库迁移和测试环境搭建
适用场景:
- 源服务器硬件故障,无法修复
- 数据库迁移到新服务器
- 搭建测试环境,复制生产数据库
- 服务器升级或更换
- 灾难恢复演练
异机恢复原理
1. 异机恢复的基本概念
1.1 源服务器与目标服务器
- 源服务器:原始数据库所在的服务器,通常是生产服务器
- 目标服务器:数据库将要恢复到的服务器,可以是新服务器或备用服务器
1.2 异机恢复的实现机制
异机恢复的实现包括以下关键步骤:
- 备份转移:将源服务器上的备份集复制到目标服务器
- 环境准备:在目标服务器上准备数据库环境
- 恢复操作:在目标服务器上执行恢复操作
- 配置调整:调整目标服务器上的数据库配置
- 验证测试:验证恢复后的数据库是否正常
1.3 异机恢复的关键技术
1.3.1 跨平台兼容性
DM数据库支持跨平台恢复,包括:
- 跨硬件平台:x86、ARM、鲲鹏、飞腾等
- 跨操作系统:Windows、Linux、Unix等
- 跨文件系统:NTFS、EXT4、XFS等
1.3.2 配置文件调整
异机恢复后需要调整的配置文件包括:
- dm.ini:数据库配置文件
- dmarch.ini:归档配置文件
- dm_svc.conf:服务配置文件
- 其他相关配置文件
1.3.3 路径映射
异机恢复时需要处理路径差异,包括:
- 数据文件路径
- 日志文件路径
- 备份文件路径
- 归档日志路径
2. 异机恢复的工作流程
异机恢复的工作流程包括以下阶段:
2.1 准备阶段
- 确定源服务器和目标服务器
- 评估源服务器和目标服务器的差异
- 制定恢复计划
- 准备备份集和工具
2.2 备份转移阶段
- 在源服务器上创建备份
- 将备份集复制到目标服务器
- 验证备份集的完整性
2.3 环境准备阶段
- 在目标服务器上安装DM数据库软件
- 创建必要的目录结构
- 准备配置文件
2.4 恢复执行阶段
- 执行全量恢复
- 执行增量恢复(如果有)
- 应用归档日志
- 更新数据库模式
2.5 配置调整阶段
- 调整配置文件中的路径
- 调整数据库参数
- 配置服务和监听
2.6 验证测试阶段
- 启动数据库实例
- 验证数据库状态
- 测试应用访问
- 性能测试和优化
异机恢复前提条件
在执行异机恢复之前,需要确保满足以下前提条件:
1. 源服务器条件
- 有可用的全量备份:全量备份是异机恢复的基础
- 有完整的增量备份链(可选):如果需要增量恢复
- 有完整的归档日志:自备份以来的所有归档日志
- 数据库版本信息:源数据库的版本和补丁信息
2. 目标服务器条件
- 硬件兼容性:目标服务器硬件与源服务器兼容或支持跨平台恢复
- 操作系统兼容性:目标服务器操作系统支持DM数据库
- 足够的存储空间:目标服务器有足够的空间存储数据库文件
- 相同或更高版本的DM数据库:目标服务器安装的DM数据库版本应与源服务器相同或更高
- 相似的配置:目标服务器的配置应与源服务器相似或更好
3. 网络条件
- 源服务器和目标服务器之间网络连接正常
- 有足够的带宽用于传输备份集
- 可以通过SSH、SCP等工具传输文件
4. 权限条件
- 源服务器上有足够的权限访问备份文件
- 目标服务器上有足够的权限创建目录和文件
- 执行恢复的用户具有SYSDBA或DBA权限
异机恢复操作步骤
1. 准备工作
1.1 评估源服务器和目标服务器
| 评估项 | 源服务器 | 目标服务器 | 备注 |
|---|---|---|---|
| 硬件平台 | x86_64 | ARM64 | 跨平台恢复 |
| 操作系统 | CentOS 7 | Ubuntu 20.04 | 跨操作系统恢复 |
| DM版本 | 8.1.2.38 | 8.1.2.38 | 相同版本 |
| 数据库名称 | DAMENG | DAMENG | 保持一致 |
| 数据文件路径 | /opt/dmdbms/data/DAMENG | /data/dmdbms/data/DAMENG | 需要调整 |
| 归档日志路径 | /opt/dmdbms/arch | /data/dmdbms/arch | 需要调整 |
| 备份路径 | /opt/dmdbms/backup | /data/dmdbms/backup | 需要调整 |
1.2 在源服务器上创建备份
shell
# 在源服务器上执行全量备份
dmrman
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup' COMPRESSED;
# 备份配置文件
cp /opt/dmdbms/data/DAMENG/dm.ini /opt/dmdbms/backup/
cp /opt/dmdbms/data/DAMENG/dmarch.ini /opt/dmdbms/backup/
cp /opt/dmdbms/data/DAMENG/sqllog.ini /opt/dmdbms/backup/1.3 将备份复制到目标服务器
shell
# 在源服务器上压缩备份
tar -czvf /opt/dmdbms/backup/backup.tar.gz /opt/dmdbms/backup/
# 使用SCP复制备份到目标服务器
scp /opt/dmdbms/backup/backup.tar.gz user@target_server:/data/dmdbms/backup/2. 在目标服务器上准备环境
2.1 安装DM数据库软件
shell
# 在目标服务器上安装DM数据库软件
./DMInstall.bin -i2.2 创建目录结构
shell
# 创建数据库目录
mkdir -p /data/dmdbms/data/DAMENG
mkdir -p /data/dmdbms/arch
mkdir -p /data/dmdbms/backup
mkdir -p /data/dmdbms/logs
# 设置权限
chown -R dmdba:dinstall /data/dmdbms2.3 解压备份文件
shell
# 解压备份文件
tar -xzvf /data/dmdbms/backup/backup.tar.gz -C /data/dmdbms/backup/3. 执行异机恢复
3.1 调整配置文件
shell
# 复制配置文件到目标目录
cp /data/dmdbms/backup/dm.ini /data/dmdbms/data/DAMENG/
cp /data/dmdbms/backup/dmarch.ini /data/dmdbms/data/DAMENG/
# 调整dm.ini中的路径
vi /data/dmdbms/data/DAMENG/dm.ini
# 修改以下参数
# DATA_PATH = /data/dmdbms/data/DAMENG
# CTL_PATH = /data/dmdbms/data/DAMENG/dm.ctl
# LOG_PATH = /data/dmdbms/data/DAMENG/DAMENG01.log
# 其他相关路径参数
# 调整dmarch.ini中的路径
vi /data/dmdbms/data/DAMENG/dmarch.ini
# 修改归档路径
# ARCH_DEST = /data/dmdbms/arch3.2 执行恢复操作
shell
# 启动dmrman
dmrman
# 执行全量恢复
RESTORE DATABASE '/data/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/data/dmdbms/backup/full_backup';
# 应用归档日志
RECOVER DATABASE '/data/dmdbms/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/data/dmdbms/arch';
# 更新数据库模式
RECOVER DATABASE '/data/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;4. 配置目标服务器
4.1 注册数据库服务
shell
# 注册数据库服务
cd /opt/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /data/dmdbms/data/DAMENG/dm.ini4.2 启动数据库实例
shell
# 启动数据库实例
systemctl start DmServiceDMSERVER4.3 验证恢复结果
sql
-- 查看实例状态
SELECT status$ FROM V$INSTANCE;
-- 查看数据库状态
SELECT status$ FROM V$DATABASE;
-- 查看表空间状态
SELECT name, status$ FROM V$TABLESPACE;
-- 查看数据文件状态
SELECT name, status$ FROM V$datafile;
-- 执行数据库一致性检查
CHECK DATABASE;5. 完整恢复脚本示例
shell
#!/bin/bash
# DM数据库异机恢复脚本
# 配置参数
SOURCE_HOST="source_server"
TARGET_HOST="target_server"
SOURCE_BACKUP_DIR="/opt/dmdbms/backup"
TARGET_BACKUP_DIR="/data/dmdbms/backup"
TARGET_DATA_DIR="/data/dmdbms/data/DAMENG"
TARGET_ARCH_DIR="/data/dmdbms/arch"
DM_HOME="/opt/dmdbms"
# 1. 在源服务器上创建备份
echo "在源服务器上创建备份..."
ssh $SOURCE_HOST "$DM_HOME/bin/dmrman BACKUP DATABASE '$DM_HOME/data/DAMENG/dm.ini' FULL TO BACKUPSET '$SOURCE_BACKUP_DIR/full_backup' COMPRESSED"
# 2. 复制备份到目标服务器
echo "复制备份到目标服务器..."
scp -r $SOURCE_HOST:$SOURCE_BACKUP_DIR/* $TARGET_BACKUP_DIR/
# 3. 在目标服务器上准备环境
echo "在目标服务器上准备环境..."
ssh $TARGET_HOST "mkdir -p $TARGET_DATA_DIR $TARGET_ARCH_DIR $TARGET_BACKUP_DIR"
# 4. 调整配置文件
echo "调整配置文件..."
ssh $TARGET_HOST "sed -i 's|/opt/dmdbms|/data/dmdbms|g' $TARGET_BACKUP_DIR/dm.ini $TARGET_BACKUP_DIR/dmarch.ini"
ssh $TARGET_HOST "cp $TARGET_BACKUP_DIR/dm.ini $TARGET_BACKUP_DIR/dmarch.ini $TARGET_DATA_DIR/"
# 5. 执行恢复操作
echo "执行恢复操作..."
ssh $TARGET_HOST "$DM_HOME/bin/dmrman << EOF
RESTORE DATABASE '$TARGET_DATA_DIR/dm.ini' FROM BACKUPSET '$TARGET_BACKUP_DIR/full_backup';
RECOVER DATABASE '$TARGET_DATA_DIR/dm.ini' WITH ARCHIVEDIR '$TARGET_ARCH_DIR';
RECOVER DATABASE '$TARGET_DATA_DIR/dm.ini' UPDATE DB_MAGIC;
EXIT;
EOF"
# 6. 注册并启动服务
echo "注册并启动服务..."
ssh $TARGET_HOST "$DM_HOME/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini $TARGET_DATA_DIR/dm.ini"
ssh $TARGET_HOST "systemctl start DmServiceDMSERVER"
echo "异机恢复完成!"不同场景的异机恢复
1. 硬件故障恢复
场景描述:源服务器硬件故障,无法修复,需要将数据库恢复到新服务器
恢复策略:
- 使用最新的全量备份和归档日志
- 确保目标服务器配置不低于源服务器
- 优先恢复到相同硬件平台
- 恢复后立即执行全量备份
恢复步骤:
- 从源服务器抢救备份集和归档日志
- 在目标服务器上安装DM数据库
- 执行异机恢复
- 调整配置文件
- 验证恢复结果
- 切换应用连接到新服务器
2. 数据库迁移
场景描述:需要将数据库从旧服务器迁移到新服务器,通常用于服务器升级或更换
恢复策略:
- 提前规划迁移时间窗口
- 选择业务低峰期进行迁移
- 测试目标服务器性能
- 制定回滚计划
恢复步骤:
- 在源服务器上创建最新备份
- 复制备份到目标服务器
- 执行异机恢复
- 验证恢复结果
- 同步增量数据(如果需要)
- 切换应用连接
- 监控新服务器性能
3. 测试环境搭建
场景描述:需要将生产数据库复制到测试环境,用于开发和测试
恢复策略:
- 使用生产数据库的最新备份
- 调整测试环境的配置参数
- 禁用生产环境的某些功能(如邮件告警)
- 清理敏感数据(如用户密码、信用卡信息等)
恢复步骤:
- 从生产服务器复制备份到测试服务器
- 执行异机恢复
- 调整配置文件,降低资源消耗
- 清理敏感数据
- 启动数据库实例
- 验证测试环境
异机恢复最佳实践
1. 恢复前准备
1.1 制定详细的恢复计划
恢复计划应包括:
- 恢复目标和范围
- 源服务器和目标服务器信息
- 备份集信息
- 恢复步骤和时间安排
- 验证方法
- 回滚计划
1.2 验证备份完整性
在执行异机恢复前,验证备份集的完整性:
shell
# 验证备份集完整性
./dmrman CHECK BACKUPSET '/data/dmdbms/backup/full_backup';1.3 准备必要的工具和资源
- DM数据库安装介质
- 备份集和归档日志
- 配置文件备份
- 必要的系统工具(tar、scp、vi等)
- 技术文档和操作手册
2. 恢复过程优化
2.1 使用压缩备份减少传输时间
shell
# 使用压缩备份
dmrman
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup' COMPRESSED;2.2 使用并行恢复提高恢复速度
shell
# 使用并行恢复
dmrman
RESTORE DATABASE '/data/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/data/dmdbms/backup/full_backup' PARALLEL 8;
RECOVER DATABASE '/data/dmdbms/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/data/dmdbms/arch' PARALLEL 8;2.3 合理安排恢复时间
- 选择业务低峰期执行恢复
- 预留足够的时间进行恢复和验证
- 避免在系统维护窗口执行其他操作
3. 恢复后操作
3.1 立即执行全量备份
恢复完成后,立即执行全量备份,确保有最新的可用备份:
shell
dmrman
BACKUP DATABASE '/data/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/data/dmdbms/backup/after_cross_recovery' COMPRESSED;3.2 调整数据库参数
根据目标服务器的配置,调整数据库参数:
sql
-- 调整内存参数
ALTER SYSTEM SET MEMORY_TARGET = 16G SCOPE = SPFILE;
ALTER SYSTEM SET BUFFER = 8G SCOPE = SPFILE;
-- 调整CPU参数
ALTER SYSTEM SET WORKER_THREADS = 16 SCOPE = SPFILE;
-- 调整IO参数
ALTER SYSTEM SET DISK_WAIT_TIMEOUT = 1000 SCOPE = SPFILE;3.3 配置监控和告警
- 配置数据库监控
- 设置告警规则
- 配置日志监控
- 确保监控系统正常运行
3.4 记录恢复过程
记录恢复过程的详细信息,包括:
- 恢复时间和原因
- 使用的备份集和归档日志
- 恢复步骤和命令
- 遇到的问题和解决方案
- 恢复结果和验证情况
常见问题(FAQ)
Q1: 异机恢复时提示找不到备份集怎么办?
A1: 找不到备份集的可能原因:
- 备份集路径错误
- 备份集被删除或移动
- 权限不足,无法访问备份集
- 备份集损坏
解决方案:
- 检查备份集路径是否正确
- 确认备份集是否存在
- 检查备份集的权限
- 重新复制备份集
- 验证备份集的完整性
Q2: 异机恢复后数据库无法启动怎么办?
A2: 数据库无法启动的可能原因:
- 配置文件错误
- 数据文件损坏
- 权限不足
- 内存不足
- 端口被占用
解决方案:
- 查看数据库启动日志,定位具体错误
- 检查配置文件参数
- 验证数据文件的完整性
- 检查目录和文件权限
- 调整内存参数
- 检查端口占用情况
Q3: 异机恢复后数据文件路径不正确怎么办?
A3: 数据文件路径不正确的可能原因:
- 配置文件中的路径未调整
- 恢复时指定的路径错误
- 备份集中的路径信息与目标服务器不一致
解决方案:
- 检查dm.ini文件中的路径参数
- 确保所有数据文件的路径正确
- 必要时重新执行恢复操作
Q4: 异机恢复后应用无法连接怎么办?
A4: 应用无法连接的可能原因:
- 监听配置错误
- 服务未启动
- 防火墙设置
- 网络问题
- 用户名密码错误
解决方案:
- 检查监听配置
- 确认数据库服务已启动
- 检查防火墙设置
- 测试网络连接
- 验证用户名和密码
Q5: 跨平台异机恢复时遇到兼容性问题怎么办?
A5: 跨平台异机恢复兼容性问题的可能原因:
- 硬件平台差异
- 操作系统差异
- 数据库版本差异
- 字符集差异
解决方案:
- 确认DM数据库支持跨平台恢复
- 使用相同或更高版本的DM数据库
- 确保字符集一致
- 参考DM数据库跨平台恢复文档
- 联系DM技术支持
Q6: 异机恢复后性能下降怎么办?
A6: 性能下降的可能原因:
- 目标服务器硬件配置较低
- 数据库参数未优化
- 存储设备性能差异
- 网络配置问题
解决方案:
- 检查目标服务器硬件配置
- 优化数据库参数
- 检查存储设备性能
- 调整网络配置
- 进行性能测试和优化
不同版本的差异
DM 7 vs DM 8
| 特性 | DM 7 | DM 8 |
|---|---|---|
| 跨平台恢复 | 支持有限 | 全面支持,包括x86、ARM、鲲鹏、飞腾等 |
| 跨操作系统恢复 | 支持Windows和Linux | 支持Windows、Linux、Unix等更多操作系统 |
| 恢复速度 | 一般 | 优化,恢复速度提升50%以上 |
| 配置文件调整 | 手动调整 | 提供自动调整工具 |
| 并行恢复 | 最高支持4 | 最高支持128 |
| 恢复验证 | 基本验证 | 增强验证,自动检查恢复完整性 |
| 跨版本恢复 | 支持有限 | 全面支持,支持从旧版本恢复到新版本 |
DM 8.1 新特性
- 增强的跨平台恢复功能,支持更多硬件平台
- 优化的恢复算法,恢复速度提升30%
- 提供配置文件自动调整工具
- 支持恢复过程中的进度显示
- 增强的恢复验证功能
- 支持基于SCN的精确恢复
在执行异机恢复时,需要注意以下关键点:
- 充分准备:制定详细的恢复计划,验证备份完整性,准备必要的工具和资源
- 环境一致性:确保目标服务器环境与源服务器兼容,调整配置文件中的路径和参数
- 恢复流程:严格按照恢复流程执行,包括备份转移、环境准备、恢复操作、配置调整和验证测试
- 优化恢复:使用压缩备份、并行恢复等方式提高恢复效率
- 恢复后操作:立即执行全量备份,调整数据库参数,配置监控和告警,记录恢复过程
随着DM数据库版本的不断升级,异机恢复功能也在不断增强,提供了更高的恢复速度、更好的兼容性和更丰富的功能。DBA应该持续关注DM数据库的新特性,不断优化异机恢复策略和流程,提高数据库的可用性和可靠性。
通过掌握DM数据库的异机恢复技术,可以在服务器故障、数据库迁移等场景下快速恢复数据库,保障业务的连续运行,提高数据库的灾难恢复能力。
