故障案例--在线ddl的一个bug
来源:互联网 发布:网络教研平台 编辑:程序博客网 时间:2024/06/06 17:10
现象
mysql> ALTER TABLE mabang_order.`Db_Order4` ADD `trackNumber1` VARCHAR(45) DEFAULT NULL COMMENT '内部单号' AFTER `trackNumber`;
ERROR 1062 (23000): Duplicate entry '8026379' for key 'PRIMARY'
处理方法:
实际上不存在什么主键冲突,忽略它再来一发可能就好了
Query OK, 0 rows affected (3 min 26.51 sec)
Records: 0 Duplicates: 0 Warnings: 0
故障原因
在线ddl的一个bug,在5.6.28以后的版本中已经修复
https://bugs.mysql.com/bug.php?id=77572
5.6在线添加列时虽然属于in-place YES,但也还是会有copy table的操作,但可以并发执行dml。在这个情况下允许dml操作,ddl结束之前会用online log记录这段时间的增量修改,导致了这个主键冲突的bug
处理方案
1 多试几次,不一定复现
2 pt工具修改
3 显示指定ddl模式为copy,即退化成ddl期间阻塞写操作,而不阻塞读操作
Any ALTER TABLE operation run with theALGORITHM=COPY clause prevents concurrent DML
operations. Concurrent queries are still allowed. That is, a table-copying operation always includes at
least the concurrency restrictions of LOCK=SHARED (allow queries but not DML). You can further restrict
concurrency for such operations by specifying LOCK=EXCLUSIVE (prevent DML and queries).
- 故障案例--在线ddl的一个bug
- 一个load过高的故障排查案例
- 故障案例--mongodb writeconcern为majority时的又一个bug
- 故障案例--DDL中断后,再次执行失败
- 处理MySQL复制环境Slave故障的一个案例
- 故障案例--mysql5.5分区表的一个坑
- 故障案例--mariadb 10.0向mysql5.6官方版本迁移的一个坑
- 故障案例--binlog_format不为row模式下关于时区设置的一个坑
- 一个由多线程而引发内存溢出故障的案例分析
- 故障案例--mongodb副本集write concern为majority的一个坑
- 一个奇怪的故障
- bug与故障的区别以及防范措施
- 免费的在线bug管理工具
- mysql在线ddl操作
- 在线DDL,分库分表分区
- 14.10.2 Performance and Concurrency Considerations for Online DDL 在线DDL的性能和并发考虑
- 故障案例:phpadmin点击打开一个数据库卡死
- 故障案例:一个子查询导致服务崩溃
- cas单点登录系统:客户端(client)详细配置
- Nginx教程(三) Nginx日志管理
- HttpUtil
- Python之random
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 故障案例--在线ddl的一个bug
- 【javascript笔记】this in javascript
- 326. LeetCode_Math_Power of Three
- gson json转换对象及对象对象转换为json帮助类
- listview详解一
- 基于Qt的轨迹还原之一:introduction
- ScrollView与ListView和gridview的时候
- leetcode 032 Longest Valid Parentheses
- 从一个logger引发的lib和dll探讨