背景
- 監視環境として,Zabbix6.4を公式提供のDocker composeを使って構築していました.
- Zabbix7にupgradeする際に詰まったので解決方法を記載します.
環境
- Zabbixのversion:6.4
- DB:MYSQL
流れ
- 6.4verのMySQLに入り以下のコマンドを実行.
docker exec -it MYSQLのコンテナ名 /bin/bash
-
mysql -u root -p
PWはデフォルトの場合root_pwd
-
SET PERSIST log_bin_trust_function_creators = 1;
- ここが肝:Docker以外の手法では普通にSETするだけで永続化するが,Dockerは永続化しないのでこのコマンド.
-
Docker compose down
で稼働中のコンテナを停止. - 使用中の
compose.yaml
の該当箇所を全て6.4から7.0に書き換える. -
Docker compose up -d
で再度立ち上げる.-
docker compose logs
を用いて適宜logを見てください. - しばらく待ったらupdateに伴う処理が終わり,立ち上がるはずです.
-
- 終わり.
- 任意のブラウザでzabbixにアクセスしてください.version7にあがっているはずです.
エラー
表示されたエラー
Webブラウザに表示されたエラー
The Zabbix database version does not match current requirements. Your database version: 6050035. Required version: 7000000. Please contact your system administrator.
docker compose logsのエラー
query failed: [1419] You do not have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable) [create trigger hosts_name_upper_insert before insert on hosts for each row
原因と解決方法
原因:log_bin_trust_function_creatorsをオンにしていないこと
解決方法:先述の流れのStep1を実行する.