# db2s **Repository Path**: ywlianghang/db2s ## Basic Information - **Project Name**: db2s - **Description**: db2s是一款开源的静态数据库运维工具,具备异构/同构数据库的数据迁移、数据校验、表结构迁移、表结构校验、对象迁移、对象校验、数据丢失恢复,差异结构/数据的自动修复等功能,同时能针对结果一键生成报表,支持MySQL、Oracle、SqlServer、Mariadb、DM8、PG等主流数据库。 - **Primary Language**: Go - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-11-03 - **Last Updated**: 2025-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # db2s #### 介绍 db2s是一款开源的静态数据库运维工具,具备异构/同构数据库的数据迁移、数据校验、表结构迁移、表结构校验、对象迁移、对象校验、数据丢失恢复,差异结构/数据的自动修复等功能,同时能针对结果一键生成报表,支持MySQL、Oracle、SqlServer、Mariadb、DM8、PG等主流数据库。 #### 软件架构 db2s工具支持以下几种常见业务需求场景: 1. **MySQL主从复制**:主从复制中断后较长时间才发现,且主从间差异的数据量太多,这时候通常基本上只能重建复制从库,如果利用pt-table-checksum先校验主从数据一致性后,再利用pt-table-sync工具修复差异数据,这个过程要特别久,时间代价太大。 2. **MySQL MGR组复制**:MySQL MGR因故崩溃整个集群报错退出,或某个节点异常退出,在恢复MGR集群时一般要面临着先检查各节点间数据一致性的需求,这时通常为了省事会选择其中一个节点作为主节点,其余从节点直接复制数据重建,这个过程要特别久,时间代价大。 3. **上云下云业务场景**:目前上云下云的业务需求很多,在这个过程中要进行大量的数据迁移及校验工作,如果出现字符集改变导致特殊数据出现乱码或其他的情况,如果数据迁移工具在迁移过程中出现bug或者数据异常而又迁移成功,此时都需要在迁移结束后进行一次数据校验才放心。 4. **异构迁移场景**:有时我们会遇到异构数据迁移场景,例如从Oracle迁移到MySQL,通常存在字符集不同,以及数据类型不同等情况,也需要在迁移结束后进行一次数据校验才放心。 5. **定期校验场景**:作为DBA在维护高可用架构中为了保证主节点出现异常后能够快速放心切换,就需要保证各节点间的数据一致性,需要定期执行数据校验工作。 6. ** 以上这些场景,都可以利用db2s工具来满足。 #### 安装教程 # 下载配置Oracle驱动程序 --- 如果需要校验Oracle数据库,则还需要先下载Oracle数据库相应版本的驱动程序。例如:待校验的数据库为Oracle 11-2,则要下载Oracle 11-2的驱动程序,并使之生效,否则连接Oracle会报错。 ## 下载Oracle Instant Client 从 [https://www.oracle.com/database/technologies/instant-client/downloads.html](https://www.oracle.com/database/technologies/instant-client/downloads.html) 下载免费的Basic或Basic Light软件包。 - oracle basic client, instantclient-basic-linux.x64-11.2.0.4.0.zip - oracle sqlplus, instantclient-sqlplus-linux.x64-11.2.0.4.0.zip - oracle sdk, instantclient-sdk-linux.x64-11.2.0.4.0.zip ## 配置oracle client并生效 ```shell shell> unzip instantclient-basic-linux.x64-11.2.0.4.0.zip shell> unzip instantclient-sqlplus-linux.x64-11.2.0.4.0.zip shell> unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip shell> mv instantclient_11_2 /usr/local shell> echo "export LD_LIBRARY_PATH=/usr/local/instantclient_11_2:$LD_LIBRARY_PATH" >> /etc/profile shell> source /etc/profile ``` ## other db 不需要下载额外驱动 # 源码编译 db2s工具采用GO语言开发,您可以自行编译生成二进制文件。 编译环境要求使用golang 1.23及以上版本。 请参考下面方法下载源码并进行编译: ```shell shell> git clone https://gitee.com/ywlianghang/db2s.git shell> go build -o db2s master.go shell> chmod +x db2s shell> mv db2s /usr/local/bin ``` 也可以直接利用Docker环境编译,在已经准备好Docker运行环境的基础上,执行如下操作即可: ```shell shell> git clone https://gitee.com/ywlianghang/db2s.git shell> cd db2s #构建Docker编译环境 shell> docker build -t db2s . #查看Docker镜像列表 shell> docker images | grep db2s db2s latest a716d9d018b3 27 minutes ago 1.38GB #创建一个新容器,编译db2s shell> docker run -itd --name=db2s db2s #将编译好的二进制文件copy到宿主机 shell> docker cp db2s:/go/release/db2s . shell> ./db2s -v db2s version 3.0.0 ``` 这就编译完成并可以开始愉快地玩耍了。 #### 使用说明 --- ```shell # 不带任何参数 shell> ./db2s If no parameters are loaded, view the command with --help or -h # 查看版本号 shell> ./db2s -v db2s version 3.0.0 # 查看使用帮助 shell> ./db2s -h NAME: db2s - An opensource table and data checksum tool by LiangHang USAGE: db2s [global options] command [command options] [arguments...] VERSION: 3.0.0 tools, Release GA-1 AUTHOR: LiangHang > COMMANDS: init, i initialize a object auth, a tools auth rows data, rows Manipulate rows data, including data migration and verification meta data, meta Manipulate meta data, including data migration and verification task schedule, task Generate configuration and check of corresponding modules help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --help, -h show help --version, -v print the version ``` # 使用文档 --- - [db2s manual](https://gitee.com/ywlianghang/db2s/blob/master/docs/db2s-manual.md) - # 版本历史 --- - [版本历史)](https://gitee.com/ywlianghang/db2s/blob/master/relnotes/CHANGELOG.zh-CN.md) # 已知缺陷 --- 截止最新的3.0.0版本中,详见 [已知缺陷](https://gitee.com/ywlianghang/db2s/blob/master/docs/db2s-manual.md#已知缺陷)。 # 问题反馈 --- - [问题反馈 gitee](https://gitee.com/ywlianghang/db2s/issues) # 联系我们 --- 扫码关注微信公众号 # 目录 - [1. 介绍](#1-介绍) - [2. 功能](#2-功能) - [2.1 主要功能](#21-主要功能) - [2.2 附加功能](#22-附加功能) - [3. 使用说明](#3-使用说明) - [4. 结论](#4-结论) # 1. 介绍 这是一个关于示例文档的介绍部分。您将了解如何创建一个结构清晰的文档。 # 2. 功能 在这一部分,我们介绍文档的主要功能。 ## 2.1 主要功能 - 功能1:描述主要功能。 - 功能2:描述第二个主要功能。 ## 2.2 附加功能 - 附加功能1:描述附加功能。 - 附加功能2:描述第二个附加功能。 # 3. 使用说明 这一部分提供了如何使用本示例文档的详细说明。 # 4. 结论 在结论部分,我们总结文档的内容和要点。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)