You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

主服务器MariaDB意外停止原因排查及最优恢复方案咨询

定位MariaDB停止操作发起者
  • 深挖systemd日志细节
    执行journalctl -u mariadb.service -o verbose查看带元数据的详细日志,重点关注_SYSTEMD_USER_UNIT、_UID、_PID字段,这些信息能直接定位发起停止操作的进程或用户。如果需要精准时间范围,可结合时间参数:journalctl --since "YYYY-MM-DD HH:MM" --until "YYYY-MM-DD HH:MM" -u mariadb.service -o json-pretty,JSON格式便于解析关联的进程上下文。
  • 排查systemd与集群触发机制
    • 检查定时任务:查看用户级定时任务crontab -l,系统级定时任务目录ls /etc/cron*,以及systemd定时器systemctl list-timers,确认是否有夜间执行的任务涉及MariaDB启停。
    • 检查heartbeat/DRBD联动脚本:由于是异地高可用集群,heartbeat可能在检测到节点异常(如kayelles.service的网络故障)时触发服务切换。查看/etc/ha.d/或集群配置目录下的资源脚本,确认是否存在主动停止MariaDB的逻辑。
  • 关联CPU负载与kayelles.service异常
    • 提取CPU负载升高时段的系统日志:grep "YYYY-MM-DD [0-9][0-9]:[0-9][0-9]" /var/log/syslog | grep "load average",结合进程审计工具(若安装psacct,用lastcomm查看当时的进程活动),定位导致CPU飙升的进程。
    • 分析kayelles.service日志:查看其专属日志文件(如/var/log/kayelles/*.log),确认数据包乱序是否引发网络分区,导致heartbeat误判主节点故障,进而触发MariaDB停止。
  • 检查进程终止信号记录
    • 查看内核日志:dmesg | grep -i "kill\|signal",确认是否由内核发送信号终止MariaDB进程。
    • 检查MariaDB错误日志(默认路径/var/log/mariadb/mariadb.log),排查是否存在OOM killer记录(Out of memory: Killed process)——CPU负载持续升高可能引发内存耗尽,触发系统强制终止进程。
恢复MariaDB服务的最优方式
  • 先确认DRBD同步状态
    执行drbdadm status,确保主节点DRBD设备处于Primary/UpToDate状态,避免启动时出现数据不一致。若从节点为Secondary/UpToDate,可先锁定DRBD资源:drbdadm lock <resource-name>,防止同步过程中出现异常。
  • 安全启动MariaDB
    • 优先备份数据:执行mysqldump --all-databases > /backup/mariadb_full_backup_$(date +%Y%m%d).sql,或直接打包MariaDB数据目录(默认/var/lib/mysql),避免修复过程中数据丢失。
    • 检查数据完整性:对MyISAM表执行myisamchk /var/lib/mysql/*.MYI,对InnoDB表执行innochecksum /var/lib/mysql/ibdata1;若发现损坏,用mysqlcheck --repair --all-databases尝试修复。
    • 启动并验证服务:执行systemctl start mariadb.service,启动后立即用systemctl status mariadb.service确认运行状态,同时登录数据库执行SHOW STATUS;验证核心功能正常。
  • 高可用集群联动恢复
    • 检查heartbeat状态:service heartbeat status,确认集群资源已正确挂载到主节点,未触发不必要的故障切换。
    • 修复kayelles.service网络问题:调整异地链路MTU、优化QoS配置解决数据包乱序,重启kayelles.service并验证其稳定性,避免再次触发集群异常检测逻辑。
  • 事后预防配置
    • 配置MariaDB OOM保护:在/etc/systemd/system/mariadb.service.d/override.conf中添加:
      [Service]
      MemoryMax=infinity
      OOMScoreAdjust=-1000
      
      防止MariaDB因内存紧张被系统OOM killer终止。
    • 优化heartbeat检测阈值:修改ha.cf中的deadtime、warntime参数,延长异常判定时间,避免短暂网络波动导致误切换。
    • 开启进程审计:安装auditd并添加规则auditctl -a exit,always -F path=/usr/bin/systemctl -F perm=x,记录所有systemctl操作,便于后续快速溯源。

内容的提问来源于stack exchange,提问作者Slayes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:01:02