开源数据同步中间件(Dbsyncer)简单玩一下 mysql to mysql 的增量,全量配置
一、什么是Dbsyncer1、介绍Dbsyncer是一款开源的数据同步中间件提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景支持上传插件自定义同步转换业务提供监控全量和增量数据统计图、应用性能预警等。2、特点1、组合驱动自定义库同步到库组合关系型数据库与非关系型之间组合任意搭配表同步映射2、关系实时监控驱动全量或增量实时同步运行状态、结果、同步日志和系统日项目地址https://gitee.com/ghi/dbsyncer应用场景3、下载安装包安装JDK 1.8省略详细下载安装包dbsyncer-x.x.x.zip也可手动编译解压安装包Window执行bin/startup.batLinux执行bin/startup.sh打开浏览器访问http://127.0.0.1:18686账号和密码admin/admin4、阿里云镜像地址docker pull registry.cn-hangzhou.aliyuncs.com/xhtb/dbsyncer:latest docker pull registry.cn-hangzhou.aliyuncs.com/xhtb/dbsyncer-enterprise:latest docker pull registry.cn-hangzhou.aliyuncs.com/lifewang/dbsyncer:latest5、手动编译先确保环境已安装JDK和Maven$ git clone https://gitee.com/ghi/dbsyncer.git $ cd dbsyncer $ chmod ux build.sh $ ./build.sh二、Dbsyncer的安装这里只演示虚拟机的java代码的这里不演示1.下载好安装包后把安装包放在虚拟机的 /opt/momodules然后在Linux执行bin/startup.sh就可以进去web界面2.然后解压到 /opt/installs下不需要配置文件就可以启动他的web界面3.进去web界面地址为http://192.168.150.120:18686 端口号为虚拟机的ip地址 账号密码为admin然后就能进入界面三、mysql to mysql 的全量配置和数据演示前期准备在虚拟机的mysql创建一个库这里为testmysql然后创建表导入数据,大概100万调数据drop table if exists t; CREATE TABLE t( id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment 自增主键, dept tinyint not null comment 部门id, age tinyint not null comment 年龄, name varchar(30) comment 用户名称, create_time datetime not null comment 注册时间, last_login_time datetime comment 最后登录时间 ) comment 测试表; insert into testmysql values(1,1, 25, user_1, 2018-01-01 00:00:00, 2018-03-01 12:00:00); set i1; select * from t; #此处拷贝反复执行直接符合预想的数据量 #执行20次即2的20次方1048576 条记录 #执行23次即2的23次方8388608 条记录 #执行24次即2的24次方16777216 条记录 #...... insert into t(dept, age, name, create_time, last_login_time) select left(rand()*10,1) as dept, #随机生成1~10的整数 FLOOR(20RAND() *(50 - 20 1)) as age, #随机生成20~50的整数 concat(user_,i:i1), #按序列生成不同的name date_add(create_time,interval i*cast(rand()*100 as signed) SECOND), #生成有时间大顺序随机注册时间 date_add(date_add(create_time,interval i*cast(rand()*100 as signed) SECOND), interval cast(rand()*1000000 as signed) SECOND) #生成有时间大顺序的随机的最后登录时间 from t; select count(1) from t; #此处结束反复执行然后再建一个数据库接收数据test02要提前建好表drop table if exists t1; CREATE TABLE t1 ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment 自增主键, dept tinyint not null comment 部门id, age tinyint not null comment 年龄, name varchar(30) comment 用户名称, create_time datetime not null comment 注册时间, last_login_time datetime comment 最后登录时间 ) comment 测试表;创建好库后需要给库单独一个用户授权否则web界面链接不上去CREATE USER ae86% IDENTIFIED WITH mysql_native_password BY 123456; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ae86%; GRANT SELECT ON test03.* TO ae86%; flush privileges; grant process on *.* to ae86; flush privileges; show processlist如果第一步执行不了的话需要修改mysql的密码规则然后修改再开始数据同步之前需要设置mysql的设置官方使用手册介绍 - Wiki - Gitee.com这里需要修改mysql的my.ini 或 my.cnf配置文件我的my.cnf的位置在 /etc/my.cnf然后把以下代码加进去#log日志开启 log_binON #服务唯一ID server_id1 log-binmysql_bin binlog-formatROW max_binlog_cache_size 256M max_binlog_size 512M expire_logs_days 7 #监听同步的库, 多个库使用英文逗号“,”拼接 replicate-do-dbtest03,testmysql,test02下一步进去web界面添加链接添加ip和库名分别将对应的库添加进去然后添加驱动创建链接先择对应的库然后选择对应的表按照图片位置一次点击配置是默认配置点击右上角齿轮启动数据同步在界面可以看见进度也可以看监控界面在监控界面可以看到之间的操作任务成功这时候可以去MySQL中就可以看到已经同步的数据四、mysql to mysql 的增量配置和演示和全量配置一样但是有不同的是在增量配置之前要把mysql的binlog开启此操作在 /etc/my.cnf 下加入3先查看是否开启 SHOW VARIABLES LIKE log_bin; #开启 log_binON数据准备常见test03库创建t3和t3—ord表drop table if exists t3; CREATE TABLE t3 ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment 自增主键, dept tinyint not null comment 部门id, age tinyint not null comment 年龄, name varchar(30) comment 用户名称, create_time datetime not null comment 注册时间, last_login_time datetime comment 最后登录时间 ) comment 测试表; insert into t3 values(1,1, 25, user_1, 2018-01-01 00:00:00, 2018-03-01 12:00:00); insert into t3 values(2,2, 26, 测试同步, 2018-01-01 00:00:00, 2018-03-01 12:00:00); insert into t3 values(3,3, 26, 测试同步, 2018-01-01 00:00:00, 2018-03-01 12:00:00); insert into t3 values(4,4, 26, 测试同步, 2018-01-01 00:00:00, 2018-03-01 12:00:00); select * from t3; drop table if exists t3_ord; CREATE TABLE t3_ord ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment 自增主键, dept tinyint not null comment 部门id, age tinyint not null comment 年龄, name varchar(30) comment 用户名称, create_time datetime not null comment 注册时间, last_login_time datetime comment 最后登录时间 ) comment 测试表; insert into t3_ord values(1,1, 25, user_1, 2018-01-01 00:00:00, 2018-03-01 12:00:00); select * from t3_ord;创建表之后进入web界面添加驱动按照顺序一次点点点更改定时任务我这里是5秒一次正则表达式开启任务后向t3添加数据后t3的数据可以同步到t3—ord中定时任务要手动关闭不关闭会一直执行。

相关新闻

最新新闻

日新闻

周新闻

月新闻