测试环境MySQL迁移Vastbase(海量数据库)完整改造与落地实施方案
一、方案整体说明
1.1 适用场景
本方案针对测试环境 (开发测试、功能测试、集成测试环境),区别于生产环境,无需超低延迟在线同步、无需灰度割接、无需长期双活,核心目标:零报错迁移、100%数据一致、业务功能全通、环境完全可用。
适配内核:Vastbase G100(openGauss/PG生态),完美替代原有MySQL测试库,支撑后续全量功能测试、回归测试、迭代开发。
1.2 核心迁移目标(验收标准)
- 结构一致:所有库、表、字段、索引、约束完全迁移,无缺失、无报错
- 数据一致:全量表数据行数、字段内容、特殊字符、空值100%匹配源MySQL
- 功能可用:改造后业务系统可正常连接、增删改查、批量任务、定时任务全正常
- 无兼容问题:所有原有SQL、接口、业务逻辑无报错、无逻辑异常
1.3 迁移整体流程
环境准备 → 源库摸底与兼容性扫描 → DDL结构改造适配 → 应用代码适配改造 → 全量数据迁移 → 数据一致性校验 → 环境切换验证 → 全业务回归测试 → 环境固化归档
二、前期准备工作(落地前置项)
2.1 环境资源准备
- 源环境:测试环境MySQL(固定版本、固定实例,迁移期间禁止变更表结构、禁止大批量数据修改)
- 目标环境:部署完成Vastbase G100测试集群(单节点/集群均可,测试环境优先稳定)
- 基础参数统一(关键,杜绝乱码/排序问题)
- 字符集:UTF8
- 时区:Asia/Shanghai(+8)
- 排序规则:统一适配MySQL原有规则
- 关闭严格权限、优化测试环境连接数、内存参数,保障导入性能
- 工具准备:Vastbase迁移工具exBase、数据导出工具mydumper、数据校验脚本、数据库连接工具、SQL批量替换工具
2.2 源库冻结与摸底(保障100%成功核心)
迁移正式开始前,冻结测试MySQL环境:禁止开发、测试人员新增/修改表结构、禁止批量造数、禁止执行DDL语句。
完成全量摸底,输出《测试环境数据库摸底清单》:
- 数据库数量、所有表名、字段类型、主键、自增字段、索引、唯一约束
- 存储过程、自定义函数、触发器、定时SQL任务清单
- 大表清单(单表超10w数据)、特殊字段(unsigned、datetime、text、blob)
- 业务高频SQL、分页SQL、批量新增/更新SQL清单
2.3 全量兼容性预扫描
使用Vastbase官方迁移工具对MySQL全库扫描,提前锁定所有不兼容点,提前整改,零遗留问题,规避迁移失败。
测试环境高频不兼容问题预处理:
- MySQL auto_increment:预创建序列绑定主键,同步初始值,杜绝主键冲突
- unsigned 数值类型:统一替换为对应大类型,业务层增加数值非负校验
- ifnull()、date_add()、limit 偏移分页:提前批量替换为Vastbase兼容语法
- on duplicate key update:统一改写为 insert ... on conflict ... do update 语法
- 表名字段名大小写:统一固化,解决PG生态大小写敏感问题
三、数据库结构改造方案(DDL 100%适配)
禁止直接导入MySQL原生DDL,必须经过自动转换+人工全量审核,确保结构完全兼容。
3.1 DDL标准化改造规则(测试环境专用)
- 主键自增改造:删除MySQL auto_increment,为每张自增表创建独立sequence,序列初始值与MySQL当前最大主键值一致,字段默认值绑定序列。
- 字段类型适配
- tinyint(1) → boolean/smallint
- unsigned int/bigint → 普通int/bigint,业务层约束
- datetime/timestamp → Vastbase timestamp
- varchar 长度统一适配,text/blob 直接兼容保留
- 索引与约束:全量迁移主键、唯一索引、普通索引,测试环境统一删除无用外键(提升性能、规避同步报错)
- 函数/存储过程改造:MySQL专属函数全部改写为Vastbase原生语法,逐行调试保证逻辑一致
3.2 DDL落地流程
工具批量转换全库DDL → 人工逐表核对差异 → 修正所有兼容问题 → 在Vastbase执行建库、建表、建索引、创建序列 → 验证结构创建无报错、无遗漏。
四、业务应用改造方案(测试环境适配)
数据库结构改造同步,启动应用层改造,测试环境改造轻量化、全覆盖,确保切换后零业务报错。
4.1 基础配置改造
- 替换数据库驱动:mysql-connector 替换为 Vastbase 官方JDBC驱动
- 修改数据库连接地址、端口、库名、账号密码
- 调整连接池参数(最大连接数、超时时间)适配Vastbase特性
- ORM框架适配:关闭MySQL方言,适配PG系数据库方言
4.2 代码SQL批量改造(全覆盖)
基于前期扫描的不兼容SQL清单,逐行改造、逐行自测:
- 替换所有MySQL专属函数:ifnull→coalesce、date_add/date_sub→原生时间函数
- 改写批量插入唯一键冲突更新语句(duplicate key 改 on conflict)
- 修正分页SQL、排序SQL、分组SQL语法
- 修复因大小写敏感导致的表/字段找不到问题
4.3 单元自测
改造完成后,开发本地连接Vastbase执行单元测试,所有接口、SQL执行无报错,确保应用层完全适配新数据库。
五、全量数据迁移落地实施(核心保障100%数据成功)
测试环境采用冻结静态全量迁移方案,无增量、无同步延迟,数据绝对一致,零丢失、零错乱。
5.1 迁移前置检查
- 确认MySQL测试库已冻结,无任何数据写入、更新、删除
- Vastbase库表结构全部创建完成,序列、索引正常
- 工具连接正常,集群资源充足,无磁盘、内存瓶颈
5.2 全量数据导出(源MySQL)
- 使用mydumper/VMT工具执行一致性快照导出,开启事务快照,锁表零影响,保证数据全局一致
- 大表分片导出,避免单次数据量过大导致失败
- 导出完成后,校验导出文件完整性、无报错日志
5.3 全量数据导入(目标Vastbase)
- 清空Vastbase所有业务表空数据(防止残留脏数据)
- 批量并行导入数据,严格按照主表、从表顺序导入,规避外键约束问题
- 导入完成后,执行全库 analyze,更新统计信息,避免SQL性能异常
- 重置序列值:将所有自增表序列最大值与数据表当前主键最大值对齐,避免新增数据主键冲突
六、多层级数据一致性校验(100%核验,杜绝遗漏)
迁移完成后执行三级校验,只要校验通过,即可保证迁移100%成功。
6.1 一级校验:表结构校验
对比源库与目标库:库名、表名、字段数量、字段类型、主键、索引、约束,确保完全一致,无缺失、无错误。
6.2 二级校验:数据量校验
逐表统计MySQL与Vastbase数据总行数,所有表行数完全一致,零差异。
6.3 三级校验:内容精准校验
- 抽样核心业务表:对比首条、末条、随机1000条数据字段全量内容
- 校验特殊数据:空值、null、特殊字符、中文、时间格式、0值、负数
- 大表MD5哈希全量比对,确保数据无篡改、无丢失
6.4 异常修复
若出现少量数据差异,立即定位问题、重新单表迁移,直至100%一致。
七、环境切换与全业务验证
7.1 环境切换
修改测试环境配置中心、项目配置,将数据库数据源从MySQL切换为Vastbase,重启服务、刷新缓存。
7.2 基础功能验证
- 服务正常启动、无数据库连接报错、无日志异常
- 所有页面、接口正常访问
- 新增、查询、修改、删除、批量操作功能正常
- 定时任务、后台脚本、数据同步任务执行正常
7.3 全量回归测试
测试人员执行全量功能回归用例,覆盖所有业务场景、边界场景、异常场景,确保迁移后业务无退化、无BUG。
八、问题兜底与回退方案(保障绝对成功)
8.1 实时兜底机制
迁移、改造、测试全程保留原MySQL测试库不删除、不清空,作为兜底数据源。
8.2 快速回退方案
若切换Vastbase后出现无法快速修复的问题,立即修改配置切回MySQL原环境,不影响测试工作开展,问题修复后再次重试迁移。
8.3 常见问题快速修复清单
- 主键冲突:重新同步序列最大值
- SQL报错:对照兼容清单批量修正语法
- 数据乱码:统一字符集、重新导入
- 查询缓慢:执行analyze、补建缺失索引
九、环境固化与交付归档
迁移、验证、回归全部通过后,完成环境固化,输出全套交付文档:
- 数据库兼容性改造报告
- DDL改造脚本、SQL适配清单
- 全量数据迁移日志、数据校验报告
- 应用改造说明、环境配置说明
- 迁移落地总结与问题复盘文档
至此,测试环境MySQL迁移Vastbase工作100%落地完成,环境可正常交付测试、开发使用。
十、迁移成功验收标准(最终落地达标)
- ✅ 所有库表结构完整无缺失、无报错
- ✅ 全量数据100%一致,无丢失、无错乱、无乱码
- ✅ 应用服务启动正常,无数据库异常日志
- ✅ 所有业务接口、功能、定时任务正常运行
- ✅ 全量回归测试通过率100%