MariaDB到MySQL数据实时同步(多库/Canal版)

6 篇文章 0 订阅
2 篇文章 0 订阅

一、版本介绍

        MariaDB:10.5.17-MariaDB

        MySQL:mysql-5.7.42

        Canal:canal.deployer-1.1.7-SNAPSHOT、canal.adapter-1.1.7-SNAPSHOT

二、原理

        Canal.deployer作为Canal服务端,伪装成MySQL从数据库,通过配置直接监听MariaDB数据库binlog文件,然后可以拿到MariaDB所有的数据操作SQL,再根据deployer自身配置的实例,进行定向的binlog文件SQL筛选,再通过adapter连接MySQL进行SQL解析,从而实现多库同步。

三、步骤

        配置MariaDB

        在/etc/my.cnf.d/server.cnf文件中的[mysqld]下添加如下两行

        log-bin=mysql-bin

        binlog_format=ROW

        配置Canal.deployer

        在解压路径下找到conf/canal.properties文件

 

        记录其中canal.destinations = example  属性,这是canal的连接实例,要进行多个库同时自动同步数据,这里需要配置多个实例,配置方式如下:

        canal.destinations = example,example1,example2

        用英文逗号隔开即可配置多个实例,实例配置完成之后在conf/canal.properties文件的同级目录需要创建以每个实例名为名的文件夹,在每个文件夹下创建一个instance.properties配置文件。

         然后对每个实例进行配置:

        /conf/example        /conf/example1

        配置Canal.adapter

        编辑conf/application.yml

        

         具体配置:这里主要是配置多个数据源,以及多个目标数据库,因为在rdb文件夹中要为每一个实例创建一个配置文件,这个配置文件中就会用到这里配置的数据源及目标数据库

         配置rdb文件夹下的配置文件:

        conf/rdb/

        

         example.yml

         example1.yml

 

        MySQL配置

        在/etc/my.cnf中的[mysqld]下添加如下配置

        log-bin=mysql-bin   # [必须]启用二进制日志 

        server-id=123      #服务id  一般取IP最后一段

        binlog_format=ROW

四、重启

        按顺序重启MariaDB->canal.deployer->canal.adapter->MySQL

        其中canal.deployer和canal.adapter在conf路径同级目录下的bin路径中有启动文件

五、演示

        ​​​​​​​

 六、总结

        1、Canal可配置多个实例,此篇文章配置的是多个实例指定同一个IP地址及端口,实现的是从同一个数据库同步数据,因为每个实例可以指定主数据库的IP地址及端口号,从而实现获取多台服务器的binlog文件,那么就意味着可以解析不同服务器上面MySQL的数据

        2、在adapter中的配置文件可以指定多个数据源(但是这个数据源只能和实例的数据源一致)能指定数据源,那么就可以实现不同数据库(服务器都可以不一致,因为配了IP地址的)的数据获取

        3、目标数据库可以根据canalAdapters的instance来配置多个,也就是说adapter有能力将数据分发到多个目标数据库,因为目标数据库需要指定IP地址,所以分发到的多个数据库可以位于不同服务器。

七、疑问

        Canal可以配置不同的实例,也可以配置不同的数据源和不同的目标数据库,那么是不是可以将Canal作为中转站,来同步不同数据库之间的数据了呢?类似Canal以外数据可以随意配置同步,以Canal为中心即可。

        

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值