Canal+zookeeper+mysql8.0实现数据库同步,所有的坑我都踩了

1、安装zookeeper3.4.5(必须是这个版本,其他版本都不行)
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
2、复制conf的zoo_example.cfg并改名为zoo.cfg,并修改配置如下,创建data和logs文件夹。
dataDir=/usr/local/zookeeper/zookeeper-3.4.5/data #安装目录/data
dataLogDir=/usr/local/zookeeper/zookeeper-3.4.5/logs #安装目录/logs
3、新建myid文件,输入一个数值作为id,保存在data目录下;
4、到bin目录启动zookeeper;

5、在/usr/local下新建canal文件夹安装canal1.1.3(mysql8.0及以上的必须要这个版本)
wget https://github.com/alibaba/canal/releases/download/canal-1.1.3/canal.deployer-1.1.3.tar.gz

6、修改数据库 /etc/my.cfg配置,有则修改无则添加。

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

7、登录mysql输入以下命令,canal的原理是模拟自己为mysql slave,所以这里一定需要做为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;

8、修改 canal/conf下的canal.properties配置文件
canal.id = 11110001 #canal的id,暂无意义,不过要和slave_id 的值不一样
canal.ip =192.168.1.150 #服务IP地址,集群必填,单机可不填,不能是127.0.0.1和localhost
canal.port = 11111 #端口
canal.metrics.pull.port = 11112 #默认就好
canal.zkServers =127.0.0.1:2181 #zookeeper的地址和端口

#canal.instance.global.spring.xml = classpath:spring/file-instance.xml #默认单机
canal.instance.global.spring.xml = classpath:spring/default-instance.xml #集群选项(二选 一)

9、修改conf下的example/instance.properties
canal.instance.master.address=192.168.1.150:3310 #主库的IP和端口

10、回到bin目录下启动canal;

11、回到zookeeper的bin目录,输入zkServer.sh –server 127.0.0.1:2181进入zookeeper,然后再输入get /otter/canal/destinations/example/running查看canal节点信息,要注意确认address正确。

注意事项:
在canal.properties配置文件里canal.destinations的值是对应的一个数据库连接的Instance,必须要在canal的conf目录下创建一个名字一样的文件夹,并在里面复制一个instance.properties文件。
#################################################
######### destinations #############
#################################################
canal.destinations = example1
canal.conf.dir = …/conf
canal.auto.scan = true
canal.auto.scan.interval = 5

下面附上我自己写的一个客户端,直接拿来用就行了

链接:https://pan.baidu.com/s/1tManblQbTSGZ5TjXi8wrhg
提取码:a6ib

你可能感兴趣的:(中间件)