Data Migration

可验证的数据迁移

从 Oracle、Tibero、SQL Server 到 PostgreSQL、MySQL、MariaDB;从本地机房到云。以七阶段方法论、一致性验证与回退计划控制风险。

Scenarios

迁移场景

异构数据库迁移

将商业数据库的模式、代码与数据转换到开源数据库。

  • Oracle → PostgreSQL
  • Tibero → PostgreSQL
  • SQL Server → PostgreSQL / MySQL
  • Oracle → MySQL / MariaDB

本地 → 云

将自建数据库迁移到云虚拟机或托管数据库。

  • RDS · Aurora
  • Azure flexible server
  • Cloud SQL · AlloyDB
  • NCP Cloud DB

同构迁移与升级

同一引擎的大版本升级与服务器迁移。

  • PostgreSQL 大版本升级
  • MySQL 5.7 → 8.x
  • MariaDB LTS 切换
  • InfluxDB 版本迁移评估

整合与拆分

整合多个数据库,或按业务拆分。

  • 模式整合
  • 业务域拆分
  • 只读分析副本
  • 归档分离

Methodology

七阶段迁移方法论

每个阶段都有交付物和进入下一阶段的门槛。

  1. 1. 评估 (Assessment)

    调查对象、数据量、事务模式与依赖应用,估算自动转换率与手工工作量。

  2. 2. 设计 (Design)

    确定目标架构、数据类型映射、字符集、迁移方式(批量/CDC)与停机目标。

  3. 3. 转换 (Conversion)

    转换模式、PL/SQL、视图、触发器与序列,确定应用 SQL 修改范围。

  4. 4. 迁移 (Migration)

    初始加载后以 CDC 追平增量,并通过演练实测耗时。

  5. 5. 验证 (Verification)

    比较行数、校验和、聚合与业务查询结果,并进行性能测试。

  6. 6. 切换 (Cutover)

    停写 → 最终同步 → 验证 → 切换连接,并作出 Go/No-Go 判定。

  7. 7. 稳定 (Stabilization)

    切换后集中监控性能与错误,调优后移交运维团队。

Migration flow

迁移流程

迁移流程示例——工具组合取决于源库、目标库与停机目标。

Tools

迁移工具

按目的组合工具,不预设特定工具。

主要迁移工具与用途
工具用途备注
ora2pgOracle → PostgreSQL 模式、代码与数据转换开源 · 以迁移报告评估难度
AWS DMS · DMS Schema Conversion · AWS SCT迁移到 AWS 的异构/同构迁移,全量 + CDCSCT 为桌面工具,DMS SC 为托管服务
Azure Database Migration ServiceMySQL → Azure Database for MySQL 等不支持 Oracle → PostgreSQL——使用 ora2pg 等
Migration service in Azure Database for PostgreSQLPostgreSQL → Azure flexible server在线/离线
Google Database Migration ServiceMySQL/PostgreSQL 同构;Oracle、SQL Server → Cloud SQL for PostgreSQL / AlloyDB转换工作区 · CDC
NCP Database Migration Service迁移到 NAVER Cloud Cloud DB支持路径以官方文档为准
pgloader将 MySQL、SQL Server 等加载到 PostgreSQL可定制类型转换规则
mysqldump · mydumper/myloaderMySQL/MariaDB 逻辑备份与并行加载大数据量使用 mydumper
Debezium (CDC)变更数据捕获 → 基于 Kafka 的同步最短停机、并行运行
Oracle GoldenGate源端 CDC(客户已持有时)以客户现有许可为准
Tibero 虽兼容 Oracle,但并非 ora2pg 官方支持的源库。我们会先在客户环境中通过 PoC 确认连接方式与转换范围,无法自动转换的对象纳入手工转换清单管理。

Validation

一致性验证

不是证明“已迁移”,而是证明“完全一致”。

  • 按表比较行数
  • 按数据块比较校验和/哈希
  • 比较合计、最小、最大等聚合
  • 比较核心业务查询结果
  • 确认约束、索引与序列当前值
  • 检查字符集转换损失(如 KO16MSWIN949·EUC-KR → UTF-8)
  • 检查日期、时区与数值精度差异
  • 处理 Oracle 空字符串视为 NULL 的差异
  • 验证 LOB 与二进制数据
  • 对照性能基线比较响应时间

Downtime & rollback

最短停机与回退计划

缩短停机

  • 初始加载 + CDC,切换时只需同步增量
  • 按业务域分阶段迁移
  • 通过切换演练实测耗时
  • 提前公告只读时段

回退计划

  • 切换后源库保留约定期限
  • 必要时以反向复制保持源库同步
  • 事先确定 Go/No-Go 标准与决策人
  • 记录不可回退点(Point of no return)

Deliverables

交付物

  • 现状评估报告(难度与风险)
  • 数据类型与对象映射说明
  • 转换结果与手工清单
  • 迁移手册(各步骤命令与耗时)
  • 一致性验证报告
  • 切换与回退计划
  • 性能测试结果
  • 运维交接文档

FAQ

常见问题

能否零停机迁移?

多数情况下 CDC 可大幅缩短停机,但最终同步与切换连接通常仍需短暂停写。目标时长依据演练结果确定。

PL/SQL 很多,能否转换?

评估阶段先用 ora2pg 等工具的报告估算自动与手工转换范围,再据此确定工期与费用。

是否支持 Tibero?

Tibero 虽兼容 Oracle,但并非 ora2pg 官方支持的源库。我们会先在客户环境中通过 PoC 确认连接方式与转换范围,无法自动转换的对象纳入手工转换清单管理。

迁移后能否委托运维?

可以,可衔接云 MSP 与开源数据库维护服务。

从现状开始,一起检查您的云与数据库?

告诉我们您使用的云、数据库版本、架构与困扰,我们将提出评估范围与实施方式。