DBSyncer

news2024/11/23 12:10:30

DBSyncer是一款开源的数据同步中间件,提供MySQLOracleSqlServerPostgreSQLElasticsearch(ES)KafkaFileSQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。

特点

  • 组合驱动,自定义库同步到库组合,关系型数据库与非关系型之间组合,任意搭配表同步映射关系
  • 实时监控,驱动全量或增量实时同步运行状态、结果、同步日志和系统日志
  • 开发插件,自定义转化同步逻辑

应用场景

连接器

数据源

目标源

支持版本(包含以下)

MySQL

5.7.19以上

Oracle

10gR2 -11g

SqlServer

2008以上

PostgreSQL

9.5.25以上

ES

6.0以上

Kafka

开发中

2.10-0.9.0.0以上

File

*.txt, *.unl

SQL

支持以上关系型数据库

后期计划

Redis

📦安装配置

步骤

  1. 安装JDK 1.8(省略详细)
  2. 下载安装包DBSyncer-1.0.0-Beta.zip(也可手动编译)
  3. 解压安装包,Window执行bin/startup.bat,Linux执行bin/startup.sh
  4. 打开浏览器访问:http://127.0.0.1:18686
  5. 账号和密码:admin/admin

增量同步配置(源库)

MySQL

  • Dump Binlog二进制日志。Master同步Slave, 创建IO线程读取数据,写入relaylog,基于消息订阅捕获增量数据。

修改my.ini文件,重启服务

#服务唯一ID

server_id=1

log-bin=mysql_bin

binlog-format=ROW

max_binlog_cache_size = 256M

max_binlog_size = 512M

expire_logs_days = 7

#监听同步的库, 多个库使用英文逗号“,”拼接

replicate-do-db=test

Oracle

  • CDN注册订阅。监听增删改事件,得到rowid,根据rowid执行SQL查询,得到变化数据。

1、授予账号监听权限, 同时要求目标源表必须定义一个长度为18varchar字段,通过接收rowid值实现增删改操作。

grant change notification to 你的账号

2、账号必须是监听表的OWNER

SELECT OBJECT_ID, OBJECT_NAME, OWNER FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER='你的账号';

SqlServer

  • SQL Server 2008提供了内建的方法变更数据捕获(Change Data Capture 即CDC)以实现异步跟踪用户表的数据修改。

要求2008版本以上, 启动代理服务(Agent服务), 连接账号具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。对于所有其他用户,具有源表SELECT 权限;如果已定义捕获实例的访问控制角色,则还要求具有该数据库角色的成员身份。

PostgreSQL

  • 通过复制流技术监听增量事件,基于内置插件pgoutput、test_decoding实现解析wal日志

修改postgresql.conf文件,重启服务

wal_level=logical

File

  • 监听文件修改时间得到变化文件,通过文件偏移量读取最新数据

监听文件实现方案

ES

  • 定时获取增量数据。

账号具有访问权限。

日志

建议MySQLSqlServerPostgreSQL都使用日志

定时

假设源表数据格式

 

预览

驱动管理

驱动详情

驱动表字段关系配置

监控

上传插件

🎨设计

架构图

🔗开发依赖

  • JDK - 1.8.0_40(推荐版本以上)
  • Maven - 3.3.9(推荐版本以上)

⚙️手动编译

先确保环境已安装JDKMaven

$ git clone https://gitee.com/ghi/dbsyncer.git

$ cd dbsyncer

$ chmod u+x build.sh

$ ./build.sh

🐞常见问题

  • MySQL无法连接。默认使用的驱动版本为5.1.40,如果为mysql8需要手动替换驱动 mysql-connector-java-8.0.21.jar
  • SQLServer无法连接。案例:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”
  • 同步数据乱码。案例:mysql8表导入sqlserver2008R2后,sqlserver表nvarchar字段内容为乱码
  • 有其他问题、建议或需求(如想支持某中间件,记得补充使用的版本号),欢迎大家提【issuses】!

🏆性能测试

类型

耗时

数据量

机器配置

MySQL全量同步

202s

1000w

MacBook Pro 2.4 GHz 四核Intel Core i5 16 GB 2133 MHz LPDDR3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git——Windows平台创建github私有仓库详解

目录 1. 注册github,登录 1.1 注册 1.2 登录 2. 创建仓库 3. GitBash使用 3.1 UI界面下载 3.2 配置本地 3.3 配置github 4. 托管 1. 注册github,登录 官网 GitHub 1.1 注册 1.2 登录 2. 创建仓库 根据需要选择: 3. GitBash使用 3…

【从零开始学习深度学习】24.神经网络中池化层的作用:最大池化与平均池化

在之前二维卷积层介绍的图像物体边缘检测应用中,我们构造卷积核从而精确地找到了像素变化的位置。设任意二维数组X的i行j列的元素为X[i, j]。如果我们构造的卷积核输出Y[i, j]1,那么说明输入中X[i, j]和X[i, j1]数值不一样。这可能意味着物体边缘通过这两…

[附源码]计算机毕业设计的网上点餐系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

自动控制原理笔记-自动控制的一般概念

目录 概念: 自动控制系统的基本组成: 基本控制方式: 一个控制系统的方框图:(由工作原理图绘制方框图) 控制系统的组成: 小结: ​​​​​​​ ​​​​​​​ ​​​​​​​ 梦开始的地方…

