同步数据源时, 如果使用的是MHA的数据库,在高可用切换时, 数据库主库发生了变化, 这时 canal同步日志 发生了改变, 会报错 . 报错如下:
Caused by: java.io.IOException: connect rm-2zed22tz2539.mysql.rds.aliyuncs.com/100.114.42.154:3306 failure:java.net.ConnectException: Connection timed out
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Net.java:454)
at sun.nio.ch.Net.connect(Net.java:446)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648)
at com.alibaba.otter.canal.parse.driver.mysql.MysqlConnector.connect(MysqlConnector.java:70)
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.connect(MysqlConnection.java:56)
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser.preDump(MysqlEventParser.java:86)
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:157)
at java.lang.Thread.run(Thread.java:745)
at com.alibaba.otter.canal.parse.driver.mysql.MysqlConnector.connect(MysqlConnector.java:74)
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.connect(MysqlConnection.java:56)
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser.preDump(MysqlEventParser.java:86)
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:157)
at java.lang.Thread.run(Thread.java:745)
原提问者GitHub用户laomeng2088
根据报错信息来看,连接 RDS 数据库时出现了 Connection timed out 的错误,很可能是因为连接超时导致的。这个问题通常有以下几种可能原因:
网络问题:可能是由于网络不稳定或网络阻塞等问题导致连接超时。
防火墙问题:如果您的服务器或客户端使用了防火墙,可能会阻止数据库的连接。您可以检查防火墙设置是否正确,以确保允许从客户端访问数据库服务端口。
数据库服务器负载过高:当数据库服务器负载过高时,可能会导致连接超时。您可以检查服务器负载并采取相应的措施来降低负载。
对于数据库主库切换时,canal同步日志发生改变而导致的问题,推荐您在切换后及时更新同步日志位置,以防止同步异常。具体的做法是,在切换完成之后,将 former slave 的同步日志位置设置为新 master 的 binlogFile 和 binlogPosition,并重启 canal 服务。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。