1.开启MySQL的binlog写入功能
Canal是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费的。所以首先必须打开MySQL的binlog模式。
在/etc/mysql/mysql.conf.d/mysqld.cnf文件末尾,添加如下配置(不要带后面的注释)。
server-id = 1 #配置MySQL replaction需要定义,不和Canal的slaveId重复即可
log_bin = /var/log/mysql/mysql-bin #开启binlog模式,并指定日志文件名为mysql-bin
binlog_do_db = heima_mysql #指定开启binlog模式的数据库
binlog_format = ROW #选择ROW(行)模式
2.修改完配置后,重启mysql服务
sudo service mysql restart
2.1 mysql服务重启后,查看刚刚的配置是否生效。
show variables like 'log_bin';
如下图所示,则表示配置已生效。
binlog开启成功.png
2.2 查看binlog日志文件列表
这里的binlog日志文件的文件名log_name需要配置到instance.properties文件的canal.instance.master.journal.name属性
show binary logs;
binlog日志文件列表.png
2.3 查看当前正在写入的binlog文件
这里的Position代表binlog日志的偏移量,需要配置到instance.properties文件的canal.instance.master.position属性
show master status;
binlog文件信息.png
3.添加一个仅用于数据同步的账户
-- 创建用户 用户名:canal 密码:Canal@123
create user 'canal'@'%' identified by 'Canal@123';
-- 授权 *.*表示所有库
grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%' identified by 'Canal@123';
FLUSH PRIVILEGES;
4.安装canal
首先从官网下载对应的tar安装包。
4.1在/usr/local目录创建一个canal目录
cd到/usr/local目录,创建文件夹。
mkdir canal
4.2解压canal.deployer-1.1.6.tar.gz文件
上传文件canal.deployer-1.1.6.tar.gz到/usr/local/canal目录并解压
tar -xzvf canal.deployer-1.1.6.tar.gz
4.3修改/usr/local/canal/conf/example/instance.properties
配置.png5.启动canal
cd到/usr/local/canal/bin目录,输入以下命令启动canal。
sudo ./startup.sh
查看日志/usr/local/canal/logs/example/example.log看是否成功。
tail -f example.log
如下图所示,表示启动成功。
日志.png
6.启动失败
如果启动之后在 /usr/local/canal/logs 目录下没有出现 example 目录。并且
ps -ef|grep canal
也没有canal启动运行的进程。但是,在/usr/local/canal/bin文件下出现了hs_err_pidxxxx.log文件,则可能是因为内存原因导致无法启动。
查看一下服务器的内存使用情况。在物理内存无法增加的情况下,就只能清理一下缓存释放多余空间。
free -h
6.1最终解决方案
修改/usr/local/cannal/bin/startup.sh文件。设置jvm的内存为128m,参考设置,具体根据自己机器的内存情况设置。
image.png
修改之后重新启动canal,即可成功。
网友评论