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?),所谓驱动就是数据同步的任务。