使用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并解压
修改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目录下创建文件夹,文件夹名称对应数据库名称
并将example文件夹中的instance.properties
文件拷贝进去,这个文件是实例文件,其他两个文件会在运行时自动生成
修改实例配置文件
每个不同的数据库都会有不同的实例文件
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