my.cnf
或 my.ini
,在 [mysqld]
段中添加如下配置:# 日志文件名
log-bin=mysql-bin
# 配置日志记录模式为“行级模式”
binlog_format=ROW
# 需要监听的数据库1
binlog-do-db=ddz
# 需要监听的数据库2
binlog-do-db=ddz1
# 查看是否开启日志
show variables like '%log_bin%';
# 查看日志记录模式
show variables like '%binlog_format%';
以下是对 Canal 的几个组件的详细说明:
canal.adapter
是 Canal 的一个子项目,主要用于数据同步和转换的适配器。
canal.admin
是 Canal 的后台管理系统。
canal.deployer
提供了一键部署和管理的功能,可以简化 Canal 的部署和运维工作。
canal.example
是 Canal 的示例项目。
\canal.deployer-1.1.7-SNAPSHOT\conf\canal.properties
文件;选择服务模式,我们这里需要在项目中使用则选择tcp
。# tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ
canal.serverMode = tcp
\canal.deployer-1.1.7-SNAPSHOT\conf\example\instance.properties
文件。# 需要监听的数据库连接地址
canal.instance.master.address=127.0.0.1:3306
# 用户名
canal.instance.dbUsername=数据库用户名
# 密码
canal.instance.dbPassword=数据库密码
# 需要监听的数据库正则,当前是监听所有的数据库
canal.instance.filter.regex=.*\\..*
# 不监听的数据库正则
canal.instance.filter.black.regex=mysql\\.slave_.*
\canal.deployer-1.1.7-SNAPSHOT\bin
,启动 startup.bat
或 startup.sh
。我们这里导入的是大佬封装好的依赖,我们直接使用就行。
<dependency>
<groupId>top.javatoolgroupId>
<artifactId>canal-spring-boot-starterartifactId>
<version>1.2.1-RELEASEversion>
dependency>
canal:
server: 127.0.0.1:11111 # 本地启动的canal服务,默认启动的监听端口是11111
destination: example # 配置好的监听模块
监听模块的名字和目录名一致,在canal配置文件中也配置的相同。
注解的使用:@CanalTable(value = “数据库表名”)
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;
@Slf4j
@Component
@CanalTable(value = "user")
public class UserHandler implements EntryHandler<User> {
@Override
public void insert(User user) {
log.info("User_insert:{}", user.toString());
}
@Override
public void update(User before, User after) {
log.info("User_update_before:{}", before.toString());
log.info("User_update_after:{}", after.toString());
}
@Override
public void delete(User user) {
log.info("User_delete:{}", user.toString());
}
}
我们现在去操作数据库对表进行新增、修改、删除都会被监听到了。