先确认,磁盘是否充足
df -h
检查是否因内不足被杀
dmesg -T | grep -i "killed process"
如果看到类似:Out of memory: Kill process 1234 (mysqld) ... 就是内存不足
检查数据库文件是否合理:
sudo vi /etc/my.cnf
以上是小内存合理的配置:
[client] port = 3306 socket = /var/lib/mysql/mysql.sock [mysqld] # 基础设置 port = 3306 socket = /var/lib/mysql/mysql.sock datadir = /home/mysql pid-file = /var/run/mysqld/mysqld.pid log-error = /var/log/mysqld.log # 存储引擎 default_storage_engine = InnoDB # 安全与兼容 skip-external-locking # 内存优化(关键!针对小内存机器) innodb_buffer_pool_size = 128M key_buffer_size = 16M max_connections = 50 max_allowed_packet = 64M # 缓冲区(适度调低) sort_buffer_size = 512K read_buffer_size = 512K read_rnd_buffer_size = 512K join_buffer_size = 512K thread_stack = 256K binlog_cache_size = 32K # 临时表 & 表缓存 tmp_table_size = 32M max_heap_table_size = 32M table_open_cache = 128 # 线程缓存 thread_cache_size = 8 # 禁用 Query Cache(避免问题) query_cache_type = 0 query_cache_size = 0 # 其他 myisam_sort_buffer_size = 8M net_buffer_length = 4K
重启数据库:
sudo systemctl restart mysqld
检查是否启动成:
systemctl status mysqld
journalctl -u mysqld -n 30 --no-pager