Skip to content

DM 异机恢复

异机恢复的核心特点

  • 将数据库恢复到不同的服务器
  • 支持跨硬件平台恢复
  • 支持跨操作系统恢复
  • 支持不同版本之间的恢复
  • 可以用于数据库迁移和测试环境搭建

适用场景

  • 源服务器硬件故障,无法修复
  • 数据库迁移到新服务器
  • 搭建测试环境,复制生产数据库
  • 服务器升级或更换
  • 灾难恢复演练

异机恢复原理

1. 异机恢复的基本概念

1.1 源服务器与目标服务器

  • 源服务器:原始数据库所在的服务器,通常是生产服务器
  • 目标服务器:数据库将要恢复到的服务器,可以是新服务器或备用服务器

1.2 异机恢复的实现机制

异机恢复的实现包括以下关键步骤:

  1. 备份转移:将源服务器上的备份集复制到目标服务器
  2. 环境准备:在目标服务器上准备数据库环境
  3. 恢复操作:在目标服务器上执行恢复操作
  4. 配置调整:调整目标服务器上的数据库配置
  5. 验证测试:验证恢复后的数据库是否正常

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_64ARM64跨平台恢复
操作系统CentOS 7Ubuntu 20.04跨操作系统恢复
DM版本8.1.2.388.1.2.38相同版本
数据库名称DAMENGDAMENG保持一致
数据文件路径/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 -i

2.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/dmdbms

2.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/arch

3.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.ini

4.2 启动数据库实例

shell
# 启动数据库实例
systemctl start DmServiceDMSERVER

4.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. 硬件故障恢复

场景描述:源服务器硬件故障,无法修复,需要将数据库恢复到新服务器

恢复策略

  • 使用最新的全量备份和归档日志
  • 确保目标服务器配置不低于源服务器
  • 优先恢复到相同硬件平台
  • 恢复后立即执行全量备份

恢复步骤

  1. 从源服务器抢救备份集和归档日志
  2. 在目标服务器上安装DM数据库
  3. 执行异机恢复
  4. 调整配置文件
  5. 验证恢复结果
  6. 切换应用连接到新服务器

2. 数据库迁移

场景描述:需要将数据库从旧服务器迁移到新服务器,通常用于服务器升级或更换

恢复策略

  • 提前规划迁移时间窗口
  • 选择业务低峰期进行迁移
  • 测试目标服务器性能
  • 制定回滚计划

恢复步骤

  1. 在源服务器上创建最新备份
  2. 复制备份到目标服务器
  3. 执行异机恢复
  4. 验证恢复结果
  5. 同步增量数据(如果需要)
  6. 切换应用连接
  7. 监控新服务器性能

3. 测试环境搭建

场景描述:需要将生产数据库复制到测试环境,用于开发和测试

恢复策略

  • 使用生产数据库的最新备份
  • 调整测试环境的配置参数
  • 禁用生产环境的某些功能(如邮件告警)
  • 清理敏感数据(如用户密码、信用卡信息等)

恢复步骤

  1. 从生产服务器复制备份到测试服务器
  2. 执行异机恢复
  3. 调整配置文件,降低资源消耗
  4. 清理敏感数据
  5. 启动数据库实例
  6. 验证测试环境

异机恢复最佳实践

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: 找不到备份集的可能原因:

  • 备份集路径错误
  • 备份集被删除或移动
  • 权限不足,无法访问备份集
  • 备份集损坏

解决方案

  1. 检查备份集路径是否正确
  2. 确认备份集是否存在
  3. 检查备份集的权限
  4. 重新复制备份集
  5. 验证备份集的完整性

Q2: 异机恢复后数据库无法启动怎么办?

A2: 数据库无法启动的可能原因:

  • 配置文件错误
  • 数据文件损坏
  • 权限不足
  • 内存不足
  • 端口被占用

解决方案

  1. 查看数据库启动日志,定位具体错误
  2. 检查配置文件参数
  3. 验证数据文件的完整性
  4. 检查目录和文件权限
  5. 调整内存参数
  6. 检查端口占用情况

Q3: 异机恢复后数据文件路径不正确怎么办?

A3: 数据文件路径不正确的可能原因:

  • 配置文件中的路径未调整
  • 恢复时指定的路径错误
  • 备份集中的路径信息与目标服务器不一致

解决方案

  1. 检查dm.ini文件中的路径参数
  2. 确保所有数据文件的路径正确
  3. 必要时重新执行恢复操作

Q4: 异机恢复后应用无法连接怎么办?

A4: 应用无法连接的可能原因:

  • 监听配置错误
  • 服务未启动
  • 防火墙设置
  • 网络问题
  • 用户名密码错误

解决方案

  1. 检查监听配置
  2. 确认数据库服务已启动
  3. 检查防火墙设置
  4. 测试网络连接
  5. 验证用户名和密码

Q5: 跨平台异机恢复时遇到兼容性问题怎么办?

A5: 跨平台异机恢复兼容性问题的可能原因:

  • 硬件平台差异
  • 操作系统差异
  • 数据库版本差异
  • 字符集差异

解决方案

  1. 确认DM数据库支持跨平台恢复
  2. 使用相同或更高版本的DM数据库
  3. 确保字符集一致
  4. 参考DM数据库跨平台恢复文档
  5. 联系DM技术支持

Q6: 异机恢复后性能下降怎么办?

A6: 性能下降的可能原因:

  • 目标服务器硬件配置较低
  • 数据库参数未优化
  • 存储设备性能差异
  • 网络配置问题

解决方案

  1. 检查目标服务器硬件配置
  2. 优化数据库参数
  3. 检查存储设备性能
  4. 调整网络配置
  5. 进行性能测试和优化

不同版本的差异

DM 7 vs DM 8

特性DM 7DM 8
跨平台恢复支持有限全面支持,包括x86、ARM、鲲鹏、飞腾等
跨操作系统恢复支持Windows和Linux支持Windows、Linux、Unix等更多操作系统
恢复速度一般优化,恢复速度提升50%以上
配置文件调整手动调整提供自动调整工具
并行恢复最高支持4最高支持128
恢复验证基本验证增强验证,自动检查恢复完整性
跨版本恢复支持有限全面支持,支持从旧版本恢复到新版本

DM 8.1 新特性

  • 增强的跨平台恢复功能,支持更多硬件平台
  • 优化的恢复算法,恢复速度提升30%
  • 提供配置文件自动调整工具
  • 支持恢复过程中的进度显示
  • 增强的恢复验证功能
  • 支持基于SCN的精确恢复

在执行异机恢复时,需要注意以下关键点:

  1. 充分准备:制定详细的恢复计划,验证备份完整性,准备必要的工具和资源
  2. 环境一致性:确保目标服务器环境与源服务器兼容,调整配置文件中的路径和参数
  3. 恢复流程:严格按照恢复流程执行,包括备份转移、环境准备、恢复操作、配置调整和验证测试
  4. 优化恢复:使用压缩备份、并行恢复等方式提高恢复效率
  5. 恢复后操作:立即执行全量备份,调整数据库参数,配置监控和告警,记录恢复过程

随着DM数据库版本的不断升级,异机恢复功能也在不断增强,提供了更高的恢复速度、更好的兼容性和更丰富的功能。DBA应该持续关注DM数据库的新特性,不断优化异机恢复策略和流程,提高数据库的可用性和可靠性。

通过掌握DM数据库的异机恢复技术,可以在服务器故障、数据库迁移等场景下快速恢复数据库,保障业务的连续运行,提高数据库的灾难恢复能力。