数据同步中间件DBSyncer

1. 数据同步概述

在常见的业务开发场景中数据迁移,增量或者全量数据同步,在迁移或者同步过程中还会涉及到字段映射,默认值,还有可能存在不同数据库之间数据迁移,mysql,Oracle,SQLServer,ES,Kafka等等很多场景,虽然使用频率有限,但是场景很多,所以推荐几款数据同步开源组件DBSyncer,DataX,本文主要介绍DBSyncer使用及问题。

DataX链接
datax-web链接
DBSyncer链接

2. DBSyncer介绍

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

3. DBSyncer特点

1.组合驱动,自定义库同步到库组合,关系型数据库与非关系型之间组合,任意搭配表同步映射关系。

2.实时监控,驱动全量或增量实时同步运行状态、结果、同步日志和系统日志。

3.开发插件,自定义转化同步逻辑

4. DBSyncer应用场景

连接器 数据源 目标源 支持版本(包含以下)
Mysql ✔️ ✔️ 5.7.19以上
Oracle ✔️ ✔️ 10g以上
SqlServer ✔️ ✔️ 2008以上
ES ✔️ ✔️ 6.X以上
SQL ✔️
最近计划 kafka(设计中)、Redis

5. DBSyncer安装配置

5.1 创建项目

配置步骤
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

其实没那么麻烦,直接通过idea从gitee上拉去代码,找到dbsyncer-web中Application启动完成,按照上述访问地址,用户名与密码访问。

启动完成状态
在这里插入图片描述

5.2 自定义插件

创建插件
对应项目:dbsyncer-plugin
创建路径:CrmCustomerConvertServiceImpl
org.dbsyncer.plugin.service.CrmCustomerConvertServiceImpl

package org.dbsyncer.plugin.service;

import org.dbsyncer.common.spi.ConvertService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * Demo class
 *
 * @author zrj
 * @date 2021/10/31
 */
@Component
public class CrmCustomerConvertServiceImpl implements ConvertService {
    
    

    private final Logger logger = LoggerFactory.getLogger(getClass());

    /**
     * 版本号
     */
    @Value(value = "${info.app.version}")
    private String version;

    @Override
    public void convert(List<Map> source, List<Map> target) {
    
    
        logger.info("CRM客户插件正在处理同步数据");
        logger.info("CRM客户插件正在处理同步数据,源头数据:{}", source);
        logger.info("CRM客户插件正在处理同步数据,目标数据:{}", target);

        target.forEach(map -> {
    
    
            map.put("update_id", "20211119001");
            map.put("create_id", "20211119002");
            map.put("create_name", "dbsyncer01");
            map.put("update_name", "dbsyncer02");
            //map.put("deleted", false);
        });
        logger.info("CRM客户插件正在处理同步数据,调整数据:{}", target);
    }

    @Override
    public void convert(String event, Map source, Map target) {
    
    
        logger.info("CRM客户插件正在处理同步数据,事件:{},数据:{}", event, source);
    }

    @Override
    public String getVersion() {
    
    
        return "1.1.0-Beta";
    }

    @Override
    public String getName() {
    
    
        return "CrmCustomer";
    }
}

配置插件
驱动管理-配置驱动-高级配置-插件配置:选择插件
在这里插入图片描述

5.3 配置页面

1.驱动管理
驱动管理分两块
添加连接:配置数据源,包括源数据库与目标数据库。
添加驱动:配置的是数据迁移时的数据库信息,过滤映射信息,以及插件中自定义的迁移时逻辑处理。

在这里插入图片描述在这里插入图片描述2.监控页面

监控页面分三块
应用性能:CPU,内存等机器应用参数。
查询数据:执行sql的成功失败记录。
查询日志:数据源配置操作日志。
在这里插入图片描述3.定义插件
插件有什么用?
插件是一种可扩展全量同步和增量同步实现数据转换的技术方式。通过插件可以接收同步数据,自定义同步到目标源的行数据,也能消费数据并实现更多业务场景。

在这里插入图片描述4.参数配置
参数配置包括两块
系统参数:刷新频率。
修改密码:登录密码修改。
在这里插入图片描述

6. DBSyncer实现验证

启动执行
在这里插入图片描述完成状态
在这里插入图片描述

6. DBSyncer存在问题

MySQL字段类型tinyint转换为null,这个需要手动处理。

猜你喜欢

转载自blog.csdn.net/m0_37583655/article/details/121421909