怎么在内网ARM架构服务器上编译部署MySQL8.0

陌静小哥_6217

陌静小哥_6217

2026-09-17

986人浏览

原创

必须在目标arm服务器上源码编译mysql 8.0,需先确认aarch64架构和glibc版本,显式指定cmake参数(如-dcmake_system_processor=aarch64、-march=armv8-a+crypto),禁用x86特性,手动安装高版本cmake/gcc/boost/ssl,并严格隔离初始化路径与权限。

怎么在内网arm架构服务器上编译部署mysql8.0

内网ARM服务器上编译部署MySQL 8.0,不是“能不能”,而是“必须绕开rpm、必须自己控依赖、必须显式指定ARM优化参数”。官方二进制包在国产麒麟等内网系统上常因glibc或init兼容性失败,而源码编译虽耗时但可控性强——尤其当你无法联网yum、不能用Docker、又需要多实例或定制安全策略时。

确认aarch64架构和glibc版本是否匹配编译目标

编译前不验证环境,90%会在cmake阶段报错或生成不可执行的二进制。重点查两件事:

  • uname -m必须输出aarch64,否则所有ARMv8指令集优化(如-march=armv8-a+crypto)都无效
  • ldd --version决定你该选哪个Boost和OpenSSL版本:麒麟V10 SP1常见glibc 2.17,龙蜥8/统信UOS新版本多为glibc 2.28;MySQL 8.0.33+要求glibc ≥ 2.17,但若你用glibc 2.28编译却部署到2.17系统,运行时会直接报cannot execute binary file: Exec format error
  • 别信/etc/os-release里的PRETTY_NAME="Kylin Linux Advanced Server V10"——它不反映glibc真实版本,只查ldd --version

安装编译依赖时避开ARM平台特有坑

ARM服务器(如鲲鹏920、飞腾D2000)缺的不是基础工具,而是带ARM适配的高版本构建链。常见翻车点:

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 默认yum install cmake装的是3.10以下版本,MySQL 8.0.26+强制要求CMake ≥ 3.14.5;必须手动编译安装cmake-3.19.7或更高,并确保cmake --version能正确输出
  • gcc版本必须≥ 8.3(MySQL 8.0.33起),国产系统自带GCC常为7.3;需启用devtoolset-9或直接编译GCC 11.2,且要改/usr/bin/gcc软链接,否则cmake ..仍调用旧版
  • boost不能用系统包管理器装(麒麟V10的boost-program-options版本太低),必须下载对应MySQL版本的mysql-boost-8.0.xx.tar.gz,解压后用-DWITH_BOOST=/path/to/boost指向它
  • openssl-devel必须≥ 1.1.1,否则mysqld启动时SSL握手失败;若系统源无满足版本,得从源码编译OpenSSL 1.1.1w并指定-DWITH_SSL=/usr/local/ssl

cmake配置必须加ARM专属参数

不加这些,编译出来的mysqld可能跑不满CPU性能,甚至在某些ARM芯片上触发非法指令异常:

  • 强制启用ARMv8-A加密扩展:-DENABLED_LOCAL_INFILE=ON -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=OFF
  • 指定CPU微架构优化(对鲲鹏920有效):-DCMAKE_C_FLAGS="-march=armv8-a+crypto -mtune=thunderx2t99" -DCMAKE_CXX_FLAGS="-march=armv8-a+crypto -mtune=thunderx2t99"
  • 禁用x86专用特性(避免链接时报错):-DENABLE_DOWNLOADS=OFF -DWITH_EDITLINE=system
  • 关键路径必须显式声明:-DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci
  • 最后检查:运行cmake ..后,终端应输出-- MySQL 8.0.xx且无WARNING:关于SSL/Boost/CRYPTO的缺失提示

初始化和启动时权限与路径必须严格隔离

内网ARM服务器常以最小化安装,SELinux可能关闭但systemd单元或文件权限仍会卡住启动:

  • mysqld --initialize --user=mysql必须在/usr/local/mysql目录下执行,且data目录属主必须是mysql:mysql,不能是root;否则日志里只有mysqld: Can't create/write to file '/usr/local/mysql/data/aria_log_control'
  • 不要依赖systemctl start mysqld——麒麟V10默认用sysvinit,需手写/etc/init.d/mysqld脚本,或创建/etc/systemd/system/mysqld.service并确保Type=simple + ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
  • /etc/my.cnfsocket路径建议设为/tmp/mysql.sock而非/var/run/mysqld/mysqld.sock,避免run目录权限继承问题
  • 首次启动后立即执行mysql -u root -p --socket=/tmp/mysql.sock,用临时密码登录,立刻执行ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourPass123!';,否则后续连接会因密码策略拒绝空密码

最易被忽略的是:编译生成的mysqld二进制文件本身带有glibc符号版本绑定,一旦拷贝到另一台glibc小版本不同的ARM机器上,连ldd ./bin/mysqld | grep libc都会显示not found——这不是配置问题,是ABI硬伤。务必在目标机器上编译,或至少用相同glibc版本的交叉编译环境。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

mysql

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

397

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

820

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2312

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

796

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

669

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

354

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2076

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

3792

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

627

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 166人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 262人学习