【canal】canal-web上操作实例 `启动/停止` 失败的解决方法
canal
alibaba/canal: Canal 是由阿里巴巴开源的分布式数据库同步系统,主要用于实现MySQL数据库的日志解析和实时增量数据订阅与消费,广泛应用于数据库变更消息的捕获、数据迁移、缓存更新等场景。
项目地址:https://gitcode.com/gh_mirrors/ca/canal
免费下载资源
·
前置说明
- canal版本1.1.4
- 已有的canal-web中,配置好的server只有一个,一个server下面是多个实例
- 一个server停止下面的实例全部停止
- 也可以停止单独一下实例
- 有正在运行的实例,也有停止的实例
问题描述
-
通过canal-web页面操作实例启动或者停止,失效(启动的停止不了,停止的启动不了),但是元数据库中canal_instance_config.status字段状态是可以改变的,只不过页面上的显示的状态不会变
-
zookeeper中的配置信息只有running这一项,别的都没有(下图是正常的zookeeper中的配置信息)
-
新建实例也不行能正常启动,但是都没有什么太明显的异常显示
问题分析
- 可能由于在新增实例完成后(新增一个实例后,会自动启动),直接点停止,导致zookeeper上面的元数据没有创建完成,只有running这一个文件
- 因为这个running代表着其实是这个实例一直在运行着(但是并不能正常的同步binlog信息),如果删除zookeeper上面的这个实例的元数据信息后,还会自动生成,导致zookeeper上面一直有这个实例的元数据信息
- 有可能是因为这个实例一直不能正常使用,导致整个canal-web操作都失效
- 但是这并不影响已经启动并正常同步的实例
尝试操作
- 首先试过通过canal-web删除相应实例,但是这个删除并不能删除linux上面的实例文件夹,也不能删除zookeeper上面的元数据,只是在canal-web元数据配置表中删除了这一个实例的相关信息,所以在删除后,还是不能恢复正常,再重新建立也不可以,建立实例名不一样的实例也不能成功启动
- 接着试一下直接删除zookeeper上面的配置信息,结果是删除后,还会自动创建,因为实例还在运行
- 那就在想,要怎么样能停止实例,单独停止实例是停止不了,那么就只能是把server整个停止
解决办法
- 停止server,在停止server的时候,日志中确实打印出来这个异常实例的停止信息了,这回有希望了
- 然后去zookeeper上面手动删除异常实例的配置信息,删除成功,并且不会在自己创建了
- 这回在启动server,注意,已经在运行的正常实例不用单独关闭,因为server在停止的时候是全停止,在启动的时候,会把之前已经启动的实例,还会启动起来,也就是说server停止前什么样,server重启后还是什么样,因为异常实例在zookeeper已经删除了,所以server重启后异常实例就不会再启动了
zookeeper上的异常实例删除成功后,在重新建立实例,页面显示启动状态,并且别的实例停止、启动操作也都恢复正常了,这回算是可以了
GitHub 加速计划 / ca / canal
28.21 K
7.57 K
下载
alibaba/canal: Canal 是由阿里巴巴开源的分布式数据库同步系统,主要用于实现MySQL数据库的日志解析和实时增量数据订阅与消费,广泛应用于数据库变更消息的捕获、数据迁移、缓存更新等场景。
最近提交(Master分支:2 个月前 )
1e5b8a20 - 2 个月前
ff82fd65
2 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)