在阿里云2核4G的ECS上手动安装MySQL时,虽然配置尚可,但资源有限,需特别注意性能、安全和稳定性。以下是关键注意事项:
一、系统准备与环境优化
-
选择合适的操作系统
- 推荐使用 CentOS 7/8、Ubuntu 20.04 LTS 等长期支持版本。
- 确保系统更新到最新补丁:
sudo yum update # CentOS sudo apt update && sudo apt upgrade # Ubuntu
-
关闭防火墙或开放3306端口
- 若启用防火墙(firewalld/ufw),需放行 MySQL 默认端口:
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload - 或直接通过阿里云安全组规则添加入方向规则:允许 TCP 3306(建议限制源IP,避免公网暴露)。
- 若启用防火墙(firewalld/ufw),需放行 MySQL 默认端口:
-
禁用SELinux(可选)
- SELinux 可能干扰 MySQL 启动:
sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
- SELinux 可能干扰 MySQL 启动:
二、MySQL 安装方式选择
推荐使用官方 Yum/Apt 源安装,避免编译复杂性:
方法1:使用官方 MySQL Yum Repo(CentOS)
# 下载并安装 MySQL Yum 源
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
# 安装 MySQL Server
sudo yum install mysql-community-server
# 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
方法2:Debian/Ubuntu 使用 APT
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
sudo apt update
sudo apt install mysql-server
三、初始化与安全配置
-
获取临时密码并登录
- 安装后首次启动会生成临时密码:
sudo grep 'temporary password' /var/log/mysqld.log - 登录并修改密码:
mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword!';
- 安装后首次启动会生成临时密码:
-
运行安全脚本(强烈推荐)
sudo mysql_secure_installation- 删除匿名用户
- 禁止 root 远程登录(除非必要)
- 删除测试数据库
- 重载权限表
四、性能调优(针对 2核4G)
默认配置对 4G 内存偏高,需调整 my.cnf 配置文件(通常位于 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf):
[mysqld]
# 基础设置
port = 3306
socket = /var/lib/mysql/mysql.sock
datadir = /var/lib/mysql
skip-name-resolve
max_connections = 150 # 根据应用需求调整,避免过高
# 内存相关(关键!)
innodb_buffer_pool_size = 1G # 总内存的 50%~70%,不要超过 2G
innodb_log_file_size = 256M # 提高事务日志大小
key_buffer_size = 64M # MyISAM 表使用,若不用可更小
sort_buffer_size = 2M
join_buffer_size = 2M
tmp_table_size = 64M
max_heap_table_size = 64M
# 日志与安全
log-error = /var/log/mysqld.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
# 绑定地址(重要!)
bind-address = 127.0.0.1 # 仅本地访问,提升安全性
# bind-address = 0.0.0.0 # 如需远程访问,请配合安全组和用户权限控制
✅ 修改
innodb_buffer_pool_size是最重要的优化项。
⚠️ 修改 innodb_log_file_size 后需先停止 MySQL,删除旧日志文件再重启。
五、安全建议
-
禁止 root 远程登录
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1'); FLUSH PRIVILEGES; -
创建专用用户并授权
CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPassword!'; GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'appuser'@'%'; FLUSH PRIVILEGES; -
定期备份
- 使用
mysqldump或物理备份工具(如 Percona XtraBackup)。 - 示例:
mysqldump -u root -p --all-databases > backup.sql
- 使用
-
监控资源使用
- 使用
top,htop,free -h监控 CPU 和内存。 - MySQL 内部命令:
SHOW PROCESSLIST; SHOW STATUS LIKE 'Threads_connected';
- 使用
六、其他注意事项
- 磁盘空间:确保系统盘有足够空间(至少 10GB 可用),建议挂载数据盘存放数据。
- 时区设置:确认系统与 MySQL 时区一致:
SET GLOBAL time_zone = '+8:00'; - 自动启动:确保 MySQL 加入开机自启:
sudo systemctl enable mysqld
总结
| 项目 | 建议 |
|---|---|
| 内存分配 | innodb_buffer_pool_size = 1G |
| 安全性 | 关闭远程 root、使用安全组限制 IP |
| 性能 | 调整连接数、日志、排序缓冲 |
| 备份 | 定期备份,防止数据丢失 |
| 监控 | 观察连接数、慢查询日志 |
通过合理配置,2核4G 的 ECS 完全可以稳定运行轻量级 MySQL 应用(如博客、中小后台系统)。若负载较高,建议后续升级配置或使用阿里云 RDS 托管服务。
云小栈