{{ item.name }}
{{ item.name }}

{{ it.name }}

{{ it.text }}

{{ it.name }}

{{ innerIt.name }}

{{ innerIt.text }}

{{news.time}}
{{news.title}}
第39问:如何编译 MySQL 的调试版本
2021-06-24发布 13,350浏览

关键字:数据库运维数据治理数据库灾备方案

我们在第16问中使用过 mysql 内置的调试版本 mysqld-debug ,但有些 MySQL 版本中没有内置的调试版本.

这次介绍一下如何编译一个调试版本


我们先准备一个安装了 docker 的环境, 之所以用容器, 是因为我们在进行各种试验后, 可以将容器毁掉重建, 保持系统环境干净统一, 非常便利.

首先开启一个 devtoolset 容器:确认自己在容器内:

下载 MySQL 源码包并解压:

接下来安装依赖包, 一共分为 3 类依赖: 编译用的工具, MySQL 的依赖包, 以及开启 DTRACE 调试功能用的依赖包

(DTRACE 调试功能 我们以后会介绍)创建一个 build 目录, 之后 MySQL 会将编译的过程文件和结果都放在这个文件夹里:对编译进行配置:

在一大段输出后, 可以看到配置成功的信息:现在可以正式编译了:经过漫长的五彩斑斓的输出, 编译顺利成功:在 build/sql 文件夹中, 已经形成了调试版的 mysqld :

小贴士

如何像官方一样编译正式的 MySQL ?

在配置环节, cmake 命令中, 将 -DWITH_DEBUG=1 换成 -DBUILD_CONFIG=mysql_release 即可

我们为什么需要调试版本的 MySQL 呢?

在第35问中, 我们使用过 gdb 调试器, 用于限制 MySQL 的行为, 来研究相关机制.

MySQL 在编译时, 会进行一些优化, 会将一些调试信息抹掉以提高性能. 这些被抹掉的调试信息是我们使用调试器时所需要的.

我们自己编译了调试版本的 MySQL, 就有了这些信息的加持, 我们就能使用更多的调试手段.

当然, 保留了调试信息, 就意味着运行性能会下降, 所以 MySQL 的调试版本不能用来做性能测试.

关键字:数据库运维数据治理数据库灾备方案

上一篇
技术分享 | mongo 集群连接数暴涨处理案例一则
400-820-6580 13916131869
marketing@actionsky.com
上海市闵行区万源路2138号泓茂中心2号楼
产品详情
关系型数据库
AI数据库
数据库智能管理平台
数据库生态产品
行业案例
金融行业
新零售行业
制造业
通信行业
更多
公司动态
最新新闻
国产化信息
技术分享
关于我们
公司简介
公司分布
国家专利
资质认证
扫码关注公众号
© Copyright 2017, All rights reserved by: 上海爱可生信息技术股份有限公司 沪ICP备12003970号-1 | 法律声明 | 网站地图
沪公网安备 31010402003331号