本文分享自华为云社区《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 则失常。
点击关注,第一工夫理解华为云陈腐技术~