MySQL内核月报 2015.01-MySQL · 捉虫动态· mysql client crash一例
2023-09-14 09:00:57 时间
背景
客户使用mysqldump导出一张表,然后使用mysql -e source test.dmp的过程中client进程crash,爆出内存的segment fault错误,导致无法导入数据。
问题定位
test.dmp文件大概50G左右,查看了一下文件的前几行内容,发现:
问题定位到第一行出现了不正常warning的信息,是由于客户使用mysqldump命令的时候,重定向了stderr。即:
mysqldump ... /test.dmp 2 1导致error或者warning信息都重定向到了test.dmp, 最终导致失败。
问题引申
问题虽然定位到了,但却有几个问题没有弄清楚:
问题1. 不正常的sql,执行失败,报错出来就可以了,为什么会导致crash?
问题2. 那代码中对于大小的边界到底是多少?比如insert语句支持batch insert时,语句的长度多少,又比如遇到clob字段呢?
2. mysqldump导出insert语句的时候,如何分割insert语句? mysqldump时候支持insert t1 value(),(),();这样的batch insert语句。 mysqldump其实是根据opt_net_buffer_length来进行分割,当一个insert语句超过这个大小,就强制分割到下一个insert语句中,这样更多的是在做网络层的优化。 又如果遇到大的clob字段怎么办? 如果一行就超过了opt_net_buffer_length,那就强制每一行都分割。
#define MAX_BATCH_BUFFER_SIZE (1024L * 1024L * 1024L) 也就是mysql在执行语句的时候,最多只能分配1G大小的缓存。
所以,正常情况下,max_allowed_packet现在的最大字段长度和MAX_BATCH_BUFFER_SIZE限制的最大insert语句,是匹配的。
RDS问题修复原则
从问题的定位上来看,这一例crash属于客户错误使用mysqldump导致的问题,Aliyun RDS分支对内存导致的crash问题,都会定位并反馈给用户。 但此例不做修复,而是引导用户正确的使用mysqldump工具。
TDSQL中修复的mysql内核bug 在TDSQL这两年多的开发工作中,我感觉很自豪的一件事是我修复了不少mysql-5.7.17和mariadb-10.1.9的内核bug,这些bug大多已经报告给了MySQL/MariaDB官方开发团队,在每个bug描述中我会贴出来bug报告的连接。本文将大略介绍这些bug的概况,我在将来会写更多文章详细介绍每个bug的具体问题分析以及解决思路。本文列出的所有bug都已经修复,经过验证可以正确工作并解决相关问题。 这里先说一下为什么我要提交代码给mysql/mariadb官方开发团队,主要有一下几个好处: 1. 官方开发者可以review我提交的patch,帮助完善patch,发现和解决之前
MySQL · 内核特性 · 统计信息的现状和发展 简介我们知道查询优化问题其实是一个搜索问题。基于代价的优化器 ( CBO ) 由三个模块构成:计划空间、搜索算法和代价估计 [1] ,分别负责“看到”最优执行计划和“看准”最优执行计划。如果不能“看准”最优执行计划,那么优化器基本上就是瞎忙活,甚至会产生严重的影响,出现运算量特别大的 SQL ,造成在线业务的抖动甚至崩溃。在上图中,代价估计用一个多项式表示,其系数 c 反应了硬件环境和算子特性,而
关于MySQL内核,一定要知道的! 近一个多月,写了一些MySQL内核的文字,稍作总结,希望对大家有帮助。1.《InnoDB,为何并发如此之高?》 文章介绍了: (1)什么是并发控制; (2)并发控制的常见方法:锁,数据多版本; (3)redo,undo,回滚段的实践; (4)InnoDB如何利用回滚段实现MVCC,实现快照读。
MySQL · 引擎特性 · MySQL内核对读写分离的支持 读写分离的场景应用 随着业务增长,数据越来越大,用户对数据的读取需求也随之越来越多,比如各种AP操作,都需要把数据从数据库中读取出来,用户可以通过开通多个只读实例,将读请求业务直接连接到只读实例上。使用RDS云数据库的读写分离功能,用户只需要一个请求地址,业务不需要做任何修改,由RDS自带的读写分离中间件服务来完成读写请求的路由及根据不同的只读实例规格进行不同的负载均衡,同时当只读实例出现故障时能够主动摘除,减少对用户的影响。
MySQL · 引擎特性 · Group Replication内核解析之二 前文已经介绍了MySQL的Group Replication的实现机制和原理,本文就Group Replication的具体实现进行详细的阐述,以更深入的理解Group Replication的机制,在实践中更好的应用Group Replication,提升应用系统的可用性,优化其性能。
db匠 rds内核团队秘密研发的全自动卖萌机. 追加特效: 发数据库内核月报. 月报传送: http://mysql.taobao.org/monthly/
相关文章
- MySQL动态SQL:实现动态查询的高效方式。(mysql动态sql)
- MySQL动态分表实现数据库优化(mysql动态分表)
- Java操作MySQL数据库:实现看似不可能的梦想(java连接mysql数据库)
- MySQL动态SQL语句:构建数据库的基石(mysql动态sql语句)
- 密MySQL数据库加密,保护数据安全(mysql加)
- 查询MySQL递归查询:深入学习(mysql递归)
- MySQL深入探索:掌握关键字(mysql的关键字吗)
- MySQL数据库查询技巧大全(c查询mysql数据库)
- 近一个月MySQL的最新动态与进展(mysql最近一个月)
- MySQL: 修改记录实践指引(mysql修改信息)
- MySQL触发器IF:实现动态逻辑操作(mysql触发器if)
- 使用MySQL实现动态表名:灵活、高效的数据管理方式(mysql动态表名)
- MySQL数据库的基础知识:一份文献资料简述(mysql数据库文献)
- MySQL过程中循环使用方法(mysql过程循环)
- MySQL使用详解:全面学习MYSQL技术(mysql大全)
- 快速掌握常用Mysql语句,让你的MySQL更强大(常用mysql语句)
- 数据库中的MySQL 理解Mysql数据库的重要性(MySql中mysql)
- MySQL中C语言实现动态绑定变量的方法(c mysql 绑定变量)
- ASP连接MySQL登录动态网站实战(asp 登录 mysql)
- 数据库Cmd命令行快速导入MySQL数据库(cmd 导入mysql)
- 掌握MySQL获取稳固的开发基础(. 含义 mysql)
- MySQL中动态语句的使用方法(mysql中动态语句吗)
- MySQL删除外键约束操作(mysql中删除外键约束)
- MySQL中如何设置分辨率(mysql中分辨率)
- MySQL的两种内核使用方法(mysql两种内核使用)
- MySQL内核分析MyISAM和InnoDB的不同(mysql两种内核)
- 解决方案MySQL数据库无法正常显示中文字符的问题(mysql不显示中文字符)