Canal的学习笔记

部署环境及需要的工具

虚拟机vm内centos7
安装mysql
xshell
xftp

使用shell查看binlog是否打开

  1. 开启mysql服务
service mysql start
  1. 进入mysql
mysql -u root -p
接着输入密码
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF    |
+---------------+-------+
1 row in set (0.00 sec)
1,修改 mysql 的配置文件 my.cnf
vi /etc/my.cnf 
追加内容:
log-bin=mysql-bin     #binlog文件名
binlog_format=ROW     #选择row模式
server_id=1           #mysql实例id,不能和canal的slaveId重复

2,重启 mysql:
service mysql restart	

3,登录 mysql 客户端,查看 log_bin 变量
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON|
+---------------+-------+
1 row in set (0.00 sec)
————————————————
如果显示状态为ON表示该功能已开启

在mysql里面添加以下的相关用户和权限

CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
GRANT SHOW VIEW, SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

下载Canal

https://github.com/alibaba/canal/releases

放到centos的 /usr/local/canal 目录下
利用xftp拷贝过去
使用命令解压

tar zxvf canal.deployer-1.1.5.tar.gz

接着修改配置
可以直接操作

conf/example/instance.properties
#需要改成自己的数据库信息
canal.instance.master.address=192.168.152.131:3306

#需要改成自己的数据库用户名与密码

canal.instance.dbUsername=canal
canal.instance.dbPassword=canal

#需要改成同步的数据库表规则,例如只是同步一下表
#canal.instance.filter.regex=.*\\..*
canal.instance.filter.regex=guli_ucenter.ucenter_member

这边需要先两边都创建数据库进行后续的测试
可以使用 Navicat Premium 15连接两边的数据库创建


接着启动他

sh bin/startup.sh

centos记得放开端口 11111,不然后续会超时

firewall-cmd --zone=public --add-port=11111/tcp --permanent   # 开放11111端口

firewall-cmd --zone=public --remove-port=11111/tcp --permanent  #关闭11111端口

firewall-cmd --reload   # 配置立即生效

新增的代码有问题,int类型为null 的时候会报错,为null的时候不应该去赋值,要跳过

//可为NULL,但是是NULL的,不需要处理
  if (columnList.get(i).getIsNull() && !columnList.get(i).hasValue()) {
        continue;
    }

当时复制了表,却一直报编码错误
windows默认创建的数据库

字符集是  utf8mb4
排序规则是  utf8mb4_0900_ai_ci

centos7创建的是

字符集是  utf8
排序规则是  utf8_general_ci

右键-》转存sql文件
保存后打开这个文件
搜索里面是 utf8mb4的替换为utf8
utf8mb4_0900_ai_ci替换为utf8_general_ci
这样的语句在centos7里面执行才会成功。


你可能感兴趣的:(java,java学习笔记)