canal 修改配置信息后监听不到mysql数据并报错can‘t find start position for example

626 阅读1分钟

​本文已参与「新人创作礼」活动,一起开启掘金创作之路。​ ​

 原由:数据库地址变化 canal 需要修改监听

问题:修改配置信息后重启canal 但并无监听到数据库信息变化

分析:canal 与数据库之间断层,导致信息传输失败

解决:

(1)进入到canal 的logs下查看example.log

tail -f -n 300 example.log

发现连接信息失败:

翻译过来就是 没有找到位点信息

(2)进入到配置信息example文件夹下 删除meta.dat 元数据

可以理解为一份缓存文件 删除

删除

rm -rf meta.dat

(3)重启canal

sh restart.sh

(4)查看日志文件

正常

附一份 canal 的 配置文件

#################################################
## mysql serverId , v1.0.26+ will autoGen
# canal.instance.mysql.slaveId=0

# enable gtid use true/false
canal.instance.gtidon=false

# position info 数据库地址
canal.instance.master.address=ip:port
canal.instance.master.journal.name=
canal.instance.master.position=
canal.instance.master.timestamp=
canal.instance.master.gtid=

# rds oss binlog
canal.instance.rds.accesskey=
canal.instance.rds.secretkey=
canal.instance.rds.instanceId=

# table meta tsdb info
canal.instance.tsdb.enable=true
#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
#canal.instance.tsdb.dbUsername=canal
#canal.instance.tsdb.dbPassword=canal

#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.standby.gtid=

# username/password canal 用户名称密码
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal 
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBSwAwSAJBALK4BUxPOLJdDltRRE5/zXpVEVgunvscYFtEip3pmLlhrWpX7y7GCMo2/JM6LeHmiiNdHWgGCpssddfRDUfircSwlWKUCAwEAAQ==

# table regex
canal.instance.filter.regex=表名称:字段名
# table black regex
canal.instance.filter.black.regex=
# table field filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
canal.instance.filter.field=表名称:字段名
# table field black filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.black.field=test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch

# mq config 消息队列topic
canal.mq.topic=topic
# dynamic topic route by schema or table regex
#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
#canal.mq.partition=0
# hash partition config
canal.mq.partitionsNum=12
canal.mq.partitionHash=表名称:字段名(存入消息队列的信息)
#################################################