mysql 怎么调试_为什么我们要调试MySQL Server?如何调试?

为什么要调试MySQL?

从源代码构建MySQL听起来像通常不会做的事情,尽管它在几种情况下很有用:

当您想通过新功能或错误修复为MySQL做出贡献时。

当您想探索MySQL或下划线引擎的行为方式时,超出了记录的范围。

当您考虑使用MySQL进行工作并在自己的存储库中对其进行自定义时。

当您要使用自定义构建参数或编译器优化来创建自定义MySQL构建时。

对于EverSQL来说,这是原因2。

为了改进我们的查询优化算法,我们一直在探索数据库的源代码,以了解数据库的操作方式,超出实际记录的范围,以及我们的产品如何补充数据库的核心功能。

在本教程中,您将学习如何从最新的源代码构建MySQL并对其进行调试。在本教程中,我使用Ubuntu 16.04并从GitHub构建了最新版本的MySQL(到目前为止,是MySQL 8.0.19)。

从源代码构建MySQL 8.x

首先,将最新的MySQL服务器源代码从GitHub 复制到您的Ubuntu计算机:

git clone https://github.com/mysql/mysql-server

安装以下依赖项:

sudo apt install cmake libssl-dev libzstd-dev libncurses5-dev libreadline-dev bison pkg-config

接下来,我们创建构建输出目录,并进行构建。

cmake参数将为调试做好准备,还将自动下载boost,这是构建MySQL的前提。

cd mysql-server

mkdir build

cd build

cmake .. -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=~/boost_1_69_0

make

一旦cmake成功完成,您将看到: 使用make进行构建可能需要几分钟(或更长时间)。一旦make成功完成,您应该会看到类似以下的输出: 现在您可以初始化MySQL并运行服务器。默认情况下,初始化操作将随机化root帐户的密码-请从命令输出中复制该密码,并在下一步中使用它。

1fc98268c2938c5add644a77aa22423f.png

daeb747e5b00534cf71d8408ece67bc4.png

./build/bin/mysqld --initialize

./build/bin/mysqld --debug

5d090814569bbb464e52a13d786f7a4c.png

现在,在另一个终端选项卡中,您可以使用MySQL客户端连接到数据库,并更改密码:

./build/bin/mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED BY "";

运行快速测试查询以确保一切正常:

show databases;

现在,您可以关闭服务器并进行所有设置以调试数据库服务器:

exit

./build/bin/mysqladmin -u root -p shutdown

调试MySQL Server 8.x

要调试MySQL,可以使用Visual Studio Code,它是Microsoft的一种出色的(免费)IDE。首先下载并安装它。

安装之后,我们需要从扩展存储库中安装C ++扩展,因为它不是其核心功能的一部分。此扩展将设置有效浏览和调试C ++代码所需的一切。

4

现在,请导航至左侧的“资源管理器”标签,然后选择“打开文件夹”。作为源文件夹,请选择从GitHub克隆的“ mysql-server”文件夹:

5

要设置调试器以调试mysqld进程,请从顶部菜单中选择:运行 > 开始调试> C ++(gdb)。当loader.json文件打开时,将程序参数设置为mysqld二进制文件的路径。

6

现在您可以开始调试了。

从菜单中再次选择Run ==> Start Debugging,完成后,MySQL将以调试模式启动。

如果你在代码中找一个有趣的地方分配一个断点开始调试之前,一个不错的选择将是Optimize_table_order :: greedy_search()在文件功能sql_planner.cc,这将让你有一个一眼MySQL如何确定查询的最佳执行计划。

原文链接:https://www.eversql.com/why-and-how-build-debug-mysql-from-source-code/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值