## 介绍
![logo](dbsyncer-web/src/main/resources/static/img/logo.png)
DBSyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。
> 特点
* 组合驱动,自定义库同步到库组合,关系型数据库与非关系型之间组合,任意搭配表同步映射关系
* 实时监控,驱动全量或增量实时同步运行状态、结果、同步日志和系统日志
* 开发插件,自定义转化同步逻辑
> 项目地址
* [Gitee](https://gitee.com/ghi/dbsyncer "https://gitee.com/ghi/dbsyncer")
* [GitHub](https://github.com/86dbs/dbsyncer "https://github.com/86dbs/dbsyncer")
[![star](https://gitee.com/ghi/dbsyncer/badge/star.svg?theme=dark)](https://gitee.com/ghi/dbsyncer/stargazers)
[![fork](https://gitee.com/ghi/dbsyncer/badge/fork.svg?theme=dark)](https://gitee.com/ghi/dbsyncer/members)
[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://gitee.com/ghi/dbsyncer/blob/master/LICENSE)
## 🌈应用场景
| 连接器 | 数据源 | 目标源 | 支持版本(包含以下) |
|---|---|---|---|
| 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](https://www.oracle.com/java/technologies/jdk8-downloads.html)(省略详细)
2. 下载安装包[DBSyncer-1.0.0-RC.zip](https://gitee.com/ghi/dbsyncer/releases)(也可手动编译)
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文件,重启服务
```bash
#服务唯一ID
server_id=1
log-bin=mysql_bin
binlog-format=ROW
max_binlog_cache_size = 256M
max_binlog_size = 512M
#监听同步的库, 多个库使用英文逗号“,”拼接
replicate-do-db=test
```
> 准备账号用于数据同步(这里我为test数据库创建了ae86账号,并授权)
``` sql
CREATE USER 'ae86'@'%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'ae86'@'%';
GRANT SELECT ON test.* TO 'ae86'@'%';
flush privileges;
```
##### Oracle
* CDN注册订阅。监听增删改事件,得到rowid,根据rowid执行SQL查询,得到变化数据。
> 1、授予账号监听权限, 同时要求目标源表必须定义一个长度为18的varchar字段,通过接收rowid值实现增删改操作。
```roomsql
grant change notification to 你的账号
```
> 2、账号必须是监听表的OWNER
```roomsql
SELECT OBJECT_ID, OBJECT_NAME, OWNER FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER='你的账号';
```
![DCN账号](https://images.gitee.com/uploads/images/2022/0717/001127_fb4049b6_376718.png "DCN账号.png")
##### SqlServer
* SQL Server 2008提供了内建的方法变更数据捕获(Change Data Capture 即CDC)以实现异步跟踪用户表的数据修改。
> 要求2008版本以上, 启动代理服务(Agent服务), 连接账号具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。对于所有其他用户,具有源表SELECT 权限;如果已定义捕获实例的访问控制角色,则还要求具有该数据库角色的成员身份。
> 1. 启动 **代理** 和 **数据库** 服务
![输入图片说明](https://foruda.gitee.com/images/1669649054209443088/5ae57c11_376718.png "屏幕截图")
> 2. 准备测试账号,test
![输入图片说明](https://foruda.gitee.com/images/1669648409722723985/2c9cc49b_376718.png "屏幕截图")
> 3. 分配sysadmin角色
![输入图片说明](https://foruda.gitee.com/images/1669648470726217924/0ea30c3c_376718.png "屏幕截图")
> 4. 分配指定数据库权限
![输入图片说明](https://foruda.gitee.com/images/1669648797643372138/018a1692_376718.png "屏幕截图")
##### PostgreSQL
* 通过复制流技术监听增量事件,基于内置插件pgoutput、test_decoding实现解析wal日志
> 1、修改postgresql.conf文件,重启服务
``` shell
wal_level=logical
```
> 2、授予账号权限LOGIN和REPLICATION
##### File
* 监听文件修改时间得到变化文件,通过文件偏移量读取最新数据
> [监听文件实现方案](https://gitee.com/ghi/dbsyncer/issues/I55EP5)
##### ES
* 定时获取增量数据。
> 账号具有访问权限。
##### 日志
> 建议MySQL、SqlServer、PostgreSQL都使用日志
![日志](https://images.gitee.com/uploads/images/2021/0906/181036_1f9a9e78_376718.png "日志.png")
##### 定时
> 假设源表数据格式
![表数据格式](https://images.gitee.com/uploads/images/2021/0903/004406_68ef9bb4_376718.png "表数据格式.png")
![定时和过滤条件](https://images.gitee.com/uploads/images/2021/0903/004807_07cdf2b7_376718.png "定时和过滤条件.png")
## ✨预览
### 驱动管理
![连接器和驱动](https://images.gitee.com/uploads/images/2021/0903/003755_01016fc1_376718.png "驱动管理.png")
### 驱动详情
![驱动详情](https://images.gitee.com/uploads/images/2021/0903/004031_a571f6b5_376718.png "驱动详情.png")
### 驱动表字段关系配置
![驱动表字段关系配置](https://images.gitee.com/uploads/images/2021/0903/004106_26399534_376718.png "驱动表字段关系配置.png")
### 监控
![监控](https://images.gitee.com/uploads/images/2021/0728/000645_35a544b3_376718.png "监控.png")
### 上传插件
![上传插件](https://images.gitee.com/uploads/images/2021/0806/232643_9b1f3f64_376718.png "上传插件.png")
## 🎨设计
#### 架构图
<img src="http://assets.processon.com/chart_image/5d63b0bce4b0ac2b61877037.png" />
## 🔗开发依赖
* [JDK - 1.8.0_202](https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html)
* [Maven - 3.3.9](https://dlcdn.apache.org/maven/maven-3/)(推荐版本以上)
## ⚙️手动编译
> 先确保环境已安装JDK和Maven
```bash
$ 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](https://gitee.com/ghi/dbsyncer/attach_files)
* SQLServer无法连接。案例:[驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”](https://gitee.com/ghi/dbsyncer/issues/I4PL46?from=project-issue)
* 同步数据乱码。案例:[mysql8表导入sqlserver2008R2后,sqlserver表nvarchar字段内容为乱码](https://gitee.com/ghi/dbsyncer/issues/I4JXY0)
* [如何开启远程debug模式?](https://gitee.com/ghi/dbsyncer/issues/I63F6R)
* 有其他问题、建议或需求(如想支持某中间件,记得补充使用的版本号),欢迎大家提[【issuses】](https://gitee.com/ghi/dbsyncer/issues/new?issue%5Bassignee_id%5D=0&issue%5Bmilestone_id%5D=0)!
## 🏆性能测试
| 类型 | 耗时 | 数据量 | 机器配置 |
|---|---|---|---|
| MySQL全量同步 | 202s | 1000w | MacBook Pro 2.4 GHz 四核Intel Core i5 16 GB 2133 MHz LPDDR3 |
<img src="https://foruda.gitee.com/images/1660034515191434708/屏幕截图.png" width="200" height="200" />
## 💕了解更多
* 使用说明:[博客地址](https://my.oschina.net/dbsyncer "https://my.oschina.net/dbsyncer")(小提示:现在需要先登录,才能查�
没有合适的资源?快使用搜索试试~ 我知道了~
一款国产开源数据同步中间件,支持多种数据源和预警功能
共739个文件
java:473个
png:81个
css:59个
6 下载量 110 浏览量
2023-05-10
09:54:09
上传
评论
收藏 2.08MB ZIP 举报
温馨提示
DBSyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。 支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。 特点 组合驱动,自定义库同步到库组合,关系型数据库与非关系型之间组合,任意搭配表同步映射关系 实时监控,驱动全量或增量实时同步运行状态、结果、同步日志和系统日志 开发插件,自定义转化同步逻辑
资源推荐
资源详情
资源评论
收起资源包目录
一款国产开源数据同步中间件,支持多种数据源和预警功能 (739个子文件)
jmxremote.access 4KB
startup.bat 2KB
version.cmd 490B
build.cmd 244B
bootstrap.min.css 115KB
font-awesome.min.css 30KB
_all.css 20KB
_all.css 14KB
_all.css 14KB
_all.css 12KB
bootstrap-select.min.css 10KB
fileinput.min.css 9KB
bootstrap-checkbox.css 7KB
bootstrap-switch.min.css 6KB
login.css 3KB
purple.css 2KB
yellow.css 2KB
orange.css 2KB
green.css 2KB
pink.css 2KB
blue.css 2KB
grey.css 2KB
aero.css 2KB
red.css 2KB
line.css 2KB
bootstrap-dialog.min.css 2KB
index.css 2KB
all.css 2KB
purple.css 2KB
orange.css 2KB
yellow.css 2KB
purple.css 2KB
orange.css 2KB
yellow.css 2KB
green.css 2KB
green.css 1KB
pink.css 1KB
blue.css 1KB
grey.css 1KB
aero.css 1KB
pink.css 1KB
blue.css 1KB
grey.css 1KB
aero.css 1KB
red.css 1KB
red.css 1KB
minimal.css 1KB
polaris.css 1KB
square.css 1KB
purple.css 1KB
orange.css 1KB
yellow.css 1KB
green.css 1KB
pink.css 1KB
blue.css 1KB
grey.css 1KB
aero.css 1KB
futurico.css 1KB
red.css 1KB
flat.css 1KB
common.css 1KB
bootstrap-tagsinput.min.css 1KB
loading-plus.css 396B
fontawesome-webfont.eot 162KB
spring.factories 168B
loading-sm.gif 3KB
loading.gif 847B
.gitignore 122B
index.html 15KB
addKafka.html 14KB
monitor.html 12KB
editTableGroup.html 11KB
addSQL.html 10KB
plugin.html 9KB
edit.html 7KB
editFilter.html 5KB
edit.html 5KB
addFile.html 5KB
editTable.html 4KB
editConvert.html 4KB
addDqlPostgreSQL.html 4KB
add.html 4KB
add.html 4KB
index.html 4KB
config.html 4KB
addPostgreSQL.html 3KB
edit.html 3KB
editIncrement.html 3KB
save.html 3KB
add.html 3KB
user.html 3KB
addDqlSqlServer.html 3KB
addRedis.html 3KB
editIncrementQuartz.html 2KB
addDqlOracle.html 2KB
retry.html 2KB
nav.html 2KB
addDqlMysql.html 2KB
addSqlServer.html 2KB
addOracle.html 2KB
共 739 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
TNT报社
- 粉丝: 2568
- 资源: 103
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功