虫部落导航网站怎么做,做外汇看的国外网站,wordpress页脚添加百度收录,wordpress首页优化【建议收藏】Windows 下如何安装最新版 MySQL 源码学习的调试环境步骤。 作者#xff1a;芬达 《芬达的数据库学习笔记》公众号作者#xff0c;开源爱好者#xff0c;擅长 MySQL、ansible。 本文来源#xff1a;原创投稿 爱可生开源社区出品#xff0c;原创内容未经授权不…【建议收藏】Windows 下如何安装最新版 MySQL 源码学习的调试环境步骤。 作者芬达 《芬达的数据库学习笔记》公众号作者开源爱好者擅长 MySQL、ansible。 本文来源原创投稿 爱可生开源社区出品原创内容未经授权不得随意使用转载请联系小编并注明来源。
前言
大多数研发人员使用 Mac 来调试代码但我作为不懂研发的 DBA并且作为 Windows 的粉丝相信绝大多数运维同学也是使用 Win 的那我必须使用 Win 了。从这篇文章开始我尝试摸索 MySQL 源码的学习。
本文中我们将在 Win11 上安装 VSCode 用于调试 MySQL安装 VMware并在 VMware 里部署 CentOS7。在 CentOS7 里我们将通过 VSCode 部署和调试 MySQL 的 Debug 版本。通过使用安装在 Win11 的 VSCode 的 REMOTE 插件我们可以访问 CentOS7并安装 VSCode 的调试插件来调试 MySQL 的 Debug 版。需要注意的是REMOTE 插件安装在 Win11 里而调试插件则通过 REMOTE 插件安装在 CentOS7 里这一点别弄错了。下面我们正式开始。 环境及软件准备
Win11VMware WorkStation 17 PROCentOS7.5VMware 虚拟机上部署VSCode 1.81.1MySQL 8.0.34 源码包
以上软件版本均为文章编写时的最新版。
CentOS7 环境准备
实际上如果不是使用 Mac那么使用 Ubuntu 应该是大多数研发人员的选择我使用 CentOS7 是因为我更熟悉它并且它更贴近于生产环境。但有一个大问题主要是 CentOS7 默认 YUM 源的开发依赖包太老旧了我需要使用 epel-release 的包来安装更加新的 Debug 依赖包。
# 创建存放源码的根目录
mkdir -p /root/code# 进入存放源码的根目录
cd /root/code# 安装 wget、下载源码 解压
yum install wget -y
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.34.tar.gz
tar zxvf mysql-boost-8.0.34.tar.gz# 用于安装 cmake3 的 yum 源
yum -y install epel-release# 用于安装高版本 gcc、gcc-c、make 的 yum 源
yum -y install centos-release-scl# 安装依赖软件
yum -y install devtoolset-11-gcc \devtoolset-11-gcc-c \devtoolset-11-make \cmake3 \openssl-devel \ncurses-devel \bison# 安装 gdb
yum -y install devtoolset-11-gdb# 让 scl 环境临时生效
source /opt/rh/devtoolset-11/enable# 让 scl 环境永久生效
vi /etc/profile.d/scl.sh# 把以下内容写入 scl.sh然后保存退出
source /opt/rh/devtoolset-11/enable
编译安装 MySQL Debug 版
# config
cd /root/code/mysql-8.0.34
cmake3 . \
-DWITH_BOOST./boost/ \
-DCMAKE_INSTALL_PREFIX/usr/local/mysql \
-DWITH_DEBUG1 \
-DFORCE_INSOURCE_BUILD1## build install
#这里的 -j2 是并发两核 CPU 去构建因为我的虚拟机只有两核
#但核数不是越高越好有可能因为官方的构建文件没有处理好并发
#导致更高的并发时编译直接报错反正我 -j8 时报错了
#如果追求安全不加并发也是个选择就是慢点
make -j2 make install
下图这样就算编译安装完了。 参数解释
cmake3 的参数是被我极限简化的其他走默认值减少大家学习的心智负担。
WITH_BOOST./boost/ 我们下载的是带 boost 的源码包相对路径就是在这里CMAKE_INSTALL_PREFIX/usr/local/mysql 编译安装后的 MySQL basedirWITH_DEBUG1 可 Debug 的版本FORCE_INSOURCE_BUILD1 没研究可能不是必须的
MySQL 初始化
# 创建配置文件目录 数据目录
mkdir -p /mysql/8.0.34/data #你可以改这里# 创建用户 组
groupadd mysql
useradd -g mysql mysql# 创建配置文件
vi /etc/my.cnf# 把以下内容覆盖到 my.cnf
[mysqld]
usermysql
innodb_file_per_table1
server_id100
basedir/usr/local/mysql
datadir/mysql/8.0.34/data #你可以改这里
log-error/mysql/8.0.34/data/error.log #你可以改这里# 初始化数据目录
/usr/local/mysql/bin/mysqld --initialize-insecure
安装 VSCode 插件
6.1 本地插件安装
在 VSCode 应用商店搜索并安装以下插件Chinese、Remote红框所示部分下面两个是 Remote-SSH 的依赖自动带出来的。 接着我们就可以通过 SSH 工具登录到 CentOS 了。 输入远程命令。 点击连接选择 Linux选择继续并输入密码。 打开文件夹两种方法任选。 输入文件夹路径可以正常显示路径下文件。 6.2 远程插件安装
C/Cgdb 插件调试时使用
装完后左侧会如图显示分上下两栏。上栏是你本地 Windows 上装的 VSCode 插件下栏是你远端 CentOS7 上装的 VSCode 插件。 远端的那个简体中文好像是 SSH 过去时自动安装的雨我无瓜
调试
7.1 配置 VSCode 插件
cd /root/code/mysql-8.0.34
mkdir .vscode
cd .vscode
vi launch.json
内容如下
{version: 0.2.0,configurations: [{name: (gdb) 启动,type: cppdbg,request: launch,program: /usr/local/mysql/bin/mysqld,args: [],stopAtEntry: false,cwd: ${fileDirname},environment: [],externalConsole: false,MIMode: gdb,setupCommands: [{description: 为 gdb 启用整齐打印,text: -enable-pretty-printing,ignoreFailures: true},{description: 将反汇编风格设置为 Intel,text: -gdb-set disassembly-flavor intel,ignoreFailures: true}]}]
}
7.2 启动 gdb 7.3 CentOS 上登录连接 MySQL
/usr/local/mysql/bin/mysql # 无密码登录 MySQL
7.4 VSCode 打断点
连接 MySQL 成功之后在 MySQL 源码中打个断点先打开 sql/sql_parse.cc 文件 7.5 查看断点效果
先在 CentOS 上的 MySQL 终端上执行一条 SQL。
SELECT host, user FROM mysql.user;
程序在断点处暂停之后就可以查看一系列运行时信息了查看断点所在函数的局部变量。 查看断点处的调用栈。 也可以在调试控制台中用命令行执行更多 gdb 命令。 基于 VSCode 的调试需要在命令之前加上 -exec上图中命令 p thd-m_query_string 前面就加上了 -exec VSCode 有提示。
总结
本文借鉴了操盛春老师的方法《MySQL 调试环境搭建VSCode Docker》并做了相应调整以适应 Windows 用户并简化 Debug 环境的配置流程从而使受众更广。通过将 Docker 改为 VMware我们可以利用 VMware 的快照功能在任何步骤中都可以创建快照如果出现错误并且无法找到原因可以快速回滚到之前的状态这极大地提高了入门效率。
更多技术文章请访问https://opensource.actionsky.com/
关于 SQLE
爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者支持多场景审核支持标准化上线流程原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。
SQLE 获取
类型地址版本库https://github.com/actiontech/sqle文档https://actiontech.github.io/sqle-docs/发布信息https://github.com/actiontech/sqle/releases数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse