本文分享自华为云社区《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:show processlist;

hosts:show slave hosts

dsn=DSN:DSNs from a table

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 for mysql 则失常。

点击关注,第一工夫理解华为云陈腐技术~