云服务器部署MySQL必备配置检查清单

第一步:先看云服务器硬件够不够
MySQL的性能直接受限于云服务器的硬件配置。CPU方面,高并发场景(比如电商秒杀)建议选4核及以上,高频CPU能更快处理同时涌入的查询请求;内存是关键——MySQL会把常用数据和索引缓存在内存里,内存不足就会频繁读写磁盘(行话叫"磁盘I/O"),速度至少慢10倍。一般建议分配数据库大小20%-50%的内存,比如数据库存了20GB数据,云服务器至少留4GB(20%)做缓存。
磁盘一定要用SSD(固态硬盘),它的读写速度是传统机械盘的几十倍。可以用iostat(系统I/O统计工具)测试,正常情况下磁盘响应时间(await)应低于20ms,超过50ms就该考虑升级云服务器的磁盘配置了。
第二步:操作系统参数调对了吗?
操作系统的几个关键参数会悄悄影响MySQL状态。比如vm.swappiness(内核参数,控制内存交换倾向),默认是60,意味着系统一缺内存就会把数据换到磁盘。但MySQL最怕这个,建议改成10,让系统优先杀低效进程也别换MySQL的数据。修改方法:在/etc/sysctl.conf里加"vm.swappiness=10",然后执行sysctl -p生效。
另一个是文件描述符限制。MySQL每连接一个客户端就会开一个文件描述符,高并发时可能打开成百上千个。默认系统只允许1024个,容易报"Too many open files"错误。解决办法是改/etc/security/limits.conf,加上:
* soft nofile 65535
* hard nofile 65535
这样普通用户最多能开65535个文件描述符,足够应对大多数场景。
网络配置:别让带宽拖后腿
云服务器的网络带宽要和业务匹配。比如每天百万次查询的系统,选100Mbps带宽更稳妥;如果只是内部小系统,10Mbps也够。防火墙一定要配——只放通业务需要的IP,比如前端服务器IP,其他IP直接拒绝。用firewalld的话,命令是:
firewall - cmd --add - rich - rule="rule family='ipv4' source address='192.168.1.10' port protocol='tcp' port='3306' accept"
第三步:MySQL配置文件逐项过
打开MySQL配置文件(通常是/etc/my.cnf),这几个参数必须检查:
- 字符集:统一设成utf8mb4(能存emoji的UTF-8扩展),在[mysqld]下加"character_set_server=utf8mb4",避免乱码。
- innodb_buffer_pool_size:前面说的内存缓存,建议占云服务器总内存的50%-70%(比如32GB内存的云服务器,设20GB)。
- slow_query_log:开启慢查询日志(设为ON),long_query_time=2(记录执行超过2秒的SQL),后期可以用pt - query - digest分析优化。
第四步:安全配置不能漏
root账户一定要改强密码(字母+数字+符号,至少12位),别用"123456"这种。日常操作建议新建普通用户,比如给前端应用分配一个只有查询权限的用户:
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT ON mydb.* TO 'app_user'@'192.168.1.%';
如果数据敏感(比如用户隐私),建议启用SSL加密。先在云服务器生成证书,然后在my.cnf里加:
ssl - ca=/path/to/ca.pem
ssl - cert=/path/to/server - cert.pem
ssl - key=/path/to/server - key.pem
这样客户端连接时必须用SSL,数据在网络传输中不会被截获。
按这四步检查配置,MySQL在云服务器上基本能稳定运行。新手常犯的错是只装软件不调参数,结果跑几天就卡;记住硬件、系统、MySQL配置、安全这四个环节,就能避开大部分坑,让数据库又快又安全。
上一篇: 容器部署优化:海外VPS资源分配5大技巧
下一篇: 香港服务器MySQL部署性能优化实战指南