微火:AI绘图网站程序源码搭建,定制专属的ai绘画小程序

随着AI绘画的火热,群众对于AI绘画的需求与日俱增,目前已有的小程序、ai绘图软件已不能很好地满足当下用户的画图需求,经常排队生图,一排就是几个小时,或者前面直接8万人排队的现象早日屡见不鲜。 新的优秀的AI绘画小程…

java的序列化与反序列化

什么是序列化与反序列化 序列化: 说白了,就是把一个实现了Serializable接口(只有实现了这个接口的类才能被序列化与反序列化)的类去变成本地文件保存。 反序列化: 说白了,就是把上面保存的本地文件&#…

LeetCode62. 不同路径(java解法——动态规划)

1 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径&#xff1f…

电脑一键重装一直在系统优化升级怎么办

小白一键重装一直在系统优化升级怎么办?电脑总是卡在这个画面上,遇到这种情况该怎么解决呢?遇到这种情况大家也不要慌,小面小编就来演示下如何解决小白一键重装一直在系统优化升级的问题。 工具/原料: 系统版本:win10家庭版 …

电脑免费录屏软件哪个好用?分享3款,亲测好用

相比于图片,视频给人的感受更加通俗易懂,短短几分钟的视频,就能将几十张图片想要表达的意思给表达出来。电脑录屏正是制作视频的其中一部分,但也有不少的小伙伴对于电脑录屏不太熟悉,希望小编分享一些电脑免费录屏软件…

HTML语法学习以及作业解答

文章目录技巧html标签练习作业01作业02作业03作业04作业05作业06作业07作业08作业09作业10技巧 1 输入 html5即可补全出html的骨架,或者是! tab键 2 MDN网站:https://developer.mozilla.org/zh-CN/ 3 div带回车,span后面不带回…

计组 | DRAM芯片、多模块存储器、加法器标志位、软件硬件的关系、扩展操作码、程序转换过程

内容来自 —— 王道 自用学习笔记整理 一、DRAM芯片与内存条 1.1、DRAM芯片 1.2、访问内存时DRAM芯片读取过程 多个芯片并行传输,每一轮每个芯片的行列都相同,n个芯片就会有n个超元 n个超元加起来就是数据总线的长度,如图中超元=8位,数据总线=8个超元=64位 1.3、DRAM引脚数…

使用Apifox创建Mock智能操作

去接口管理新建一个接口来设计 然后直接保存运行,就可以发现已经自动为我们的Mock添加上了相关的属性值,只需要输入相关的字段名就可以了。 设置自定义智能Mock,之前我们智能Mock生成的数据都是通过这个工具实现的。只要你的值匹配上了就会通…

从数据治理到数据应用,制造业企业如何突破数字化转型困境丨行业方案

我国制造业拥有31个大类、179个中类和609个小类,是全球产业门类最齐全、产业体系最完整的制造业。作为世界工厂,中国制造业在拉动本国经济增长、促进本国就业等方面贡献卓越,更是我国民生消费的底层基础。同时,中国从原来的原料出…

OpenSSL QuickStart

文章目录1. Windows环境PerlnasmOpenSSL编译VS测试项目2. Linux环境编译测试项目参考资料1. Windows环境 Windows 10VS 2019nasm汇编工具:https://nasm.us/Perl: 官网地址https://www.perl.org/get.htmlOpenSSL: 官网地址:https://www.opens…

2022下半年软件设计师备考经验帖

祝大家逢考必过 7月1号备考-11月05号考试 推荐up主:zst_2001 跟着视频来基本必过 以下是复习资料 章节章节01 - 计算机组成原理与体系结构07 - 法律法规与标准化与多媒体基础02 - 操作系统基本原理08 - 设计模式03 - 数据库系统09 - 软件工程04 - 计算机网络10 - …

垂直领域问答小程序开发,打开知识领域无限能量

知乎作为一款问答类app,深受大众信赖,知乎构建了一个人人都可以便捷接入的知识分享网络,让人们便捷的与世界分享知识、经验和见解,让我们发现更大的世界。知乎的成功让很多人看到了垂直领域问答小程序存在的商机,想要进…

[JavaScript]使用opencv.js实现基于傅里叶变换的频域水印(隐水印)

PS:查了多方资料,都没有提到用 JavaScript 来实现频域水印的教程,故经过笔者的实践,遂写一篇教程来简单介绍。 通过了解频域水印的相关知识,我理解了频域水印就是先将图片进行傅里叶变换,得到频域图&#x…

全国制造业新产品开发流程管理(甄选班)招生简章

近来,越来越多的TO C企业已经将业务从C端转型到了B端,而传统的市场品牌部门除了品牌相关的工作,也将会越来越多承担企业“增长”的业务;“营”与“销”脱节的是市场部门也越来越受到了Diss。 那么,To B产品经理能力提…

package xxx does not exist

1、开发环境如下: gradle 7.3.3: gradle插件:7.2 AS: 2、报错日志 /Users/andrew/Documents/React/Code/TestRetrofit/app/src/main/java/com/lwd/testretrofit/MainActivity.java:8: error: package com.lwd.testretrofit.lwd does not e…

如何用好图表?

如何选择合适的图表? 在可视化图表中,基于不同的目的,我们要选择不同的图表 一般情况下,我们需要借助图表达成4个目的:展示比较,展示分布,展示联系,展示构成 一.作用 1.展示比较 …