必须安装对应发行版的libaio运行时库并手动创建libaio.so.1软链接,再执行ldconfig刷新缓存;因ubuntu 24.04+等系统中libaio1t64仅提供libaio.so.1t64.0.2,而mysql硬编码依赖libaio.so.1,无自动兼容链接,故仅装包不建链仍会报错。

必须安装对应发行版的 libaio 运行时库,并手动创建指向真实文件的 libaio.so.1 软链接,再刷新动态链接缓存——只装包不建链,MySQL 仍会报错。
为什么装了 libaio1t64 还提示 libaio.so.1 找不到
Ubuntu 24.04+、Kylin V10 等系统中,libaio1t64 包实际提供的是 libaio.so.1t64.0.2,而 MySQL 二进制文件硬编码查找 libaio.so.1(注意结尾必须是 .so.1,不是 .so、.so.2 或 .so.1t64.0.2)。系统不会自动创建兼容链接,ldconfig -p 可能显示其他变体,但只要没 libaio.so.1 这一行,mysqld 就起不来。
- 验证真实文件是否存在:
ls /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 - 检查当前是否已有
.so.1链接:ls -l /usr/lib/x86_64-linux-gnu/libaio.so.1 - 别依赖
dpkg -l | grep libaio成功就认为搞定——它只说明包装了,不说明链接可用
如何安全创建 libaio.so.1 软链接
直接在系统库路径下建软链接是最干净的做法,比改 LD_LIBRARY_PATH 或复制文件更可靠,也不影响其他程序。
- 进入库目录:
cd /usr/lib/x86_64-linux-gnu - 确认目标文件存在后执行:
sudo ln -sf libaio.so.1t64.0.2 libaio.so.1 - 刷新缓存:
sudo ldconfig - 验证是否生效:
ldconfig -p | grep 'libaio\.so\.1$'(结尾必须严格匹配.so.1)
验证 mysqld 是否真能加载 libaio.so.1
别只信 ldconfig -p 输出或安装日志里的 “Complete!”。最终要看 mysqld 进程能否解析到该库。
- 先确认你用的
mysqld路径,比如:which mysqld或/usr/local/mysql/bin/mysqld - 执行:
ldd /usr/local/mysql/bin/mysqld | grep libaio - 正确输出应为:
libaio.so.1 => /usr/lib/x86_64-linux-gnu/libaio.so.1 (0x...) - 若显示
not found,常见原因:软链接路径不对、ldconfig没刷成功、或mysqld在非标准路径且未被ldconfig扫描到
别漏掉 numactl 和其他隐性依赖
MySQL 8.0+ 即使单 NUMA 节点也会尝试调用 numactl,缺了可能静默卡住——不报错、不启动、systemd 显示 “activating” 卡死。
- Ubuntu/Debian:
sudo apt install -y numactl libnuma1 - CentOS/RHEL:
sudo dnf install -y numactl-libs - 若还报
libncurses.so.5或libtinfo.so.5缺失,而系统只有.so.6,需建对应软链:sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5(同理处理libtinfo) - 离线环境要特别注意架构匹配:别误装
i686版本的libaiorpm 包,rpm -ivh不报错但不生效
最容易被忽略的是验证环节:软链接建对了、ldconfig 刷了、ldconfig -p 看到了,但没跑 ldd 检查具体 mysqld 二进制,问题依然存在。











