速卖通素材
奋斗

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

服务器

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

以下是针对该环境的推荐安装方案及详细步骤:

方案选择建议

  1. 使用 Docker 安装(推荐)
    • 优点:隔离性好,易于管理版本,卸载方便。
    • 缺点:需要额外安装 Docker 环境。
  2. 直接使用系统包管理器安装(apt/yum)
    • 优点:原生运行,无需额外依赖。
    • 缺点:对内存配置要求更严格,需手动调整 my.cnf

考虑到轻量服务器的资源限制,直接安装并深度优化配置文件是最节省资源且性能稳定的方式。以下以 Ubuntu/DebianCentOS 为例进行说明。


第一步:系统基础检查与准备

无论哪种系统,首先确保系统时间同步,并清理不必要的后台服务以释放内存。

# 更新软件源
sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian
# 或
sudo yum update -y                      # CentOS

# 关闭 Swap(可选,但强烈建议在内存紧张时先关闭,防止频繁交换导致卡顿)
# 注意:如果磁盘空间非常小,请谨慎操作。若开启 Swap,请确保大小不超过 1GB
free -h

第二步:安装 MySQL 5.7

场景 A:Ubuntu / Debian 系统

由于官方源可能已移除 5.7,建议使用 APT 添加官方 YUM 源或直接从阿里云镜像站获取。

  1. 安装 GPG 密钥和仓库

    wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
    sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
    # 在弹出的交互界面中,选择 MySQL 5.7 (不要选 8.0)
    sudo apt update
  2. 安装 MySQL Server

    sudo apt install mysql-server
  3. 启动并设置开机自启

    sudo systemctl start mysql
    sudo systemctl enable mysql

场景 B:CentOS / Rocky Linux 系统

  1. 下载 RPM 包

    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
  2. 安装 MySQL Server

    sudo yum install mysql-community-server
  3. 启动服务

    sudo systemctl start mysqld
    sudo systemctl enable mysqld

第三步:关键内存优化(至关重要)

2GB 内存运行 MySQL 必须修改配置文件,否则极易崩溃。

  1. 找到配置文件

    • Ubuntu: /etc/mysql/mysql.conf.d/mysqld.cnf
    • CentOS: /etc/my.cnf
  2. 编辑文件

    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf  # Ubuntu
    # 或
    sudo vim /etc/my.cnf                          # CentOS
  3. 修改 [mysqld] 部分
    找到 innodb_buffer_pool_size 等参数。对于 2GB 内存,建议分配 640MB ~ 800MB 给缓冲池,预留约 500MB 给操作系统和其他进程。

    [mysqld]
    # 核心优化项
    innodb_buffer_pool_size = 800M      # 占物理内存的 40%-50%
    max_connections = 50                # 连接数不宜过大
    key_buffer_size = 32M               # 索引缓冲区
    query_cache_size = 0                # MySQL 5.7 查询缓存建议关闭,减少锁竞争
    tmp_table_size = 16M
    max_heap_table_size = 16M
    
    # 日志优化
    log_error = /var/log/mysql/error.log
    slow_query_log = 1
    long_query_time = 2
  4. 重启服务使配置生效

    sudo systemctl restart mysql        # Ubuntu
    # 或
    sudo systemctl restart mysqld       # CentOS

第四步:安全初始化与远程访问

  1. 获取初始密码
    安装完成后,root 用户的临时密码会记录在错误日志中。

    # Ubuntu
    sudo grep 'temporary password' /var/log/mysql/error.log
    # CentOS
    sudo grep 'temporary password' /var/log/mysqld.log
  2. 登录并修改密码

    mysql -u root -p
    # 输入上面的临时密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新强密码';
    
    # 创建普通用户(推荐不要直接用 root 做远程开发)
    CREATE USER 'app_user'@'%' IDENTIFIED BY 'AppUserPassword123!';
    GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%';
    FLUSH PRIVILEGES;
    EXIT;
  3. 配置允许远程连接
    默认 MySQL 只允许本地连接。

    • 如果是宝塔面板Docker环境,通常有图形化界面设置。
    • 如果是命令行,需确保阿里云控制台的安全组规则放行了 3306 端口。
    • 同时检查 MySQL 内部绑定地址(通常在配置文件中 bind-address = 127.0.0.1 改为 0.0.0.0,或者通过授权用户 % 实现)。

第五步:验证与监控

  1. 检查状态

    sudo systemctl status mysql
    free -h

    观察内存使用情况,确保没有频繁出现 OOM Killer 杀进程的情况。

  2. 测试连接
    从本地电脑使用 Navicat、DBeaver 等工具,连接 IP 地址和刚才设置的账号密码进行测试。

💡 特别提示

  • 关于 Swap:如果内存实在不够用(例如业务量突然增大),可以创建一个 1GB 的 Swap 分区作为缓冲,但这会降低性能。
    dd if=/dev/zero of=/swapfile bs=1G count=1
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    echo "/swapfile none swap sw 0 0" >> /etc/fstab
  • 自动备份:轻量服务器磁盘有限,建议配置简单的定时脚本将数据库导出到本地 OSS 或定期清理旧备份。
  • 版本选择:如果业务允许,考虑升级到 MariaDB 10.3+MySQL 8.0(需配合更多内存优化),但在 2GB 机器上,MySQL 5.7 依然是最稳妥的选择。

按照以上步骤操作,即可在阿里云 2G 内存服务器上稳定运行 MySQL 5.7。

未经允许不得转载:轻量云Cloud » 阿里云轻量云服务器2G内存,如何安装MySQL5.7?