细节
-
错误
-
状态: Done">完成
-
媒介
-
解决方法: 固定
-
没有一个
描述
我可以使用percona-xtradb-cluster-server-5.7在一个dev (Debian 8)流浪环境中复制这个问题:雷竞技下载官网
服务器版本:5.7.19-17-57 Percona Xt雷竞技下载官网raDB Cluster (GPL), Release rel17, Revision 35cdc81, WSREP version 29.22, wsrep_29.22
我用一个基本测试表建立了一个3节点集群:
创建表test_a (test_id)int(10) unsigned NOT NULL AUTO_INCREMENT, ' column_a ' varchar(80) DEFAULT NULL, ' column_b ' varchar(20) DEFAULT NULL, ' active ' tinyint(1) unsigned DEFAULT NULL, ' created ' timestamp NULL DEFAULT NULL, ' modified ' timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (' test_id ')) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我填充了~400k记录,然后我设置了4个基本的php进程,不断更新表中的随机记录。进程被写入集群中的随机节点,以复制生产环境中发生的情况。
然后,当4个进程忙于更新随机记录时,我在其中一个节点上运行pt-online-schema-change工具
PTDEBUG=1 pt-online-schema-change——alterDROP COLUMN column_bD=test_pt_online_schema_change,t=test_a——execute——ask-pass——u root——alter-foreign-keys-method=auto——chunk-size=5000 -P 6000 -S /tmp/mysql.6000.sock
我已经附加了脚本的输出,但它实际上达到了死锁/冲突,并且不会重试INSERT到新表命令
...#重试:3823 7147尝试10次中的1次# pt_online_schema_change:11332 7147 INSERT LOW_PRIORITY IGNORE INTO ' test_pt_online_schema_change '' _test_a_new ' (' test_id ', ' column_a ', ' active ', ' created ', ' modified ') SELECT ' test_id ', ' column_a ', ' active ', ' created ', ' modified ' FROM ' test_pt_online_schema_change '。' test_a ' FORCE INDEX(' PRIMARY ') WHERE ((' test_id ' >= ?)) AND ((' test_id ' <= ?))锁定共享模式/*pt-online-schema-change 7147 copy nibble*/下边界:1上边界:14998 #重试:3829 7147尝试代码失败:DBD::mysql::st执行失败:wsprep检测到死锁/冲突,并中止事务。尝试重新启动事务[为声明INSERT LOW_PRIORITY IGNORE INTO ' test_pt_online_schema_change '。' _test_a_new ' (' test_id ', ' column_a ', ' active ', ' created ', ' modified ') SELECT ' test_id ', ' column_a ', ' active ', ' created ', ' modified ' FROM ' test_pt_online_schema_change '。' test_a ' FORCE INDEX(' PRIMARY ') WHERE ((' test_id ' >= ?)) AND ((' test_id ' <= ?))锁定共享模式/*pt-online-schema-change 7147 copy nibble*/"with ParamValues: 0=' 1 ', 1 =“14998”/usr/bin/pt-online-schema-change行11336。# # pt_online_schema_change:11242 7147重试失败:DBD::mysql::st execute failed: wsprep检测到死锁/冲突并中止事务。尝试重新启动事务[为声明INSERT LOW_PRIORITY IGNORE INTO ' test_pt_online_schema_change '。' _test_a_new ' (' test_id ', ' column_a ', ' active ', ' created ', ' modified ') SELECT ' test_id ', ' column_a ', ' active ', ' created ', ' modified ' FROM ' test_pt_online_schema_change '。' test_a ' FORCE INDEX(' PRIMARY ') WHERE ((' test_id ' >= ?)) AND ((' test_id ' <= ?))锁定共享模式/*pt-online-schema-change 7147 copy nibble*/"with ParamValues: 0=' 1 ', 1 =“14998”/usr/bin/pt-online-schema-change行11336。# #重试:3845 7147尝试代码不成功#清理任务:6550 7147调用清理任务代码(0x32f6878) # pt_online_schema_change:9319 7147清理触发器…
我们已经尝试在生产环境中降低块大小,但仍然遇到了这个问题。
未指定