# dbmove **Repository Path**: yumuai/dbmove ## Basic Information - **Project Name**: dbmove - **Description**: DBMove是AI驱动的信创数据库移迁工具链,提供了一套完整的工具链(评估、迁 移、验证、割接、监控),可在有限的时间内,平滑、高质量、低代价地实现国产数据库替代。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.dbmove.com - **GVP Project**: No ## Statistics - **Stars**: 130 - **Forks**: 20 - **Created**: 2024-11-14 - **Last Updated**: 2025-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DBMove ## 介绍 [DBMove](https://www.dbmove.com/)是AI驱动的信创数据库移迁工具链,提供了一套完整的工具链(评估、迁移、验证、割接、监控),可在有限的时间内, 平滑、高质量、低代价地实现国产数据库替代。 完整的DBMove介绍请参考[这篇文档](https://gitee.com/yumuai/dbmove/blob/master/belf-docs/intro.pdf)。 ## 应用场景 DBMove支持各种数据迁移、数据改造类场景: 1. 异构数据库迁移(如信创迁移,国产数据库替代): **改造迁移**:新业务系统重建,将老业务系统数据迁移过来,可能涉及到数据的合并、拆分、转换,将多个源数据库迁移目标数据库。 **平替迁移**:将原有业务系统平行迁移到新的环境,新环境可能是硬件、OS和DB是同类(软件升级);也可能和原有环境软硬件不一样, 数据库替换为另一种数据库。平替迁移,需要将原有数据库的所有数据、数据库对象(视图、函数、触发器、存储过程等)都完整迁移过来。 2. 数据库**在线备份与灾备应用**:DBMove支持在线不停机将业务数据库数据实时同步到备用数据库。通过业务割接工具,可实现异地实时灾备。 3. **数据库在线扩容升级**:原有业务系统长期运行,数据库中数据膨胀过快,磁盘不足,无法停机升级硬件。可使用DBMove在线将数据库 复制到新的硬件,在实时割接到新的硬件上。 4. **数据库版本升级**:在新硬件上安装新版数据库,同样使用DBMove的在线复制和实时割接能力,实现在线数据库版本升级。 5. **数据库系统打补丁**:在新硬件上安装同版本数据库,打上补丁,同样使用DBMove的在线复制和实时割接能力,实现在线数据库打补丁。 ## DBMove核心功能 ### 开源版本 * **国产数据库支持**: DBMove对国产数据库做了非常好的支持,在函数、数据类型、语法特性上做了深入的细化处理,对于国产数据库替代有较大帮助。 * 支持迁移前的技术评估和数据库选型:支持数据库一对一评估、**一对多评估**。 * 支持同构数据库、异构数据库之间的迁移。 * 支持**流批一体化**数据迁移:全量备份,增量同步,全量和增量一体化同步。 * 确保迁移后数据一致性(尤其适用于目标数据库有自增字段做主键的场景) * 支持常见的**数据转换DBT**(Data Build Tool)功能(预计2024年12月底的V1.0实现): * 表/库一对一、一对多、多对一迁移 * 支持字段的合并、拆分 * 支持源端字段过滤 * 支持目标端新增字段 * 支持字段类型转换 * 支持字段值转换 * 支持通过计算在目标端新增字段 * 支持读取阶段或写入阶段做规则转换 * 支持**数据库对象迁移**:如表、索引、外键、约束、视图、触发器、同义词、自定义函数、自定义类型、存储过程、同义词的迁移。 * 基于大模型实现数据库对象**DDL转换**:DBMove与其他数据库迁移工具最大的不同,是引入大模型LLM技术对各种复杂数据库对象进行自动转换。未来DBMove会大量采用LLM以实现更多智能化功能。 * 支持**整库迁移**(Datax或Seatunnel对整库迁移支持极为有限)。 * 支持迁移后的数据验证。 * 数据库SQL转换,可基于大模型智能纠错(测试中,预计2024年11月底实现)。 ### 商业版本 对于商业客户,DBMove通过“[北京元目智能科技有限公司](https://www.dbmove.com/)”还提供以下功能和服务: * 提供信创**业务整体迁移**服务,包括操作系统、应用程序、中间件、数据库的迁移。 * 提供更丰富的数据库适配;支持关系数据库迁移到常见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一般需要[部署](https://gitee.com/-/ide/project/yumuai/dbmove/edit/master/-/belf-docs/deploy.png)在单独的机器上。如果还需要业务割接功能,则需要在源端和目标端各部署一个Agent,用于监控业务逻辑和控制割接流程。 ## 安装教程 1. Windows下的手动编译和构建可参考[win_setup.md](https://gitee.com/yumuai/dbmove/blob/master/belf-docs//setup/win_setup.md) 2. Linux下的手动编译和构建可参考目录belf-docs/setup/linux_package下的脚本 ## Demo演示 请参考[在线演示](https://www.dbmove.com/consult.html) ## 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 1. 根据选择的运行方式做依赖准备, - 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/ 2. 发行版 - 下载发行版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/ 3. 源代码构建模式 - git clone https://gitee.com/yumuai/dbmove.git - 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 4. 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 4. Linux curl一键安装模式 - curl -sSL "https://www.dbmove.com/install.sh" | bash ## 参与贡献 1. liupf 2. TJ <9177180@qq.com> 3. zhangxl 4. wangfj 5. lizm ## 感谢 感谢“[北京元目智能科技有限公司](https://www.dbmove.com/)”将其投资数百万开发的商业化产品核心功能完整开源给社区。