从容器升级
概述
本节介绍成功将 upgrade 到 Zabbix 8.0.x 容器所需的步骤。
可分别参考以下说明:
升级前,请务必阅读相关的 升级说明!
开始升级前,请确认用户对数据库具有升级所需的必要权限。
对于从 Zabbix 6.0 或更早版本升级的情况,在升级过程中需要创建确定性触发器。
如果 MySQL/MariaDB 启用了二进制日志记录,则这需要超级用户权限,或设置变量/配置参数 log_bin_trust_function_creators = 1。
有关如何设置该变量的说明,请参见 数据库创建脚本。
请注意,如果从控制台执行,该变量只会被临时设置,并会在 Docker 重启后失效。
在这种情况下,请保持 SQL 服务运行,仅通过执行 docker compose down zabbix-server 停止 zabbix-server 服务,然后执行 docker compose up -d zabbix-server。
或者,也可以在配置文件中设置该变量。
根据数据库大小不同,升级数据库到 8.0 版本可能需要较长时间。
Zabbix 组件镜像升级
这些说明将升级用作 Zabbix 组件容器基础的 Docker 镜像。
以下步骤以 Zabbix proxy 为例。
请将 zabbix-proxy-sqlite3 替换为您的组件容器名称。
1. 检查所有容器,以识别其名称和当前镜像版本:
docker ps -a
# CONTAINER ID IMAGE (...) NAMES
# 5a0c2e3d02b4 zabbix/zabbix-proxy-sqlite3:alpine-7.4-latest (...) zabbix-proxy-sqlite3
2. 拉取新版本镜像:
docker pull zabbix/zabbix-proxy-sqlite3:alpine-8.0-latest
3. 停止 Zabbix 组件容器:
docker stop zabbix-proxy-sqlite3
4. 删除 Zabbix 组件容器:
继续之前,请确保您已记录原始 docker run 命令中使用的所有配置标志和卷挂载,因为重新创建容器时将需要它们。
docker rm zabbix-proxy-sqlite3
5. 使用更新后的镜像启动一个新容器:
docker run --name zabbix-proxy-sqlite3 \
-e ZBX_SERVER_HOST=192.0.2.0 \
-e ZBX_PROXYMODE=0 \
-e ZBX_HOSTNAME=zabbix-proxy-sqlite3 \
-v zabbix-proxy-data:/var/lib/zabbix/db_data \
--init \
-d \
zabbix/zabbix-proxy-sqlite3:alpine-8.0-latest
有关运行 Zabbix 容器的更多信息,请参见 Docker(手动部署)。
6. 通过检查容器日志来验证升级是否成功:
docker logs -f zabbix-proxy-sqlite3
Docker Compose 文件升级
这些说明用于升级部署 Zabbix 组件所使用的 Docker Compose 文件。 如果您是使用 Docker Compose 安装 Zabbix 的,请按照这些说明操作。
1. 检查所有容器,以识别其名称和当前镜像版本:
docker ps -a
# CONTAINER ID IMAGE (...) NAMES
# d095f486deef zabbix/zabbix-server-mysql:alpine-7.4-latest (...) zabbix-docker-zabbix-server-1
# 70627d833da0 zabbix/zabbix-web-nginx-mysql:alpine-7.4-latest (...) zabbix-docker-zabbix-web-nginx-mysql-1
# aaaa664cc185 zabbix/zabbix-server-mysql:alpine-7.4-latest (...) zabbix-docker-server-db-init-1
# 9ab3e77492ff mysql:8.0-oracle (...) zabbix-docker-mysql-server-1
2. 进入您之前克隆的 Zabbix Docker 仓库,拉取最新更新,并切换到 8.0 分支:
如果您修改过本地仓库中的 .env、compose.yaml 或其他文件,git pull 可能会覆盖这些文件。
在运行此步骤之前,请先备份所有本地更改。
cd zabbix-docker
git pull
git checkout 8.0
3. 使用更新后的 Docker Compose 文件部署 Zabbix 组件:
# 使用 MySQL 作为数据库:
docker compose -f ./compose.yaml up -d
# 使用 PostgreSQL 作为数据库:
docker compose -f ./compose_pgsql.yaml up -d
在所有容器重新创建并启动后,数据采集恢复之前可能需要 1—3 分钟。 有关运行 Zabbix 容器的更多信息,请参见 Docker Compose。
4. 通过检查容器日志来验证升级是否成功(将 zabbix-docker-zabbix-server-1 替换为您的组件容器名称):
docker logs -f zabbix-docker-zabbix-server-1