使用Canal将mysql日志同步到到ES

MYSQL打开binlog日志

打开mysqlmy.ini文件,添加以下配置

[mysqld]
# 启用log-bin
log-bin=mysql-bin 
binlog-format=ROW
server_id=1

必须放在mysqld下面

创建mysql账号

# 创建用户和授权
CREATE USER 'canal'@'%' IDENTIFIED  BY 'canal';
GRANT ALL PRIVILEGES ON *.* TO canal@'%' WITH GRANT OPTION;
# 刷新
FLUSH PRIVILEGES;

重启MYSQL服务

下载Canal并解压

传送门

image-20221117151817524

修改Canal配置文件

canal.properties

# tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ
canal.serverMode = rabbitMQ

##################################################
#########             RabbitMQ         #############
##################################################
rabbitmq.host = 127.0.0.1:5672
rabbitmq.virtual.host = /
rabbitmq.exchange = canal.exchange
rabbitmq.username = guest
rabbitmq.password = guest
rabbitmq.deliveryMode = direct

创建实例

一个数据库对应一个实例,在conf目录下创建文件夹,文件夹名称对应数据库名称

image-20221117153604148

并将example文件夹中的instance.properties文件拷贝进去,这个文件是实例文件,其他两个文件会在运行时自动生成

image-20221117153714243

修改实例配置文件

每个不同的数据库都会有不同的实例文件

instance.properties

# username/password
# 指定mysql的账号密码,用于cancal同步mysql数据库
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
# 监听的数据库
canal.instance.defaultDatabaseName = twilight_movie

# table regex
# 匹配twilight数据库下的所有表
canal.instance.filter.regex=twilight_movie\\..*

# mq config
# 如果使用rabbitmq,canal.mq.topic指定的是路由key
canal.mq.topic=canal.key

启动Canal

使用命令行打开Canal bin目录

-m standalone 指定单点启动

不指定默认为集群启动

.\startup.bat -m standalone

image-20221117155312133

最后修改:2024 年 01 月 17 日
如果觉得我的文章对你有用,请随意赞赏