Ubuntu22.04上MariaDB随机停止运行问题排查求助
MariaDB 10.6.7 随机停止服务排查指南
问题概述
虚拟服务器(Ubuntu 22.04)上的个人站点迁移后,使用MariaDB 10.6.7替代MySQL,服务可正常运行数小时后随机停止,重启后恢复,但故障会重复出现。当前数据库版本:
mysql Ver 15.1 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
(原问题附带状态截图显示MariaDB服务已停止)
排查步骤
1. 优先查看错误日志
- 系统服务日志:执行
journalctl -u mariadb.service --since "3 hours ago",过滤服务停止前后的日志,重点关注OOM(内存不足)、权限报错、磁盘IO异常等关键词。 - MariaDB自身错误日志:默认路径为
/var/log/mariadb/mariadb.log或/var/log/mysql/error.log,用tail -n 150 /var/log/mariadb/mariadb.log查看最近记录,尤其注意崩溃前的堆栈信息、连接数超限、表损坏提示。
2. 排查资源瓶颈
- 内存问题:
- 用
free -h查看系统剩余内存,htop监控MariaDB进程的内存占用趋势,确认是否内存持续攀升导致系统OOM Killer终止进程。 - 执行
dmesg | grep -i "oom-killer",若输出中包含mariadb,则说明是内存不足触发的服务终止。
- 用
- 文件描述符限制:
- 查看MariaDB当前配置:
mysql -e "SHOW VARIABLES LIKE 'open_files_limit';" - 查看systemd对服务的限制:
systemctl show mariadb.service | grep LimitNOFILE - 若数值过低,可在
/etc/systemd/system/mariadb.service.d/limits.conf中添加配置:
之后执行[Service] LimitNOFILE=65535systemctl daemon-reload && systemctl restart mariadb生效。
- 查看MariaDB当前配置:
3. 检查磁盘状态
- 用
df -h确认数据目录(默认/var/lib/mysql)所在分区未被占满。 - 执行
dmesg | grep -i "io error"排查磁盘读写异常,或用smartctl -a /dev/sda(替换为你的磁盘设备)检查硬件健康状态。
4. 优化配置兼容性
- 打开
/etc/mariadb/mariadb.conf.d/50-server.cnf,检查以下关键参数:innodb_buffer_pool_size:建议设置为物理内存的50%-70%(共享服务器需调低),避免内存过载。max_connections:根据服务器配置合理调整,过高会耗尽资源。
- 移除从MySQL迁移过来的不兼容配置项,比如部分MySQL独有的参数在MariaDB中可能引发异常。
5. 验证数据完整性与查询合理性
- 检查数据库表完整性:
mariadb-check -u root -p --all-databases,修复损坏的表。 - 开启慢查询日志定位耗时SQL:在
50-server.cnf中添加:
重启服务后分析慢查询,排查是否存在导致资源耗尽的低效SQL。slow_query_log = 1 slow_query_log_file = /var/log/mariadb/slow_query.log long_query_time = 2
内容的提问来源于stack exchange,提问作者user1607016
相关产品推荐
相关产品推荐

