个人主页:阿Q说代码
‍♂️作者简介:大众号阿Q说代码作者(等待你的关注)、infoQ签约作者、CSDN后端领域新星创作者
技能方向:专心于后端技能栈共享:JVM、数据库、中间件、微服务、Spring全家桶

哈喽咱们好,我是阿Q!

前几天在网上冲浪的时分发现了一个比较老练的开源中间件——Canal。在了解了它的工作原理和使用场景后,顿时产生了浓厚的兴趣。本着好记忆不如烂笔头的准则,阿Q对 Canal 的原理进行了整理、对环境进行了搭建,具体步骤见这篇文章:原理+装备+实战,Canal一套带走

今日咱们抛开 canal 的原理和代码不谈,总结几个在使用过程中遇到的问题,当然,解决方案也同时呈上。

问题一

在给 canal 分配数据库权限的过程中,因为暗码设置的比较简单,会报以下过错

ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequirements

这是由 MySQL 的暗码标准决定的,建议设置的暗码要包括大小写字母、数字和特殊字符,具体的标准咱们能够自行百度。

问题二

在经过指令./bin/startup.sh 发动 canal 服务后,发现在 logs 下没有生成 canal.log 日志,在进程指令中 ps -ef | grep canal 也查不到 canal 的进程。

经过检查目录 logs 下的文件 canal_stdout.log,发现了问题所在

总结 canal 使用过程中的几个问题,值得思考一下

报错信息提示内存不足,Java 运转时环境无法持续。更详细的过错日志在文件:/usr/local/bin/hs_err_pid25186.log 中。

既然是内存原因,那就检查一下自己的内存,执行指令free -h ,发现可用内存仅为 96M,应该是内存问题,解决方法如下:

  • 杀死运转的一些进程;
  • 添加虚拟机的内存;
  • 修正 canal 发动时所需要的内存;

我便是用的第三种方法,首先用 vim 打开 startup.sh 修正内存参数,能够对照我的进行修正,按照自己服务器剩余内存进行修正,这儿我将内存调整到了 80M。

总结 canal 使用过程中的几个问题,值得思考一下

改为 -server -Xms80m -Xmx80m -Xmn80m -XX:SurvivorRatio=2 -XX:PermSize=66m -XX:MaxPermSize=80m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError

改完之后执行指令发现仍旧报错:found canal.pid , Please run stop.sh first ,then startup.sh 意思是找到了 canal.pid,请先运转stop.sh

这是因为 canal 服务不正常退出服务导致的,比如说虚拟机强制重启。

执行 stop.sh 指令后重新发动,成功运转,成功运转后能够在 canal/logs 文件夹中生成 canal.log 日志。

总结 canal 使用过程中的几个问题,值得思考一下

问题三

在 canal 服务发动之后,想经过编写代码的方法来测验数据库变更之后触发 canal 输出数据的过程。成果无论怎样修正,控制台便是没有日志打出。

经过检查 canal /usr/local/logs/example下的 example.log 文件才发现问题所在

总结 canal 使用过程中的几个问题,值得思考一下

原因便是meta.dat中保存的位点信息和数据库的位点信息不一致导致 canal 抓取不到数据库的动作。

所以我找到 canal 的 conf/example/instance.properties 实例装备文件,发现没有将canal.instance.master.address=127.0.0.1:3306 设置成自己的数据库地址。

解决方案

  • 先停止 canal 服务的运转;
  • 删除meta.dat文件;
  • 再重启canal,问题解决;

今日的内容到这儿就结束了,希望对咱们有所协助,咱们下期再会。跪求一键三连,希望靓仔在评论区打出“老铁666”,鼓舞一下阿Q。

好看的皮郛千人一面,风趣的魂灵万里挑一,让咱们在冷漠的城市里相互温暖,我是阿Q,咱们下期再会!

引荐阅读

实战:画了几张图,总算把OAuth2搞清楚了

重磅出击,20张图带你彻底了解ReentrantLock加锁解锁的原理

领导看了我写的关闭超时订单,让我出门左转!

看了搭档写的代码,我竟然开始默默的模仿了。。。

实战篇:断点续传?文件秒传?手撸大文件上传

本文正在参与「金石计划」