写点什么

实践案例丨 Pt-osc 工具连接 rds for mysql 数据库失败

发布于: 2021 年 04 月 22 日

​​​​摘要:主机可以 telent 通 rds 端口,并且使用 mysql-client 连接正常


本文分享自华为云社区《Pt-osc工具连接rds for mysql 数据库失败》,原文作者:云技术搬运工 。

 

【现象】


主机可以 telent 通 rds 端口,并且使用 mysql-client 连接正常;


如下图所示:使用 pt-osc 工具连接时,一直没有响应,一直卡在哪里



​等了 4-5 分钟左右后,会有响应,如下图所示:提示不能连接到 x.x.x.x,而这个 ip 地址查到是备节点的 ip。



【排查】


在 rds 侧查看任务流如下图:发现 pt-osc 先连进来执行了一下 show full processlist,然后卡了 4-5 分钟左右。结合上面截图中卡了 4-5 分钟后客户端的返回看,pt-osc 工具先 show full processlist 得到备库的 ip,然后去连接备库了,但是备库由于作为高可用性而做的备份,不直接提供外部服务,所以是连接不上的。



【解决】


Pt-osc 有一个参数:-recursion-method

【type:array; 默认值:processlist,host

用于判断是否存在从库的方式,可以的方式有:

processlist:showprocesslist;

hosts:show slavehosts

dsn=DSN:DSNs from atable

none:不查找从库】

 

pt-osc 连接时 加上--recursion-method=none 意为不查找从库,就正常了。具体命令为 #pt-online-schema-change--user=root --password=xxxxx --host=xx.xx.xx.xx P=3306,D=xx,t=xx --charset=utf8--alter="ENFINE=InnoDB" --nocheck-replication-files--alter-foreign-keys-method=auto --recursion-method=none  --execute。

 

【总结】


Pt-osc 工具连接数据库时会先通过 sql 得到备库的 ip,然后连接备库。但是我们 rds 的备库是无法连接的,因此会卡住。而连接单机类型的 rds formysql 则正常。


点击关注,第一时间了解华为云新鲜技术~

发布于: 2021 年 04 月 22 日阅读数: 17
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
实践案例丨Pt-osc工具连接rds for mysql 数据库失败