dbsyncer同步mysql数据

1 概述

DBSyncer(代码地址:https://github.com/86dbs/dbsyncer)是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。


2 部署

2.1 环境

版本信息如下:
a、操作系统:centos 7.6
b、主机IP:192.168.243.128
c、docker版本:20.10.5-3

2.2 安装docker

yum install -y yum-utils device-mapper-persistent-data lvm2
yum install yum-utils -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates
yum install docker-ce-cli-20.10.5-3.el7 docker-ce-20.10.5-3.el7 -y

mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
      "registry-mirrors": ["https://bxsfpjcb.mirror.aliyuncs.com", "https://registry.docker-cn.com"],
      "max-concurrent-downloads": 10,
      "log-driver": "json-file",
      "log-level": "warn",
      "log-opts": {
          "max-size": "100m",
          "max-file": "3"
      },
       "live-restore": true,
      "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

systemctl daemon-reload
systemctl enable docker.service
systemctl restart docker

2.3 部署dbsyncer

使用docker部署dbsyncer,便于测试。

docker run -it --entrypoint=bash --name=dbsyncer --net=host \
registry.cn-hangzhou.aliyuncs.com/xhtb/dbsyncer:latest

# 此时已进入容器环境,执行以下脚本启动dbsyncer程序
cd /app/cd dbsyncer-2.0.3
./bin/startup.sh

浏览器访问18686端口,在我的机器IP是192.168.243.128,因此在浏览器访问http://192.168.243.128:18686,输入账号密码即可(admin/admin)。
在这里插入图片描述

2.4 部署mysql

2.4.1 运行mysql 8.0实例

部署两个mysql实例,demo2实例是源数据库(192.168.243.128:3307),demo3实例是目标数据库(192.168.243.128:3308)。

docker run -p 3307:3306 --name mysql-demo2 -e MYSQL_ROOT_PASSWORD=password -d mysql:8.0
docker run -p 3308:3306 --name mysql-demo3 -e MYSQL_ROOT_PASSWORD=password -d mysql:8.0

在这里插入图片描述

2.4.2 准备mysql测试数据

在demo2实例中准备以下数据:


CREATE DATABASE demo;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL
);

INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com');
INSERT INTO users (username, email) VALUES ('user2', 'user2@example.com');
INSERT INTO users (username, email) VALUES ('user3', 'user3@example.com');

在demo3实例中准备以下数据:


CREATE DATABASE demo;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL
);


2.5 dbsyncer配置mysql数据库源

配置源端数据源,如下图:
在这里插入图片描述

配置目标数据源,如下图:
在这里插入图片描述

配置完成后,界面如图所示

在这里插入图片描述


2.6 dbsyncer配置驱动

所谓驱动就是任务。任务可以分为全量同步任务和增量同步任务。填写表单时,不仅需要选择是全量同步还是增量同步,还需要设置源端的表和目标端的表之间的映射关系。

2.6.1 配置全量同步

在这里插入图片描述

在这里插入图片描述
点击运行后,了三条数据,如下图所示:
在这里插入图片描述


2.6.2 配置增量同步

在这里插入图片描述
在这里插入图片描述


开启任务,在源端数据库新插入一条数据后,该新增记录同步到目标数据库。
在这里插入图片描述


3 小结

本文通过dbsyncer同步两个mysql实例的数据来介绍dbsyncer这个工具。dbsyncer的数据源,是一个JDBC URL(例如:jdbc:mysql://192.168.243.128:3308/demo?),所谓驱动就是数据同步的任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值