# 海量数据 exBase 异构数据库迁移系统技术指南

> **数据来源**：北京海量数据技术股份有限公司官方技术文档中心（[docs.vastdata.com.cn](https://docs.vastdata.com.cn/zh_CN)）  
> **文档版本覆盖**：exBase V4.11 最新版  
> **整理原则**：完整保留官方迁移全生命周期流程规范、通道支持矩阵、底层架构组件、核心工具功能与双向逃生机制。

---

## 目录
- [一、产品概述与核心优势](#一产品概述与核心优势)
- [二、系统架构与运行组件](#二系统架构与运行组件)
- [三、全生命周期迁移流程体系](#三全生命周期迁移流程体系)
  - [3.1 阶段一：准备工作与环境预检](#31-阶段一准备工作与环境预检)
  - [3.2 阶段二：迁移规则管理与模板匹配](#32-阶段二迁移规则管理与模板匹配)
  - [3.3 阶段三：对象与应用迁移评估](#33-阶段三对象与应用迁移评估)
  - [3.4 阶段四：离线全量 vs 在线增量迁移](#34-阶段四离线全量-vs-在线增量迁移)
  - [3.5 阶段五：数据一致性校验与自动修复](#35-阶段五数据一致性校验与自动修复)
- [四、异构迁移通道功能支持矩阵](#四异构迁移通道功能支持矩阵)
- [五、高阶特性：双向同步与反向逃生通道](#五高阶特性双向同步与反向逃生通道)
  - [5.1 双向增量同步（Active-Active 保证）](#51-双向增量同步active-active-保证)
  - [5.2 反向迁移逃生通道（割接保障兜底）](#52-反向迁移逃生通道割接保障兜底)
- [六、应用改造辅助工具：Mapper 扫描与 SQL 智能转换](#六应用改造辅助工具mapper-扫描与-sql-智能转换)
  - [6.1 MyBatis Mapper 自动化扫描](#61-mybatis-mapper-自动化扫描)
  - [6.2 在线 SQL 智能重写转换](#62-在线-sql-智能重写转换)
- [七、系统部署与服务运维管理](#七系统部署与服务运维管理)

---

## 一、产品概述与核心优势

**exBase** 是北京海量数据技术股份有限公司自主研发的**一键式异构数据库迁移系统**。该平台集成了“**数据库迁移评估、应用迁移评估、自动元数据采集、数据库结构转换、全量数据加载、实时增量同步、双向数据比对校验及数据自动修复**”于一体，为国产数据库替换提供端到端的可视化与工程化支持。

### 核心优势
1. **自动化评估与工作量精确度量**：
   - 自动扫描源端数据库对象（表、视图、存储过程、包、触发器）及应用程序 SQL；
   - 输出精确到**小时级的迁移耗时预测**与**人天级的人工改造成本预测报告**。
2. **极小业务停机窗口（RTO 趋近于零）**：
   - 采用高效的底层事务日志解析重做机制，全量迁移过程中业务不中断；
   - 增量数据秒级追赶，割接时仅需短暂静止即可完成切换。
3. **高可靠性与逃生兜底机制**：
   - 支持正反向双向增量同步；
   - 独创**反向逃生通道**，若割接上线后目标国产库突发重大未知故障，可一键倒换切回原数据库且新产生的数据完全追回，杜绝迁移后退风险。
4. **强大多源异构兼容适配**：
   - 全面支持源端为 Oracle（RAC/CDB/PDB）、MySQL、SQL Server、PostgreSQL、DB2、Informix、达梦等，无缝迁移至 Vastbase G100 / E100 / openGauss。

---

## 二、系统架构与运行组件

exBase 由多个解耦协同的微服务与底层数据传输基础设施构成：

```
                    ┌─────────────────────────────────────────┐
                    │      exBase B/S 可视化运维控制台        │
                    └────────────────────┬────────────────────┘
                                         │
        ┌────────────────────────────────┼────────────────────────────────┐
        │                                │                                │
 ┌──────┴──────────────┐      ┌──────────┴──────────┐      ┌──────────────┴──────┐
 │   exBase Core       │      │  DTS 数据传输服务   │      │  中间件与消息队列   │
 ├─────────────────────┤      ├─────────────────────┤      ├─────────────────────┤
 │ • 任务管理调度      │      │ • dts-metanode      │      │ • Kafka 事务消息队列│
 │ • 评估与规则引擎    │      │   (元数据协同管理)  │      │ • ZooKeeper 集群协调│
 │ • exbase_confdb     │      │ • dts-nodemgr       │      │                     │
 │   (系统元数据库)    │      │   (增量采集执行节点)│      │                     │
 └─────────────────────┘      └─────────────────────┘      └─────────────────────┘
```

1. **exbase**：核心应用服务，负责 UI 交互、作业编排调度、评估引擎及数据校验任务。
2. **exbase_confdb**：底层元数据库，存储所有配置信息、迁移规则、任务状态与历史日志。
3. **dts-nodemgr** 与 **dts-metanode**：DTS（Data Transmission Service）分布式增量数据传输服务节点，负责源端事务日志的解析与重放。
4. **Kafka 与 ZooKeeper**：高吞吐持久化消息队列，缓存增量变更数据，支持高并发消费与断点续传。

---

## 三、全生命周期迁移流程体系

exBase 将异构迁移划分为标准化五步法：

```
 准备工作与环境授权 ──> 配置迁移规则/模板 ──> 结构/应用智能评估 ──> 结构迁移+数据同步 ──> 数据一致性比对校验
```

### 3.1 阶段一：准备工作与环境预检
- **用户授权**：
  - 源库（如 Oracle）：授予 `SELECT ANY DICTIONARY`、`SELECT_CATALOG_ROLE`、闪回查询权限及日志挖掘（LogMiner）所需权限。
  - 目标库（Vastbase）：授予目标 Schema 的建表、建视图、写入与执行权限。
- **日志与归档配置**：
  - 在线增量模式下，源库需开启归档日志（ARCHIVELOG）及附加日志（Supplemental Logging，针对全表或主键）。

### 3.2 阶段二：迁移规则管理与模板匹配
- 内置大量成熟的“最佳实践迁移规则模板”，用户亦可自定义：
  - 数据类型映射（如 Oracle `VARCHAR2` → Vastbase `VARCHAR`，`NUMBER` → `NUMERIC`）；
  - 标识符大小写转换策略（强制大写/小写/保持原样）；
  - 索引与约束创建时机编排（数据导入前创建还是导入后批量创建）。

### 3.3 阶段三：对象与应用迁移评估
1. **对象评估**：
   - 自动扫描所有源库对象，划分为三大类：
     - **兼容对象**：无需修改，目标库直接 100% 支持；
     - **可转换对象**：通过 exBase 规则引擎自动智能重写替换后可在目标库成功创建；
     - **不兼容对象**：标记具体不支持的语法关键字与代码行，给出人工改造指导。
   - 自动生成对象评估概况与人天耗时预算。
2. **应用评估**：
   - 自动扫描应用层 SQL 文本或 MyBatis XML 文件，识别特定函数、多表写法与专有语法的兼容度。

### 3.4 阶段四：离线全量 vs 在线增量迁移

| 迁移模式 | 适用业务场景 | 核心机制与特点 | 停机窗口要求 |
| :--- | :--- | :--- | :--- |
| **离线全量迁移** | 数据量小（GB 级别）或允许充足停机时间 | 停止源库写业务，并发批量抽取表结构与数据后直接载入目标库，逻辑简单直接。 | 整个迁移过程需完全停机 |
| **在线增量迁移** | 生产核心系统（TB 级别），停机窗口极短 | **全量加载 + 增量捕获无缝衔接**：全量迁移期间不停止源库，DTS 同步捕获并缓存增量日志；全量结束后自动追赶增量变更。 | 仅需最终割接验证时极短停机（分钟级） |

### 3.5 阶段五：数据一致性校验与自动修复
- **行与表粒度 Hash 校验**：
  - 支持全量并行哈希比对源表与目标表的数据内容与行数一致性。
- **增量持续校验**：
  - 在增量追赶阶段持续校验，避免割接停机后全量校验耗时过长，进一步压缩窗口。
- **一键式数据修复**：
  - 若检测出不一致行或漏行，支持在界面上一键触发增量数据拉齐与修补。

---

## 四、异构迁移通道功能支持矩阵

exBase 支持丰富的源库到目标库迁移通道：

| 源端数据库类型 | 支持源版本 | 目标数据库 | 核心功能支持细节 |
| :--- | :--- | :--- | :--- |
| **Oracle** | 10g, 11g, 12c, 18c, 19c (含 RAC, CDB, PDB) | Vastbase G100 / E100 / openGauss | 支持正向结构、全量、在线增量；**DDL 增量同步**；当目标库 Vastbase ≥ V2.2 Build 15 时支持 DDL 反向增量同步。 |
| **MySQL** | MySQL 5.5, 5.6, 5.7, 8.0 | Vastbase G100 / E100 | 支持全量与增量；MySQL 5.7 / 8.0 适配了 DDL 正向与反向增量。 |
| **SQL Server** | 2008, 2012, 2016, 2019 多实例 | Vastbase G100 / E100 | 支持指定端口添加多实例，支持对象与全量增量迁移（函数/存储过程支持 SQL 转换）。 |
| **PostgreSQL** | PG 9.6, 10, 11, 12, 13, 14 | Vastbase G100 | 原生支持结构、全量及基于逻辑复制槽的增量数据同步。 |
| **Vastbase G100** | Vastbase 全系列 | Vastbase G100 / E100 | 支持库间流转迁移；增量 DDL 要求采集端版本 ≥ 2.2.15 PSU3。 |
| **向量数据库** | 专用向量库 | Vastbase G100 向量引擎 | 支持高维向量数据结构与向量索引的规范化迁移。 |

---

## 五、高阶特性：双向同步与反向逃生通道

### 5.1 双向增量同步（Active-Active 保证）
- 在完成全量迁移后，同时建立：
  - `源库 A → 目标库 B`（正向增量链路）
  - `目标库 B → 源库 A`（反向增量链路）
- **防数据回环机制**：DTS 内部带有全局唯一事务标记与回环过滤算法，避免同一笔事务在 A 库与 B 库之间形成死循环写入，保证最终一致性。

### 5.2 反向迁移逃生通道（割接保障兜底）
- **传统割接痛点**：业务切换到新国产库运行数小时后，一旦出现无法预知的业务异常需要回退，原数据库缺乏这几个小时的新业务数据，导致回退失败。
- **exBase 逃生方案**：
  - 割接完成后，原库不销毁，反向增量链路持续将 Vastbase 上的新业务数据实时反哺回原 Oracle/MySQL 库。
  - 遇到严重阻断故障时，应用连接直接切回原库，**数据完全连续无断点**，为核心业务迁移提供最强的兜底安全感。

---

## 六、应用改造辅助工具：Mapper 扫描与 SQL 智能转换

### 6.1 MyBatis Mapper 自动化扫描
- **输入支持**：支持批量上传单个 `.xml` 文件（单文件 ≤ 100KB，最多 100 个）或 `.zip` 压缩包（≤ 10MB，最多 10 个）。
- **自动化分析**：
  - 提取 XML 内全部 SQL 语句，逐条分析与目标国产库语法的匹配度；
  - 统计“总 SQL 数、兼容 SQL 数、可转换 SQL 数、不兼容 SQL 数”；
  - 导出带有行号与修改建议的独立 HTML 格式应用评估报告。

### 6.2 在线 SQL 智能重写转换
在 exBase 管理界面中提供即席 SQL 转换器：
- 选择源端（如 Oracle）与目标端（如 Vastbase G100）；
- 输入原生复杂 SQL / 存储过程代码；
- 规则引擎自动输出重写后的目标 SQL（如自动处理伪列、序列取值 `seq.nextval` 转换、日期类型转算、空串语义调整等）。

---

## 七、系统部署与服务运维管理

### 1. 服务控制与启停命令
exBase 统一通过 Linux Systemd 进行进程服务守护管理：

```bash
# === 1. 启动全套服务 ===
systemctl start exbase_confdb  # 启动系统元数据库
systemctl start zookeeper      # 启动协调服务
systemctl start kafka          # 启动消息队列中间件
systemctl start dts-metanode   # 启动 DTS 元数据服务
systemctl start dts-nodemgr    # 启动 DTS 采集节点服务
systemctl start exbase         # 启动核心 Web 与调度控制台

# === 2. 检查各服务组件运行状态 ===
systemctl status exbase
systemctl status dts-nodemgr
systemctl status dts-metanode
systemctl status exbase_confdb
systemctl status kafka
systemctl status zookeeper

# === 3. 安全停止服务（按逆序停止） ===
systemctl stop exbase
systemctl stop dts-nodemgr
systemctl stop dts-metanode
systemctl stop kafka
systemctl stop zookeeper
systemctl stop exbase_confdb
```

### 2. 迁移最佳实践运维建议
1. **JVM 调优**：在大数据量迁移场景下，调整 `exbase` 服务 JVM 堆内存（建议 `-Xms8g -Xmx16g`），避免高并发元数据校验导致 GC 暂停。
2. **大事务分段缓存**：在 Oracle / PG 采集端开启大事务分段写入机制，防止源库偶发的大批次批处理打爆 Kafka 消息大小限制。
3. **网络与并发控制**：全量迁移时根据网络带宽与目标库磁盘 IOPS 吞吐，合理限制单个作业的表抽取并发度（建议 4 ~ 8 并发）。
