3 从容器升级
概述
本节描述成功将 Zabbix 7.0 容器进行升级所需的步骤。
可分别查看以下两组说明:
在升级之前,请务必阅读相关的升级说明!
在开始升级之前,请确认用户具有用于升级目的的数据库必要权限。
对于从 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。
或者,您也可以在配置文件中设置该变量。
根据数据库大小,升级到 7.0 版本的数据库可能需要较长时间。
Zabbix 组件镜像升级
这些说明将升级用作 Zabbix 组件容器基础的 Docker 镜像。
下面的步骤以 Zabbix proxy 为例。
请将 zabbix-proxy-sqlite3 替换为您组件的容器名称。
1. 检查所有容器,以识别它们的名称和当前镜像版本:
docker ps -a
# CONTAINER ID IMAGE (...) NAMES
# 5a0c2e3d02b4 zabbix/zabbix-proxy-sqlite3:alpine-6.4-latest (...) zabbix-proxy-sqlite3
2. 拉取新版本镜像:
docker pull zabbix/zabbix-proxy-sqlite3:alpine-7.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.1 \
-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-7.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-6.4-latest (...) zabbix-docker-zabbix-server-1
# 70627d833da0 zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest (...) zabbix-docker-zabbix-web-nginx-mysql-1
# aaaa664cc185 zabbix/zabbix-server-mysql:alpine-6.4-latest (...) zabbix-docker-server-db-init-1
# 9ab3e77492ff mysql:8.0-oracle (...) zabbix-docker-mysql-server-1
2. 进入您之前克隆的 Zabbix Docker 仓库,拉取最新更新,并切换到 7.0 分支:
如果您在本地仓库中修改了 .env、compose.yaml 或其他文件,git pull 可能会覆盖这些修改。
在执行此步骤之前,请先备份任何本地更改。
cd zabbix-docker
git pull
git checkout 7.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