编译安装-MySQL-8.0.32

环境说明

我的开发环境是 Centos-9.0 版本的,最近 MySQL-8.0.32 发布了,打算用它来调试。详细的信息如下,由于平时还要做一些调试,所以我这里直接编译安装一个 DEBUG 的版本。这个版本包含更多的日志。

system: CentOS Stream release 9
g++: 11.3.1 20220421 (Red Hat 11.3.1-2
cmake: cmake version 3.23.1

mysql-8.0.32-debug


第一步下载安装包

cd /tmp/
wget https://codeload.github.com/mysql/mysql-server/zip/refs/tags/mysql-8.0.32
unzip mysql-server-mysql-8.0.32.zip
mv mysql-server-mysql-8.0.32 /data/repos/


第二步安装依赖

我验证了一下,我的环境下要安装 libtirpc-devel ,rpcgen 这两个依赖。项目 libtirpc-devel 由于 CRB 这个 yum 仓库总是启用失败导致安装失败,所以我直接从网上下载了对应的版本来安装。

wget http://mirror.stream.centos.org/9-stream/CRB/x86_64/os/Packages/libtirpc-devel-1.3.2-1.el9.x86_64.rpm
yum install libtirpc-devel-1.3.2-1.el9.x86_64.rpm

yum install rpcgen

第三步编译安装

用 cmake 编译

cd /data/repos/mysql-server-mysql-8.0.32
mkdir build
cd build
cmake .. -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/data/repos/mysql-server-mysql-8.0.32/boost \ 
  -DWITH_ARCHIVE_STORAGE_ENGINE=0 -DWITH_EXAMPLE_STORAGE_ENGINE=0 -DWITH_FEDERATED_STORAGE_ENGINE=0 \
  -DWITH_INNODB_MEMCACHED=OFF -DWITH_ROUTER=OFF -DWITH_UNIT_TESTS=OFF -DWITH_NDB=OFF \
  -DDISABLE_PSI_COND=OFF -DDISABLE_PSI_DATA_LOCK=OFF -DDISABLE_PSI_ERROR=OFF -DDISABLE_PSI_FILE=OFF \
  -DDISABLE_PSI_IDLE=OFF -DDISABLE_PSI_MEMORY=OFF -DDISABLE_PSI_METADATA=OFF -DDISABLE_PSI_MUTEX=OFF \
  -DDISABLE_PSI_PS=OFF -DDISABLE_PSI_RWLOCK=OFF -DDISABLE_PSI_SOCKET=OFF -DDISABLE_PSI_SP=OFF \
  -DDISABLE_PSI_STAGE=OFF -DDISABLE_PSI_STATEMENT=OFF -DDISABLE_PSI_STATEMENT_DIGEST=OFF \
  -DDISABLE_PSI_TABLE=OFF -DDISABLE_PSI_THREAD=OFF -DDISABLE_PSI_TRANSACTION=OFF \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.32 
cmake --build .
cmake --install .

检查 DEBUG 版本是否已经编译好了。

/usr/local/mysql-8.0.32/bin/mysqld --version
/usr/local/mysql-8.0.32/bin/mysqld  Ver 8.0.32-debug for Linux on x86_64 (Source distribution)

看到有 debug 的字样了说明成功了。


配置与启动实例

创建用户、目录、初始化数据。

useradd mysql
cd /usr/local/mysql-8.0.32/
mkdir data

mysql 配置文件的内容如下

[mysqld]
basedir=/usr/local/mysql-8.0.32/
datadir=/usr/local/mysql-8.0.32/data
port=2233
user=mysql
debug=d,info,error,query,general,where:O,/tmp/mysqld.trace

启动

/usr/local/mysql-8.0.32/bin/mysqld --defaults-file=/usr/local/mysql-8.0.32/my.cnf &

检查

DEBUG 版本的日志非常的详细,8.0.32 版本一个简单的启动就有 1.2MB 的日志文件了。

ll /tmp/mysqld.trace 
-rw-r----- 1 root root 1241599 Jan 19 19:11 /tmp/mysqld.trace