1.首先在两台服务器上准备两个MySQL数据库,其中一个作为源库,另一个为目标库,我准备的MySQL源库服务器IP为:172.17.0.2,MySQL服务端口为3306,目标库的服务器IP为172.17.0.4,MySQL服务端口为3307。并从canal官网下载canal1.1.4的release包:canal.deployer-1.1.4.tar.gz和canal.adapter-1.1.4.tar.gz,解压后将这两个文件夹拷贝到服务器172.17.0.4的/home/admin目录中。接下来我们将展示通过canal实现对源库所做的修改能实时同步到目标库上。
2.在172.17.0.2上的数据库创建好用户和一个用于验证的数据库和测试表,语句如下:
mysql -h 172.17.0.2 -P 3306 -u root -p
CREATE DATABASE example;USE example;CREATE TABLE xdual ( ID int(11) NOT NULL AUTO_INCREMENT, X timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (ID)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ;
insert into xdual(id,x) values(null,now());
select * from xdual;
3.在172.17.0.4上的数据库创建和上面同样的数据库example和测试表。
4.修改/home/admin/canal.deployer-1.1.4/conf/example/instance.properties文件,如下部分:
即将canal.instance.master.address参数值改为172.17.0.2:3306
5.修改/home/admin/canal.adapter-1.1.4/conf/application.yml文件,如下部分:
即注释掉srcDataSources部分,修改driverClassName为com.mysql.cj.jdbc.Driver,然后修改对应url,用户名和密码。
6.修改/home/admin/canal.adapter-1.1.4/conf/rdb/mytest_user.yml文件,如下部分:
7.启动canal server,如下:/home/admin/canal.deployer-1.1.4/bin/startup.sh
如果看到如下信息说明启动正常:
说明:在我的环境出现以上成功启动信息之前出现一些报错,并且整个过程等待了10分钟左右,目前没找到原因,但不影响后续可以使用。
8.启动canal adapter,如下:/home/admin/canal.adapter-1.1.4/bin/startup.sh
如果看到如下信息说明启动正常:
9.通过命令行分别连接以上两个MySQL,在172.17.0.2的数据库上执行插入语句:
10.在172.17.0.4进行查询,结果如下:
可以看到数据已经自动被同步过来,至此MySQL数据同步搭建完成。