介绍
DBMove是AI驱动的信创数据库移迁工具链,提供了一套完整的工具链(评估、迁移、验证、割接、监控),可在有限的时间内, 平滑、高质量、低代价地实现国产数据库替代。
完整的DBMove介绍请参考这篇文档https://gitee.com/yumuai/dbmove/blob/master/belf-docs/intro.pdf。
应用场景
DBMove支持各种数据迁移、数据改造类场景:
- 异构数据库迁移(如信创迁移,国产数据库替代):
改造迁移:新业务系统重建,将老业务系统数据迁移过来,可能涉及到数据的合并、拆分、转换,将多个源数据库迁移目标数据库。 平替迁移:将原有业务系统平行迁移到新的环境,新环境可能是硬件、OS和DB是同类(软件升级);也可能和原有环境软硬件不一样, 数据库替换为另一种数据库。平替迁移,需要将原有数据库的所有数据、数据库对象(视图、函数、触发器、存储过程等)都完整迁移过来。 - 数据库在线备份与灾备应用:DBMove支持在线不停机将业务数据库数据实时同步到备用数据库。通过业务割接工具,可实现异地实时灾备。
- 数据库在线扩容升级:原有业务系统长期运行,数据库中数据膨胀过快,磁盘不足,无法停机升级硬件。可使用DBMove在线将数据库 复制到新的硬件,在实时割接到新的硬件上。
- 数据库版本升级:在新硬件上安装新版数据库,同样使用DBMove的在线复制和实时割接能力,实现在线数据库版本升级。
- 数据库系统打补丁:在新硬件上安装同版本数据库,打上补丁,同样使用DBMove的在线复制和实时割接能力,实现在线数据库打补丁。
DBMove核心功能
开源版本
- 国产数据库支持: DBMove对国产数据库做了非常好的支持,在函数、数据类型、语法特性上做了深入的细化处理,对于国产数据库替代有较大帮助。
- 支持迁移前的技术评估和数据库选型:支持数据库一对一评估、一对多评估。
- 支持同构数据库、异构数据库之间的迁移。
- 支持流批一体化数据迁移:全量备份,增量同步,全量和增量一体化同步。
- 确保迁移后数据一致性(尤其适用于目标数据库有自增字段做主键的场景)
- 支持常见的数据转换DBT(Data Build Tool)功能(预计2024年12月底的V1.0实现):
- 表/库一对一、一对多、多对一迁移
- 支持字段的合并、拆分
- 支持源端字段过滤
- 支持目标端新增字段
- 支持字段类型转换
- 支持字段值转换
- 支持通过计算在目标端新增字段
- 支持读取阶段或写入阶段做规则转换
- 支持数据库对象迁移:如表、索引、外键、约束、视图、触发器、同义词、自定义函数、自定义类型、存储过程、同义词的迁移。
- 基于大模型实现数据库对象DDL转换:DBMove与其他数据库迁移工具最大的不同,是引入大模型LLM技术对各种复杂数据库对象进行自动转换。未来DBMove会大量采用LLM以实现更多智能化功能。
- 支持整库迁移(Datax或Seatunnel对整库迁移支持极为有限)。
- 支持迁移后的数据验证。
- 数据库SQL转换,可基于大模型智能纠错(测试中,预计2024年11月底实现)。
商业版本
对于商业客户,DBMove通过北京元目智能科技有限公司还提供以下功能和服务:
- 提供信创业务整体迁移服务,包括操作系统、应用程序、中间件、数据库的迁移。
- 提供更丰富的数据库适配;支持关系数据库迁移到常见NoSQL数据库。
- 支持复杂数据迁移需求,如多库合并、多表合并、单库拆分、单表拆分。
- 支持多源异构数据迁移(如数据库表和excel/csv文件联合迁移)。
- 提供数据库对象依赖图,根据依赖图自动制定迁移先后顺序。
- 提供业务迁移技术选型和迁移方案定制服务。
- 提供业务瞬时割接工具:在数据库和应用程序迁移完成时,进行业务的自动瞬时割接,确保业务一致性,确保数据不丢失、业务不中断。
- 确保数据安全迁移:对传输数据及进行加密,符合国密和军密要求;对数据的访问提供分级授权和安全审计;对传输网络进行加固。
- 支持异构网络环境的数据迁移,如内网和外网之间、不同云平台之间的迁移。
- 提供迁移后的数据库查询优化,确保业务顺畅执行。
- 提供可本地部署的私有大模型。
- 可提供数据迁移的定制开发和个性化服务。
支持的数据源
源端数据库
已经支持:
- Oracle
- SQL Server
- MySQL
以下是源端计划支持的:
- DB2
- PostgreSQL
目标端数据库
已经支持:
- 达梦Dameng
- 金仓Kingbase
- 南大通用GBase
- 神州通用Oscar
以下是目标端计划支持的:
- TiDB
- Oceanbase
- OpenGauss
- TDSQL
- MySQL
- Oracle
- PostgreSQL
软件架构
DBMove主要基于Java语言开发(OpenJDK-17+),大模型训练和推理使用Python(Python3.1.12+)完成。 以下是各个子工程的说明:
- belf-migrate:实现核心引擎,数据库的评估、数据同步、数据库结构同步、数据验证都在本工程实现。
- belf-console:管理控制台的后端java实现。
- belf-consoleWeb:管理控制台的前端VUE实现。
- belf-docs: DBMove的相关技术文档。
DBMove一般需要部署在单独的机器上。如果还需要业务割接功能,则需要在源端和目标端各部署一个Agent,用于监控业务逻辑和控制割接流程。
安装教程
- Windows下的手动编译和构建可参考win_setup.md
- Linux下的手动编译和构建可参考目录belf-docs/setup/linux_package下的脚本
Demo演示
请参考在线演示
Docker安装
DBMove可以在Linux、Windows、Mac平台上支持下列三种运行方式:
- 发布版:依赖MySQL≥8.0、Redis ≥7.4、JDK≥17、Python≥3.1.12
- 源代码构建模式:依赖MySQL ≥8.0、Redis ≥7.4、JDK ≥17、Gradle ≥8.0
- Docker模式:依赖Docker Engine、Docker Compose
- 根据选择的运行方式做依赖准备,
- MySQL安装参考: https://dev.mysql.com/doc/refman/8.0/en/installing.html
- Redis安装参考: https://redis.io/docs/latest/get-started/
- JDK安装参考: https://openjdk.org/projects/jdk/17/
- Gradle安装参考: https://gradle.org/install/
- Docker Engine安装参考: https://docs.docker.com/engine/install/
- Docker Compose安装参考: https://docs.docker.com/compose/install/
- 发行版
- 下载发行版https://www.dbmove.com/belf-migrate-1.0.jar 和 https://www.dbmove.com/belf-console-1.0.jar
- 下载、启动MySQL并初始化数据
- source belf-console/sql/belf.sql
- 下载、启动Redis
- 修改相关配置文件
- belf-console/src/main/resources/application-druid.yml
- belf-migrate/conf/belf.properties
- 启动belf-migrate: java -jar belf-migrate-1.0.jar
- 启动belf-console: java -jar belf-console-1.0.jar
- 访问DBMove http://localhost:8080/
- 源代码构建模式
- git clone dbmove: DBMove是AI驱动的信创数据库移迁工具链,提供了一套完整的工具链(评估、迁移、验证、割接、监控),可在有限的时间内,平滑、高质量、低代价地实现国产数据库替代。
- cd belf-migrate; gradle -x test -i shadowJar; java -jar belf-migrate-1.0.jar
- cd belf-console; gradle -x test -i bootjar; java -jar belf-console-1.0.jar
- Docker模式
- 启动
- docker-compose up -d # pull images from registry
- docker-compose -f docker-compose_build.yml up -d --build # build images local
- 关闭 docker-compose down
- 启动
- Linux curl一键安装模式
- curl -sSL "https://www.dbmove.com/install.sh" | bash