横空出世!一款开源的数据同步工具,稳定又高效,好用到爆!

在开发项目的时候,我们经常会遇到数据同步的场景。例如将开发环境的数据库表同步到测试环境,将MySQL中的数据同步到ES中。今天给大家分享一款好用的数据同步工具DBSyncer,自带可视化界面,希望对你有所帮助!

简介

DBSyncer是一款开源的数据同步工具,支持MySQL、Oracle、PostgreSQL、Elasticsearch(ES)、Kafka、File等同步场景,目前在Gitee上已有3.1k+Star

DBSyncer具有如下特性:

  • 组合驱动:支持自定义库与库的同步组合,例如可以将MySQL中的数据同步到ES。
  • 实时监控:支持全量同步和增量同步,可以监控同步运行状态、结果、同步日志和系统日志。
  • 开发插件:支持编写代码自定义转化同步逻辑。

下面是DBSyncer使用过程中的效果图,功能还是挺实用的!

安装

使用Docker来安装DBSyncer是非常方便的,我们将采用此种方式。

  • 首先通过如下命令下载镜像;
bash 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/xhtb/dbsyncer:latest
  • 下载完成后通过如下命令运行对应的容器;
bash 复制代码
docker run -p 18686:18686 --name=db-syncer \
-e TZ="Asia/Shanghai" \
-v /mydata/db-syncer/data:/app/dbsyncer/data \
-v /mydata/db-syncer/plugins:/app/dbsyncer/plugins \
-d registry.cn-hangzhou.aliyuncs.com/xhtb/dbsyncer:latest
  • 容器运行后,就可以访问DBSyncer的Web控制台了,默认账号密码为admin:admin,访问地址:http://192.168.3.101:18686

使用

这里将以电商系统中商品表的数据同步为例,来介绍下DBSyncer的使用。mall项目是一套基于SpringBoot3 + Vue 的电商系统(Github标星60K),后端支持多模块和最新微服务架构,采用Docker和K8S部署。包括前台商城项目和后台管理系统,能支持完整的订单流程!涵盖商品、订单、购物车、权限、优惠券、会员、支付等功能!

项目演示:

MySQL数据同步

  • 使用的简化版商品表结构如下;
sql 复制代码
CREATE TABLE `product`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sub_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `price` decimal(10, 2) NULL DEFAULT NULL,
  `pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
  • 这里创建两个数据库mall_devmall_testmall_dev中的product表包含商品数据,mall_test中的不包含商品数据,我们将把mall_dev中的数据同步到mall_test中去;
  • 我们需要在DBSyncer中添加好mall_devmall_test对应的连接;
  • 然后再添加驱动,设置好数据源与目标源;
  • 然后配置好字段的映射关系,如果是所有字段都需要同步的话全选即可;
  • 之后点击驱动右上角的启动按钮即可实现数据同步,同步成功后在数据库中也可以看到对应的数据了。

MySQL同步到ES

  • 在同步数据到ES之前,我们需要先创建好product对应的索引;
bash 复制代码
PUT /product_index
{
  "mappings": {
    "properties": {
       "id": {
        "type": "long"
      },
      "title": {
        "type": "text"
      },
      "sub_title": {
        "type": "text"
      },
      "pic": {
        "type": "text"
      },
      "price": {
        "type": "double"
      }
    }
  }
}
  • 然后在DBSyncer中添加ES对应的连接,如果ES未设置密码的话随便输一个就行;
  • 之后再添加一个从MySQL同步到ES的驱动;
  • 然后配置好驱动中的字段映射关系,注意配置好主键;
  • 点击驱动右上角的启动按钮进行数据同步;
  • 同步成功后可以在ES中查询到对应的数据。

总结

今天给大家分享了DBSyncer这款可视化数据同步工具的使用,主要是实现了MySQL和ES之间的全量同步,当然DBSyncer还能支持增量同步,以及通过插件自定义同步逻辑,感兴趣的小伙伴可以研究下!

项目地址

gitee.com/ghi/dbsynce...

相关推荐
液态不合群1 小时前
[特殊字符] MySQL 覆盖索引详解
数据库·mysql
virus59452 小时前
悟空CRM mybatis-3.5.3-mapper.dtd错误解决方案
java·开发语言·mybatis
计算机毕设VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
没差c3 小时前
springboot集成flyway
java·spring boot·后端
三水不滴3 小时前
Redis 过期删除与内存淘汰机制
数据库·经验分享·redis·笔记·后端·缓存
时艰.3 小时前
Java 并发编程之 CAS 与 Atomic 原子操作类
java·开发语言
编程彩机3 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪3 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
Yvonne爱编码4 小时前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
像少年啦飞驰点、5 小时前
零基础入门 Spring Boot:从“Hello World”到可上线微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发