当前位置:   article > 正文

光闸mysql同步_mysql跨网域canal数据同步

网闸数据库同步原理

需求:高密网和低密网之间的mysql文件落地同步。          分析:解决不同网段之间的数据通讯可以采用光闸或者网闸。

解决mysql之间的同步则可以采用canal。利用canal生成数据库变化的sql落地成相应文件,让其被交换至相对网段的某个目录下。canal客户端读取该目录下的文件,执行目录下文件的sql完成数据同步。

1. canal简介:

canal是阿里巴巴的基于数据库增量日志解析,提供增量数据订阅&消费的一个开源项目。目前主要支持mysql、oracle数据库。

canal的工作原理:

原理相对比较简单:

canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议。

mysql master收到dump请求,开始推送binary log给slave(也就是canal)。

canal解析binary log对象(原始为byte流

2.canal的配置  canal分为canal客户端和服务端,canal服务端由阿里提供;

1.下载canal服务端 https://github.com/alibaba/canal/releases。   2.解压

3.配置canal-server。

4.开启mysql的binlog写入功能,建议配置binlog模式为row,修改数据库配置文件my.ini,Linux下为my.cnf。

[mysqld]

log-bin=mysql-bin

binlog-format=ROW

server_id=1

skip-name-resolve

expire_logs_days = 10

解释:

log-bin=mysql-bin  #开启binlog

binlog-format=ROW  #选择row模式

server_id=1  #配置mysql replaction需要定义,不能和canal的slaveId重复

skip-name-resolve  #默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能在MySQL的授权表中使用主机名了而只能用ip格式,防止用127.0.0.1登录,mysql对ip反向解析后用localhost登录出现权限不足,拒绝登录的错误。

expire_logs_days = x  #二进制日志自动删除的天数。默认值为0,表示“没有自动删除”

修改完成后重启MySql服务,执行以下语句查看是否开启binlog写入功能。

SHOW VARIABLES LIKE "log_%";

如下图所示,若log_bin为ON,则binlog写入功能已打开。

5.为数据库添加canal用户,开启做为mysql slave的相关权限,执行以下语句。

CREATE USER canal IDENTIFIED BY 'canal';

GRANT SELECT, REPLICATION SLAVE, REPLICATION

CLIENT ON *.* TO 'canal'@'%';

-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;

FLUSH PRIVILEGES;

执行完成后,执行SELECT * FROM mysql.user;查询是否添加成功,如下图所示。

6.修改配置文件instance.properties,位于canal-server/conf/examp

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/155931?site
推荐阅读
相关标签
  

闽ICP备14008679号