Canal Admin 修改了配置后,Canal Server不会发生变更,即使重启Canal Server也不行
environment
- canal version: 1.4.1
- mysql version:5.6
Issue Description
首先我这个是没有部署zk集群,现在是单机部署canal-admin、canal-server
server 管理里面有一个单机实例,并且状态是启动状态,并且在这里操作停止、启动 都是生效的,这个没有问题

再然后是这个instance管理的问题 1、如果我新增instance的话,新增的instance永远都是停止状态,启动不了,我必须去canal-server手动更改canal.properties文件中的canal.destinations 字段 手动增加instance名,并重启,这个状态才会变成启动,即使我在server管理去修改canal.destinations 字段后重启canal-server 也无效。 2、启动状态的instacne 点停止,提示成功后,并没有成功,即使我重启canal-server后也还是启动状态。 3、停止状态的instance 点启动 ,也是一样提示成功,但是还是停止状态。 4、在canal-admin 修改instance配置并不会生效到canal-server,即使重启canal-server也无效
不知道是不是哪里操作有问题? 而且也没观察到什么错误日志。

update ------------------------------------------
刚翻源码看了一下Canal Admin的修改instance配置接口,发现只是更新到数据库,并没有推送到canal-server
update ------------------------------------------
翻了一下canal-server源码,发现在启动的时候会合并admin的配置和本地配置,admin的配置被本地配置覆盖了
把合并代码注释后,已解决canal.properties本地覆盖远程配置的问题。
update ------------------------------------------
在canal-server 的parseInstanceConfig方法里,发现从canal.properties 尝试拿取instance的manager地址
String managerAddress = getProperty(properties, CanalConstants.getInstanceManagerAddressKey(destination));
需要在canal.properties 配置一下instance的manager地址。中间的{0}是instance名
canal.instance.{0}.manager.address=xxx
于是我在canal-admin加上instance的manager配置,这样的情况下,canal-admin 在server管理添加destinations后,再去新增instance,这种情况下instance是启动状态了,不再是以前的停止状态。 但是 这个instance没用啊... 客户端监听不到这个instance 而且我观察了下canal-server,conf目录下按照destinations名创建了文件夹,但是里面只有一个h2.xxx的db文件,没有那个meta.log,而且logs目录下也没有destinations的日志
update ------------------------------------------
没有找到canal 去拉取instance的properties代码,救救孩子吧
改了一通,最后配置文件是可以同步到canal-server了
CanalLauncher 这个类 注释掉下面这行代码
// merge local
managerProperties.putAll(properties);
PlainCanalInstanceGenerator 这个类 注释掉下面这行代码
// merge local
properties.putAll(canalConfig);
另外,在canal-admin的server配置里加上 把{0} 替换为instance 的name 有几个instance就加几个instance
canal.instance.{0}.manager.address=xxx
还有记得加destinations,也是有几个加几个,也在canal-admin的server配置里
canal.destinations = xxxx,xxxx
最后一个问题,点instance的停止,没用,停不掉。算逑,先不管了
是不是停止维护了,大半年没更新了
是不是停止维护了,大半年没更新了
不知道啊,但是阿里的中间件都不太省心....
是不是停止维护了,大半年没更新了
不知道啊,但是阿里的中间件都省心……
admin 坑真的是太多了,我准备自己写一个了
请问一下,这个问题,后来有结论吗?
某得结论
救救孩子吧
我是用集群,我的方法是直接把admin上的配置复制到本地的canal.properties下