当前位置: 首页 > news >正文

DBSyncer开源数据同步中间件

一、简介

DBSyncer(英[dbsɪŋkɜː(r)],美[dbsɪŋkɜː(r) 简称dbs)是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。

二、安装

临时启动

docker run -d --name dbsyncer -p 18686:18686 crazylife/dbsyncer-web:latest

拷贝数据

mkdir -p /data/dbsyncer

docker cp dbsyncer:/app /data/dbsyncer/

设置文件权限

chmod 777 -R /data/dbsyncer

正式启动

docker run -d \
--name dbsyncer \
-p 18686:18686 \
-e TZ=Asia/Shanghai \
-v /data/dbsyncer/app:/app \
crazylife/dbsyncer-web:latest

三、配置mysql表实时同步

访问web页面

http://192.168.10.13:18686

默认用户名密码,都是admin

登录之后,效果如下:

接下来,要实现,将mid_test库下的表players,同步到dms_test库下的表players2

点击添加链接

选择类型为:MySQL

名称:dev-dms-mid_test

账号:root

密码:***

URL:这里要注意修改为mysql地址,以及数据库名

最后点击保存

 然后再添加驱动dev-dms-dms_test

点击添加驱动

数据源,选择:dev-dms-mid_test

目标源,选择:dev-dms-dms_test

名称:test1

点击上面的保存

点击增量同步,注意:全量同步,是一次性任务,因此后续的表修改不会同步,所以这里必须选增量同步。

数据源表,选择players

目标源表,选择players2

点击添加

 

高级设置,保持默认即可,点击保存按钮

点击齿轮图标

点击运行

这里会出现运行中,总数会显示,这个数字会动态显示,挺不错的。

四、测试数据写入

使用python脚本,直接写入1万条数据

import pymysql# 替换为您的数据库信息
connection = pymysql.connect(host='mysql-xxx.mysql.database.aliyun.com',port=3306,user='root',password='***',database='mid_test',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)try:with connection.cursor() as cursor:for i in range(0,10000):# SQL 插入语句sql = """insert into players (player_id,team_id,player_name,height) values (200%s,200%s,'韦德%s','1%s');"""%(i,i,i,i)print(sql)cursor.execute(sql)# 提交事务connection.commit()# print(connection.__dict__)
except pymysql.MySQLError as e:print(e)
finally:connection.close()

执行脚本,效果如下:

上面的也会动态显示数字,同步1万条

注意:增量同步,支持表数据的增删改查,但是不支持DDL语句,比如:修改表结构,添加索引,截断表等操作。

http://www.lryc.cn/news/527708.html

相关文章:

  • < OS 有关 > 阿里云 几个小时前 使用密钥替换 SSH 密码认证后, 发现主机正在被“攻击” 分析与应对
  • react-bn-面试
  • 1. Java-MarkDown文件创建-工具类
  • 全连接神经网络(前馈神经网络)
  • 【llm对话系统】什么是 LLM?大语言模型新手入门指南
  • 【Linux】互斥锁、基于阻塞队列、环形队列的生产消费模型、单例线程池
  • 【学术会议征稿】第五届能源、电力与先进热力系统学术会议(EPATS 2025)
  • ES6 类语法:JavaScript 的现代化面向对象编程
  • Sprintboot原理
  • OpenHarmony 5.0.2 Release来了!
  • Qt 控件与布局管理
  • 使用小尺寸的图像进行逐像素语义分割训练,出现样本不均衡训练效果问题
  • 0.91英寸OLED显示屏一种具有小尺寸、高分辨率、低功耗特性的显示器件
  • 读书笔记--分布式服务架构对比及优势
  • HTML5 新的 Input 类型详解
  • ESP32-CAM实验集(WebServer)
  • Case逢无意难休——深度解析JAVA中case穿透问题
  • Golang笔记——常用库context和runtime
  • 2000-2020年各省第二产业增加值占GDP比重数据
  • unity商店插件A* Pathfinding Project如何判断一个点是否在导航网格上?
  • Day24-【13003】短文,数据结构与算法开篇,什么是数据元素?数据结构有哪些类型?什么是抽象类型?
  • 富文本 tinyMCE Vue2 组件使用简易教程
  • 强化学习在自动驾驶中的实现与挑战
  • 记录 | MaxKB创建本地AI智能问答系统
  • 特种作业操作之低压电工考试真题
  • [免费]基于Python的Django博客系统【论文+源码+SQL脚本】
  • Cannot resolve symbol ‘XXX‘ Maven 依赖问题的解决过程
  • 我们需要有哪些知识体系,知识体系里面要有什么哪些内容?
  • 什么是vue.js组件开发,我们需要做哪些准备工作?
  • 网络工程师 (3)指令系统基础