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 的源码编译过程与之前版本类似,步骤比较简单。
- 下载通用源码包。
https://dev.mysql.com/get/Downloads/MySQL-9.1/mysql-9.1.0.tar.gz
- 校验 MD5 指纹。
[shawnyan@ol9 ~]$ md5sum mysql-9.1.0.tar.gz
eb2c6bbd20569d2690bc7e34312f5210 mysql-9.1.0.tar.gz
- 解压缩,并进行编译、安装。
[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
- 安装 MySQL 到指定目录。
[shawnyan@ol9 build]$ sudo make install DESTDIR="/opt/mysql"
- 创建
mysql用户,并赋权。
groupadd mysql
useradd -g mysql mysql
chmod 750 /opt/mysql
chown -R mysql:mysql /opt/mysql
- 初始化数据文件,并启动 MySQL 服务器。
mysqld --initialize --user=mysql
mysqld --user=mysql
- 连接到 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 社区版。
- 下载 RPM 源码包。
https://dev.mysql.com/get/Downloads/MySQL-9.1/mysql-community-9.1.0-1.el9.src.rpm
- 补充安装一些依赖。
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)'
- 从 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




