从零开始:在 WSL 上编译安装 MySQL

前言

社区里有个话题很有意思,讨论的是像 MySQL 这样的有状态应用是否应该使用 Docker 来部署。一方认为 Docker 部署方便,运行环境隔离更安全,而且数据也可以挂载到外部。另一方则认为 Docker 在 IO 性能上存在瓶颈,Docker 本质上是为无状态应用设计的。两方的观点都有道理,我认为需要具体情况具体分析。如果是本地开发和学习,用 Docker 部署是可以的,但在生产环境中,还是建议部署在裸金属服务器上。因此,我打算在 WSL 上编译安装 MySQL,看看实际操作有多不便,性能提升又能有多少。

环境

  • 操作系统:Windows 11 23H2
  • CPU:i5-1135G7 2.40GHz
  • 内存:DDR4 3200MHz 32GB
  • WSL:Ubuntu 24.04

准备工作

参考 MySQL 官方文档 从零开始:Windows 11 安装使用 WSL

先决条件

安装依赖

1
apt install build-essential cmake bison libncurses-dev axel -y

准备好 Boost C++ 库

1
2
3
axel -n 64 https://archives.boost.io/release/1.85.0/source/boost_1_85_0.tar.gz
echo "be0d91732d5b0cc6fbb275c7939974457e79b54d6f07ce2e3dfdd68bef883b0  boost_1_85_0.tar.gz" > sha256.txt # sha256 值来自官网
sha256sum -c sha256.txt # boost_1_85_0.tar.gz: OK

下载源码

1
2
3
cd /usr/local/src && axel -n 64 https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.0.tar.gz
echo "c3b1ccd1ba5b09f118ce6e27f0f0df98  mysql-8.4.0.tar.gz" > md5.txt # md5 值来自官网
md5sum -c md5.txt # mysql-8.4.0.tar.gz: OK

编译和安装

解压并打开文件夹:tar -xzf mysql-8.4.0.tar.gz && cd mysql-8.4.0

MySQL:Build outside of the source tree to keep the tree clean. 为了保持源码树的整洁,请在源码树之外进行构建。

创建一个空的文件夹并切换:mkdir bld && cd bld 配置构建目录:cmake .. 开始编译和安装:make -j $(nproc) && make install -j $(nproc)