Linux 安装 Zabbix 7.0 LTS 并使用外置 MySQL 数据库详细教程

Linux 上安装 Zabbix 7.0 LTS 并配置外置 MySQL 数据库完整教程,DB 与 Server 分离部署,适合企业级大规模监控架构,含防火墙、权限、性能优化指南。

Zabbix 7.0 LTS - 外置 MySQL 数据库部署 - IT峰哥软件库

引言:为什么使用外置 MySQL 数据库?

在生产环境中部署 Zabbix 监控平台时,数据库的性能和可靠性直接决定了整个监控系统的稳定性。Zabbix 的所有监控数据——包括历史数据、趋势数据、事件信息、配置信息——全部存储在数据库中。当监控节点数量达到数百甚至数千时,数据库的压力会急剧增大。因此,将 Zabbix Server 与数据库分离部署(即使用外置 MySQL),已成为企业级部署的标准实践。

外置 MySQL 部署方案 - 独立扩展 · 高可用 · 职责分离 - IT峰哥软件库

使用外置 MySQL 数据库至少带来三个核心优势:一是数据库服务器可以独立扩展资源(CPU、内存、磁盘),不受 Zabbix Server 的资源限制;二是便于实施数据库层面的高可用方案(如 MySQL 主从复制、Galera 集群);三是运维团队可以各自管理自己的组件,职责分离更清晰。本文将详细演示在 Linux 上安装 Zabbix 7.0 LTS 并配置外置 MySQL 数据库的完整步骤。

环境规划与准备工作

本教程假设您有两台服务器:一台运行 Zabbix Server 和 Web 前端(以下简称 Server 节点),另一台运行 MySQL 数据库(以下简称 DB 节点)。两台服务器之间需要确保网络互通,且防火墙放行 MySQL 3306 端口和 Zabbix 10051 端口。操作系统以 Rocky Linux 9 / CentOS 9 为例,Debian/Ubuntu 的步骤类似但包管理器命令不同。

# 拓扑结构
# Server 节点(192.168.1.10):Zabbix Server 7.0 + Nginx + PHP-FPM
# DB 节点(192.168.1.20):MySQL 8.0 / MariaDB 10.5+

第一步:在 DB 节点上部署 MySQL

首先在数据库服务器上安装 MySQL 8.0。如果您更倾向于使用 MariaDB(MySQL 的完全兼容替代品),安装步骤同样适用。需要注意的是,Zabbix 7.0 LTS 要求 MySQL 8.0+ 或 MariaDB 10.5+,请确保版本符合要求。

# 在 DB 节点(192.168.1.20)执行
sudo dnf install -y mysql-server
sudo systemctl enable --now mysqld

# 安全加固
sudo mysql_secure_installation

# 登录 MySQL 创建 Zabbix 数据库和远程用户
mysql -u root -p
-- 创建 Zabbix 数据库
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

-- 创建远程访问用户,允许从 Server 节点连接
CREATE USER 'zabbix'@'192.168.1.10' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'192.168.1.10';
FLUSH PRIVILEGES;
QUIT;
# 配置 MySQL 允许远程连接
sudo vi /etc/my.cnf.d/mysql-server.cnf
# 确保 bind-address = 0.0.0.0(或指定 Server 节点 IP)

sudo systemctl restart mysqld

# 防火墙放行 3306 端口
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

第二步:在 Server 节点上安装 Zabbix 7.0 LTS

回到 Zabbix Server 节点,添加 Zabbix 7.0 LTS 官方仓库并安装所需组件。这里不需要在 Server 节点上安装 MySQL/MariaDB 客户端库,因为我们将使用远程数据库连接。

# 在 Server 节点(192.168.1.10)执行
sudo rpm -ivh https://repo.zabbix.com/zabbix/7.0/stable/rhel/9/x86_64/zabbix-release-7.0-1.el9.noarch.rpm
sudo dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent2

第三步:配置 Zabbix Server 连接外置 MySQL

关键区别就在这里:Zabbix Server 的配置文件中,DBHost 不再填写 localhost,而是填写远程 DB 节点的 IP 地址。同时,需要确保 Server 节点可以访问 DB 节点的 3306 端口。

# 编辑 /etc/zabbix/zabbix_server.conf
DBHost=192.168.1.20    # 改为远程 DB 节点 IP
DBName=zabbix
DBUser=zabbix
DBPassword=strong_password_here
DBPort=3306

# 导入初始数据(通过远程连接)
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -h 192.168.1.20 -u zabbix -p zabbix

第四步:配置 Nginx 和 PHP

Zabbix 7.0 LTS 的 Web 前端配置与本地数据库部署基本相同。编辑 Nginx 配置文件 /etc/nginx/conf.d/zabbix.conf,设置监听端口和 server_name。PHP-FPM 需要配置时区和必要的执行参数。

# 编辑 /etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
# 启动所有服务
sudo systemctl enable --now zabbix-server zabbix-agent2 nginx php-fpm

# 防火墙放行
sudo firewall-cmd --add-port=10050/tcp --add-port=10051/tcp --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

