暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

在 Oracle Linux 9.4 上编译 MySQL 9.1.0 源码

原创 严少安 2024-10-31
857

10月15日,MySQL 9.1.0 创新版本发布,更新内容参考:MySQL 9.1.0创新版发布!MySQL 8.0.40,8.4.3小版本迭代

本文将详细介绍如何在 Oracle Linux 9.4 操作系统(以下简称 OL)编译安装 MySQL 9.1.0 数据库。

Oracle Linux

实验环境已安装 OL,这里先更新内核到最新版本。

升级前:

[shawnyan@ol9 ~]$ hostname
ol9.shawnyan.cn
[shawnyan@ol9 ~]$ cat /etc/oracle-release
Oracle Linux Server release 9.4
[shawnyan@ol9 ~]$ uname -r
5.15.0-205.149.5.1.el9uek.x86_64
[shawnyan@ol9 ~]$ uname -v
#2 SMP Fri Apr 5 11:29:36 PDT 2024

升级后:

[shawnyan@ol9 ~]$ uname -r
5.15.0-301.163.5.2.el9uek.x86_64
[shawnyan@ol9 ~]$ uname -v
#2 SMP Wed Oct 16 18:55:42 PDT 2024

安装依赖

MySQL 源码编译需要安装一些基础依赖包:

dnf install -y cmake \
  gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ gcc-toolset-13-annobin-annocheck gcc-toolset-13-annobin-plugin-gcc \
  libcurl-devel zlib-devel lz4-devel protobuf ncurses-devel libaio-devel \
  libtirpc-devel rpcgen

参考 Release Notes 内容,确认 cmake 版本。

将 CMAKE_MINIMUM_REQUIRED 与正确的必需 CMake 版本 ( 3.14.6) 以及 MySQL 使用的第三方库的 CMake 策略保持一致。(Bug #36978193)

[shawnyan@ol9 ~]$ cmake --version
cmake version 3.26.5

编译源码

MySQL 9 的源码编译过程与之前版本类似,步骤比较简单。

  1. 下载通用源码包。
https://dev.mysql.com/get/Downloads/MySQL-9.1/mysql-9.1.0.tar.gz
  1. 校验 MD5 指纹。
[shawnyan@ol9 ~]$ md5sum mysql-9.1.0.tar.gz
eb2c6bbd20569d2690bc7e34312f5210  mysql-9.1.0.tar.gz
  1. 解压缩,并进行编译、安装。
[shawnyan@ol9 ~]$ tar zxf mysql-9.1.0.tar.gz
[shawnyan@ol9 ~]$ cd mysql-9.1.0/
[shawnyan@ol9 mysql-9.1.0]$ mkdir build
[shawnyan@ol9 mysql-9.1.0]$ cd build/
[shawnyan@ol9 build]$ cmake .. -DEXTRA_VERSION="-ShawnYan"
[shawnyan@ol9 build]$ make

到此,MySQL 源码已编译完成,下面进行安装并运行 MySQL 服务器。

安装、运行 MySQL

  1. 安装 MySQL 到指定目录。
[shawnyan@ol9 build]$ sudo make install DESTDIR="/opt/mysql"
  1. 创建 mysql 用户,并赋权。
groupadd mysql
useradd -g mysql mysql
chmod 750 /opt/mysql
chown -R mysql:mysql /opt/mysql
  1. 初始化数据文件,并启动 MySQL 服务器。
mysqld --initialize --user=mysql
mysqld --user=mysql
  1. 连接到 MySQL 数据库,并查看服务器状态。
[mysql@ol9 mysql]$ ./bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.1.0-ShawnYan Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \s
--------------
./bin/mysql  Ver 9.1.0-ShawnYan for Linux on x86_64 (Source distribution)

Connection id:          9
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         9.1.0-ShawnYan Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:            /tmp/mysql.sock
Binary data as:         Hexadecimal
Uptime:                 2 min 56 sec

Threads: 2  Questions: 13  Slow queries: 0  Opens: 147  Flush tables: 3  Open tables: 63  Queries per second avg: 0.073
--------------

mysql> 

附:使用源码包构建 RPM 包

除了普通源码编译之外,MySQL 官网还提供了 RPM 格式的源码包,我们可以基于此构建 MySQL Server 社区版。

  1. 下载 RPM 源码包。
https://dev.mysql.com/get/Downloads/MySQL-9.1/mysql-community-9.1.0-1.el9.src.rpm
  1. 补充安装一些依赖。
dnf install -y cyrus-sasl-devel \
gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc gcc-toolset-12-binutils \
gcc-toolset-12-dwz gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ \
gcc-toolset-13-dwz \
krb5-devel numactl-devel openldap-devel \
perl 'perl(English)' 'perl(Env)' 'perl(JSON)' 'perl(Memoize)' 'perl(Sys::Hostname)' 'perl(Time::HiRes)' 'perl(Time::localtime)'
  1. 从 RPM 源码包构建 MySQL Server。
rpmbuild --rebuild mysql-community-debugsource-9.1.0-1.el9.x86_64.rpm

经过漫长的等待后,会生成几个 RPM 包,可以直接用于安装部署。

find ~/rpmbuild/RPMS -name "*.rpm"

后记

可以在编译源码时加入一些定制化选项,如,在 MySQL 9.1.0 中添加了 DISABLE_PERFSCHEMA 构建选项。启用后,这会将所有 DISABLE_PSI_* 选项设置为 ON。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论