在阿里云 Ubuntu 系统上安装 MySQL 慢,通常不是单一原因造成的,而是网络源配置、软件包依赖解析、以及底层存储 I/O 三者共同作用的结果。
作为经常折腾云服务器的老手,我直接给你拆解几个最核心的“坑”和对应的解决方案,按优先级排序:
1. 最大的嫌疑人:APT 默认源在国外
Ubuntu 默认的 apt 源(archive.ubuntu.com)服务器大多位于海外。虽然阿里云 ECS 的公网带宽很快,但跨国访问 HTTP/HTTPS 协议时的握手延迟、DNS 解析时间以及丢包重传,会显著拖慢 apt update 和 apt install 的速度。
现象:
执行 sudo apt update 时,看到某个仓库一直在 Get:1 http://... 转圈,或者下载速度只有几 KB/s。
解决方案:更换为国内镜像源
这是最有效的一步。将 /etc/apt/sources.list 中的源替换为阿里云镜像或清华镜像。
以 Ubuntu 20.04/22.04 为例,修改前备份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
编辑文件:
sudo nano /etc/apt/sources.list
将内容替换为阿里云源(推荐):
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
(注:请将 focal 替换为你实际的版本代号,如 jammy 对应 22.04, bionic 对应 18.04)
保存后,强制更新缓存:
sudo apt update
这时候你会发现速度飙升到满速。然后再执行 sudo apt install mysql-server,速度会有质的飞跃。
2. 隐形的瓶颈:MySQL 5.7+ 的依赖地狱与 GPG 密钥验证
从 MySQL 5.7 开始,官方不再提供简单的 .deb 包直接安装,而是引入了 APT 仓库。这意味着你需要先添加 MySQL 官方的 GPG 密钥和源列表。
如果网络不通畅,或者官方源响应慢,这一步就会卡住。此外,MySQL 安装过程中会触发大量的依赖检查(比如 libaio, libmecab 等),如果本地缓存过期,APT 需要重新计算依赖树,这在低配实例(如 1核1G)上会消耗大量 CPU 和 I/O。
优化建议:
- 确保 DNS 解析正常:有时候
apt慢是因为 DNS 超时。可以在/etc/resolv.conf中临时添加nameserver 223.5.5.5(阿里 DNS) 或114.114.114.114测试一下。 - 清理缓存:在安装前运行
sudo apt clean和sudo apt autoclean,避免旧包干扰。
3. 底层 I/O 性能:云盘类型的影响
如果你使用的是阿里云的 ESSD PL0 或普通高效云盘,且实例规格较低(如突发性能实例 t5/t6),在 dpkg --configure -a 阶段(即解压和配置数据库文件时),磁盘 IOPS 可能成为瓶颈。
MySQL 初始化时会创建系统表空间、日志文件等,涉及大量随机写入。如果磁盘 I/O 延迟高,整个安装过程就会感觉“假死”。
排查方法:
在安装过程中,打开另一个终端窗口,使用 iostat -x 1 观察 %util 和 await 指标。如果 %util 接近 100% 且 await 很高,说明是磁盘 IO 瓶颈。
解决方案:
- 如果是测试环境,可以考虑使用 SSD 云盘。
- 对于极高并发场景,建议考虑 MariaDB 替代方案,其初始化和轻量级操作在某些场景下略快于 MySQL。
4. 防火墙与安全组规则(间接影响)
虽然这不直接影响 apt install 的速度,但很多人误以为“安装慢”其实是“连接不上”。如果在安装完成后无法通过 localhost 连接,或者远程连接超时,容易混淆概念。
确保你的安全组已放行 3306 端口(仅限内网或特定 IP),并且 Ubuntu 内部的 ufw 或 iptables 没有阻止本地回环接口的通信。
✅ 最佳实践总结(一键修复流程)
如果你想快速解决问题,请按以下步骤操作:
- 换源:立即将 APT 源改为阿里云镜像(见上文)。
- 更新缓存:
sudo apt update && sudo apt upgrade - 安装 MySQL:
# 推荐使用官方推荐的安装方式,更稳定 sudo apt install mysql-server - 启动并设置开机自启:
sudo systemctl start mysql sudo systemctl enable mysql - 安全加固(可选但必要):
sudo mysql_secure_installation
💡 额外提醒:关于 MySQL 8.0 的认证插件
如果你安装的是 MySQL 8.0,注意其默认认证插件是 caching_sha2_password。部分老旧的客户端工具(如 Navicat 旧版、某些 PHP 库)可能不支持,导致你后续开发时出现“连接失败”的错觉,这常被误认为是安装问题。如有需要,可手动切换为 mysql_native_password。
通过以上步骤,90% 以上的“安装慢”问题都能得到解决。如果依然极慢,请检查是否被阿里云的安全策略限制了 outbound 流量,或联系阿里云技术支持查看实例状态。
云技术博客