【TiDB】TiDB源码系列之沉浸式编译TiDB

本文指导新手如何通过Goland和最新TiDB源码,解决编译环境配置,从main.go入手学习源码,通过调试掌握TiDB的运行流程,适合对数据库源码感兴趣的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景

最近刚学习完PCTP,对TiDB的各种读写有了粗略的了解,但是要想研究的更细节一些的东西,
肯定离不开学习源码,学习源码的话大家可以参考官方的TiDB源码系列文章,但是官方的文章
都是18年发的,可能会有些滞后,所以大家可以参考这个以及结合源码去学。
TiDB源码系列解读文章官方源码解读博客地址
然而学习源码肯定编译调试源码是最有效的学习途径,经过这几天的学习,以及请教开发大佬,
成功编译了TiDB,所以分享给对源码感兴趣的小伙伴。

2.准备工具

Goland白嫖款一个(30天)
TiDB 最新款源码tar包一份
Mac一台

3.源码下载

1.首先去github上下载源码:源码下载地址
2.选择自己想要看的版本:这里我以最新的5.4.0版本为例。
在这里插入图片描述
3.解压tar包

#1.打开终端
#2.到对应目录解压tar包
tar -xzvf tidb-5.4.0.tar.gz
#解压后就会得到一个文件夹

4.编译软件下载配置

由于TiDB是使用的go语言编写的,所以我们使用goland进行编译。
1.下载一个30天白嫖版,有能力的可以直接购买付费版(支持正版)
下载地址:goland下载地址
选择适合自己的电脑系统的进行下载:
在这里插入图片描述
2.安装完成之后选择对应打开的项目。
在这里插入图片描述
3.找到自己刚才解压的TiDB源码文件夹,打开
在这里插入图片描述
4.打开后可能会出现很多的报错(如下图),但是问题不大,基本都是因为没有安装go的相关module导致的。
在这里插入图片描述
所需的gomodule可以在代码中的下面文件看到,可以看到目前都是红色,说明缺少对应的mod。
在这里插入图片描述

5.打开goland的设置,然后下载最新版的goroot,就会安装所需的module。
在这里插入图片描述
然后选择一个最新的版本下载就好。
在这里插入图片描述
然后在下面就会开始下载相关的依赖:
在这里插入图片描述
测试的时候发现只会下载一部分,所以剩下的缺少的可以点击图片中的从github sync。
在这里插入图片描述
下载完成之后就会全部变绿,至此环境我们就配置好了。
在这里插入图片描述

5.编译过程

经过上面的步骤,基本一切环境已经就绪,接下来我们就可以自己编译TiDB数据库。
1.但是会又有一个问题从哪开始运行?
这里还是要借助我开始说的官方源码系列:如何学习TiDB源码
作为一个非专业开发人员,只能借助官网提示去学习。
从我上面的地址,大家可以看到TiDB源码文件对应什么,以及从哪里开始。
在这里插入图片描述
2.从上面我们可以从官方博客知道从tidb-server/main.go运行
首先main.go里面的var就是我们系统的启动参数,大家可以修改对应的参数进行启动
在这里插入图片描述

然后下面找到main函数旁边的绿色按钮,大家可以选择debug模式或者直接运行,这里我选择Debug模式,可以看到更多的信息。
在这里插入图片描述
点击之后需要等待一会儿,屏幕下方会显示compiling…
编译完之后,大家就可以在debug栏看到对应的信息:
可以看到[INFO] [server.go:246] ["server is running MySQL protocol"] [addr=0.0.0.0:4000]说明启动成功了。
在这里插入图片描述
3.去访问看看是否真正运行成功。
可以看到TiDB服务已经在运行,
使用MySQL命令行访问TiDB,可以看到已经O K,至此编译完成。
在这里插入图片描述

6.最后

运行成功后,大家后续就可以通过对不同的函数打断点,然后看自己的SQL会调用哪些代码中的哪些函数。函数的位置可以参考官方博客源码解析进行断点测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔不是鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值