阿里云轻量云服务器2G内存,如何安装MySQL5.7?

在阿里云轻量应用服务器(2GB 内存)上安装 MySQL 5.7 需要特别注意内存优化。MySQL 默认配置通常占用较多内存,对于 2GB 的机器,如果不调整参数,极易触发 OOM(内存溢出)导致服务崩溃。

以下是基于 Ubuntu/DebianCentOS/RHEL 两种主流系统的详细安装与优化指南。


⚠️ 重要前提:检查系统架构

在安装前,请确认你的服务器是 x86_64 (64位) 还是 arm64 (如部分新款实例)。以下命令默认针对 x86_64,如果是 ARM 架构,包名需相应调整(如 mysql-server 通常会自动适配)。


方案一:Ubuntu / Debian 系统 (推荐)

1. 更新软件源并安装

sudo apt update
sudo apt install mysql-server -y

2. 安全初始化

运行安全脚本,设置 root 密码并移除匿名用户等:

sudo mysql_secure_installation

按提示操作:输入新密码、删除匿名账户、禁止 root 远程登录(除非你需要)、移除测试数据库。

3. 【关键步骤】修改配置文件以适配 2G 内存

MySQL 默认 innodb_buffer_pool_size 可能过大。我们需要手动限制它。

编辑配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 或者在某些版本中是 /etc/my.cnf

找到 [mysqld] 部分,添加或修改以下参数:

[mysqld]
# 基础连接数,根据并发需求调整,2G 内存建议 100-150
max_connections = 150

# InnoDB 缓冲池大小 (核心优化点)
# 物理内存 2GB,建议设置为 512MB 到 768MB (不要超过 50%)
innodb_buffer_pool_size = 512M

# 其他内存相关参数优化
tmp_table_size = 64M
max_heap_table_size = 64M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
join_buffer_size = 2M

# 日志设置
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

保存退出 (Ctrl+O, Enter, Ctrl+X)。

4. 启动并设置开机自启

sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql

5. 验证内存占用

free -h
ps aux | grep mysql

确保 mysqld 进程占用内存稳定在 600MB-900MB 之间,没有持续飙升。


方案二:CentOS / Rocky Linux / AlmaLinux

1. 安装 MySQL YUM 仓库

# 下载 RPM 包
wget https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm
# 如果版本不同,请去官网获取对应 el8/el9 的链接

# 安装仓库
sudo rpm -Uvh mysql80-community-release-el7-9.noarch.rpm

# 安装 MySQL 5.7 (注意指定版本号)
sudo yum install mysql-community-server -y

注:如果上述直接安装的是 MySQL 8.0,可以在 /etc/yum.repos.d/mysql-community.repo 文件中将 enable 改为 0,并将 5.7enable=1,然后重新安装。

2. 修改配置文件

编辑 /etc/my.cnf

sudo vi /etc/my.cnf

[mysqld] 下添加优化参数:

[mysqld]
max_connections = 150
innodb_buffer_pool_size = 512M
tmp_table_size = 64M
max_heap_table_size = 64M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
join_buffer_size = 2M

3. 启动服务

sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld

4. 获取初始 root 密码

CentOS 安装后,root 密码会随机生成在日志中:

sudo grep 'temporary password' /var/log/mysqld.log

使用临时密码登录后,必须立即修改密码。


🛡️ 阿里云轻量服务器特别优化建议

除了修改 MySQL 配置,必须配合阿里云的系统级优化,否则依然可能宕机:

1. 增加 Swap (虚拟内存)

这是防止 OOM 杀进程的最后一道防线。

  • Ubuntu:
    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    # 永久生效
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • CentOS:
    dd if=/dev/zero of=/swapfile bs=1M count=2048
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

2. 关闭不必要的服务

轻量服务器资源宝贵,检查是否有 Docker、Nginx 等其他高负载服务同时运行。如果只跑 MySQL,确保防火墙只开放 3306 端口(阿里云控制台的安全组设置),避免扫描攻击消耗 CPU。

3. 监控内存

安装 htop 实时观察:

sudo apt install htop -y  # Ubuntu
sudo yum install htop -y  # CentOS
htop

观察 Load AverageMemory 使用率。如果 buff/cache 过高但可用内存极低,说明 MySQL 吃得太紧,需进一步调小 innodb_buffer_pool_size

💡 总结

在 2GB 内存的轻量服务器上:

  1. 必须开启 Swap 分区(至少 2GB)。
  2. 必须innodb_buffer_pool_size 限制在 512M 左右。
  3. 严禁开启大量其他高内存服务。
  4. 如果业务流量较大,建议考虑升级至 4GB 内存实例,因为 MySQL 5.7 在低配环境下维护成本较高且性能受限。
未经允许不得转载:CLOUD技术博 » 阿里云轻量云服务器2G内存,如何安装MySQL5.7?