第五步:完成 Web 安装向导

打开浏览器访问 http://192.168.1.10:8080,进入 Zabbix 7.0 LTS 的 Web 安装界面。在数据库配置步骤中,需要填入外置 MySQL 的连接信息:数据库主机填写 192.168.1.20、端口 3306、数据库名 zabbix、用户名 zabbix、密码为之前设定的强密码。其余步骤与本地数据库安装一致。

安装完成后,使用默认管理员账号 Admin / zabbix 登录。建议立即添加被监控主机进行验证,确保 Agent 从 Server 节点到 DB 节点的数据链路正常工作。可以通过查看 Zabbix Server 日志 /var/log/zabbix/zabbix_server.log 确认数据库连接是否成功。

常见问题 FAQ

问:远程连接 MySQL 报错 Access denied?
答:检查 MySQL 用户授权语句中的 Host 字段是否包含 Server 节点的正确 IP。执行 SHOW GRANTS FOR ‘zabbix’@’192.168.1.10’; 确认权限。

问:导入初始 SQL 数据时报错超时?
答:server.sql.gz 压缩包解压后约 50MB+,远程导入可能因网络延迟超时。建议在 Server 节点上使用 mysql 命令行工具通过 TCP 连接导入,增加 net_read_timeout 和 net_write_timeout 参数。

问:Zabbix Server 日志显示 Cannot connect to MySQL?
答:首先确认 Server 节点能否 telnet 到 DB 节点的 3306 端口:telnet 192.168.1.20 3306。如果连接超时,检查 DB 节点的防火墙和 MySQL 的 bind-address 配置。如果连接被拒绝,检查 MySQL 用户权限是否正确。

问:外置 MySQL 部署后性能如何优化?
答:建议在 DB 节点上调整 InnoDB 缓冲池大小为物理内存的 70%、启用 Query Cache(适当大小)、优化 max_connections 参数。如果监控规模较大,可考虑使用 MySQL Proxy 或读写分离架构。

MySQL 性能优化与监控数据维护

当 Zabbix 使用外置 MySQL 数据库时,数据库的性能直接决定了监控系统的承载能力。随着监控节点数量的增加,历史数据和趋势数据的体积会迅速增长。以下是一些关键的优化建议:

首先,合理配置 InnoDB 缓冲池大小。MySQL 的 InnoDB 缓冲池(innodb_buffer_pool_size)是影响性能的最关键参数,建议设置为服务器物理内存的 60%-75%。如果 DB 节点配备 16GB 内存,缓冲池设为 10GB-12GB 可以获得较好的 I/O 表现。其次,启用 MySQL 的查询缓存虽然对 Zabbix 的写入密集型负载帮助有限,但对于 Web 前端的报表查询有益——可以适当设置 query_cache_size 为 64MB-128MB。

数据库分区表管理

Zabbix 7.0 LTS 原生支持数据库表分区功能,这是处理海量监控数据的关键技术。分区表将大表按时间范围拆分为多个物理子表,查询时只扫描相关分区而非全表,同时删除过期数据时只需删除整个分区(DROP PARTITION),远比 DELETE 逐行删除高效。建议在 Zabbix 安装完成后立即开启分区功能:通过 Zabbix Web 界面 → 管理 → 分区表维护 → 设置历史数据保留天数(建议 30-90 天)、趋势数据保留天数(建议 365 天)和分区大小(建议按天或按周分区)。开启分区后,还需要配置 Housekeeper 的清理策略,确保过期数据定期自动清理,防止数据库无限膨胀。

部署监控与健康检查

外置 MySQL 的部署方式虽然提供了更好的扩展性,但也增加了故障点。建议在 DB 节点上也部署 Zabbix Agent,并通过 Zabbix Server 自身监控 DB 节点的系统资源和 MySQL 服务状态。同时,可以编写简单的健康检查脚本,定时测试 Zabbix Server 到 MySQL 数据库的连接可用性:

# 数据库连接健康检查脚本示例
mysqladmin -h 192.168.1.20 -u zabbix -p'password' ping 2>/dev/null
if [ $? -eq 0 ]; then
    echo "MySQL connection OK"
else
    echo "MySQL connection FAILED"
fi

建议将此脚本加入 crontab 中每 5 分钟执行一次,并将结果写入系统日志或通过 Zabbix 自定义监控项上报。

总结

通过外置 MySQL 数据库部署 Zabbix 7.0 LTS,可以显著提升监控系统的扩展性和运维灵活性。这种架构设计已被大量企业生产环境验证,是构建大规模监控平台的基础模式。即便是中小规模部署,采用外置 MySQL 也为未来的扩展预留了充足的空间。如果您在部署过程中需要更多工具和资源,欢迎访问 IT峰哥软件库 获取更多实用软件。

给TA打赏
共{{data.count}}人
人已打赏
默认

EaseUS Todo Backup Pro v16.0 数据备份还原软件——完整备份解决方案

2026-6-22 13:03:18

默认

DeepSeek 大模型对接 OpenClaw 新手快速上手指南——本地部署 AI 私人助理

2026-6-22 13:17:10

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索