一、实验背景

在上一篇文章中,我们完成了:

  • Ansible 批量管理环境搭建

  • Zabbix Server 6.0 安装

  • MySQL 5.7 数据库配置

  • Zabbix Web 界面安装

本以为 Zabbix Server 能顺利启动,结果却卡住了。Web 界面一直显示 Zabbix server is running: No,后端服务怎么也起不来。

这篇文章完整记录了从 MySQL 版本不兼容到系统表损坏、再到服务配置文件错误的整个排查过程。


二、实验环境

节点IP角色
master192.168.116.168Zabbix Server + Web + Ansible
node1192.168.116.169MySQL 数据库(Zabbix 库)
node2192.168.116.170业务节点(物联系统 Pod + Agent)

Zabbix 架构:Server 在 master,数据库在 node1,Agent 在三台机器上。

问题:Zabbix Server 无法启动

现象:

Zabbix Web 界面显示 Zabbix server is running: No

systemctl status zabbix-server-mysql
# Active: faile

排查过程:

1. 查看日志发现 MySQL 版本不兼容

tail -50 /var/log/zabbix/zabbix_server.log

日志显示:

Unable to start Zabbix server due to unsupported MySQL database version (5.07.44).
Must be at least (8.00.0).

原因:Zabbix Server 6.0 要求 MySQL 8.0+,但 node1 上 MySQL 是 5.7.44。

2. 升级 MySQL 到 8.0

  • 备份 Zabbix 数据库

  • 卸载 MySQL 5.7

  • 安装 MySQL 8.0

  • 获取临时密码并登录

3. 升级后仍然报错

升级后启动 Zabbix Server,日志仍显示 MySQL 5.7 版本错误。原因是日志文件缓存了旧信息。

于是又继续修复日志问题。用sudo -u zabbix /usr/sbin/zabbix_server -f -c /etc/zabbix/zabbix_server.conf命令查看发现Zabbix Server 手动运行是正常的!说明是 systemd 服务文件的问题(问题太多了主播就不一个个截图了)

解决:删除旧日志,重启服务。

4. 确认配置

grep -E "DBHost|DBName|DBUserBPassword" /etc/zabbix/zabbix_server.conf

5. 修复 systemd 服务文件

# 手动运行测试(成功)
sudo -u zabbix /usr/sbin/zabbix_server -f -c /etc/zabbix/zabbix_server.conf
# 发现服务文件中用户是 zabbixsrv,手动运行时用的是 zabbix

# 修改服务文件
sed -i 's/User=zabbixsrv/User=zabbix/' /usr/lib/systemd/system/zabbix-server-mysql.service
systemctl daemon-reload

结果:服务启动正常。


最终验证

systemctl status zabbix-server-mysql
# Active: active (running)


复盘

问题原因解决方案
Zabbix Server 启动失败MySQL 5.7 版本太低升级到 MySQL 8.0
升级后仍报 5.7 错误日志缓存未更新删除旧日志
无法创建 zabbix 用户MySQL 系统表引擎损坏修复系统表
systemd 启动失败服务文件中用户不匹配统一使用 zabbix 用户

更多推荐