对于1核1G的低配主机搭建MySQL,新手需要注意以下关键点:
一、安装前的准备
-
选择轻量级Linux发行版
- Alpine Linux、Debian minimal或Ubuntu Server
- 避免图形界面,仅安装必要组件
-
MySQL版本选择
- MySQL 5.7(内存占用相对较少)
- 或考虑更轻量的替代品:
- MariaDB(兼容MySQL,资源占用更优)
- Percona Server(性能优化版)
二、MySQL配置优化(关键!)
my.cnf 核心配置建议:
[mysqld]
# 基础设置
skip-name-resolve # 跳过DNS解析
performance_schema=OFF # 关闭性能模式(节省内存)
table_open_cache=64 # 减少表缓存
# 内存控制
key_buffer_size=16M
query_cache_size=0 # 查询缓存已废弃,设为0
tmp_table_size=16M
max_heap_table_size=16M
sort_buffer_size=256K
read_buffer_size=128K
read_rnd_buffer_size=256K
join_buffer_size=128K
# 连接控制
max_connections=30 # 严格控制连接数
thread_cache_size=4
wait_timeout=300
interactive_timeout=300
# InnoDB优化(如果使用)
innodb_buffer_pool_size=128M # 最大不要超过256M
innodb_log_file_size=48M
innodb_flush_log_at_trx_commit=2 # 平衡性能与安全
innodb_file_per_table=ON
三、系统层面优化
-
关闭不需要的服务
systemctl stop postfix chronyd systemctl disable postfix chronyd -
配置SWAP交换分区
# 添加2GB SWAP fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab -
调整内核参数
# /etc/sysctl.conf 添加 vm.swappiness=10 vm.vfs_cache_pressure=50
四、安全与维护
-
基础安全设置
-- 运行mysql_secure_installation -- 删除匿名用户、测试数据库 -- 修改root密码 -
创建专用用户
CREATE USER 'appuser'@'localhost' IDENTIFIED BY '强密码'; GRANT SELECT,INSERT,UPDATE,DELETE ON dbname.* TO 'appuser'@'localhost'; -
启用慢查询日志(调试后关闭)
slow_query_log=ON long_query_time=2 slow_query_log_file=/var/log/mysql/slow.log
五、监控与维护
-
安装轻量监控
# 使用htop或glances apt install htop -
定期维护命令
OPTIMIZE TABLE table_name; -- 定期优化表 ANALYZE TABLE table_name; -- 更新统计信息 -
备份策略
# 使用mysqldump压缩备份 mysqldump -u root -p dbname | gzip > backup_$(date +%Y%m%d).sql.gz
六、替代方案考虑
如果性能仍不足,考虑:
- SQLite:单文件数据库,零配置
- PostgreSQL:资源管理更精细
- 云数据库:阿里云/腾讯云有低配实例
七、紧急情况处理
-
内存不足时
# 查看内存占用 free -h # 查看MySQL内存使用 ps aux | grep mysql -
连接数爆满
SHOW PROCESSLIST; KILL [进程ID];
总结建议
- 先在小数据集测试,确认性能可接受
- 启用binlog但要限制大小和保留时间
- 避免使用存储过程、触发器、视图等高级功能
- 定期清理旧数据,保持表精简
- 考虑读写分离或缓存层(如Redis)分担压力
这样的配置下,1核1G主机可支撑小流量网站(日PV<1万)或内部管理系统。如果数据量或并发增长,需及时升级配置。
CLOUD技术笔记