2022年3月5日土曜日

Zabbix 5.0を6.0にバージョンアップする手順 (MariaDB利用)

2022年2月15日にZabbixの最新バージョンであるZabbix 6.0.0がリリースされており、以下記事にてZabbix 6.0を新規インストールする手順を記載した。

今回は新規インストールではなく、Zabbix 5.0から6.0にバージョンアップする手順を記載してみようと思う。ZabbixのMariaDBのバージョン互換性の関係から少々手順が長くなっているが、順番に実行していけば特に問題なくバージョンアップすることができる。

環境

バージョンアップ環境は以下の通り、CentOS Stream 8に導入したZabbix 5.0 + MariaDB環境となる。この環境をZabbix 6.0 + MariaDB環境へとバージョンアップする。

  • OS : CentOS Stream 8
  • Zabbixバージョン : 5.0.19から6.0.0へバージョンアップ
  • MariaDBバージョン : 10.3から10.6へバージョンアップ

注意する点として、CentOS Stream 8のMariaDBのバージョンは10.3となり、Zabbix 6.0がサポートするMariaDBのバージョンの10.5~10.6と互換性がない。そのため、MariaDBを一度アンインストールしたのち、10.6を再インストールする。

MariaDBの10.6をインストールする手順は、Zabbix 6.0のインストール手順の記事においても記載しているため、参照いただきたい。

Zabbixバージョンアップ手順

1. バックアップ取得

バージョンアップ後の起動時に、DBスキーマが自動でアップグレードされてしまうため、切り戻しはできないと考えたほうがよい。そのため、万が一問題発生時に備えてバックアップを取得しておこう。

DBの機能を用いたバックアップでもよいが、私の環境は仮想マシンでZabbixサーバを構築しているため、仮想マシンのクローンを取得し、さらにスナップショットによるバックアップを取得してからバージョンアップ作業に挑むことにした。

なお、本記事を書くにあたって実際に手順の流れを何度か確認しており、実際にスナップショットからのリストアも実施しているが、問題なくリストアできている。

2. Zabbixの停止

以下コマンドでZabbixを停止する。

# systemctl stop zabbix-server zabbix-agent httpd php-fpm

3. MariaDBの停止

以下コマンドでMariaDBを停止する。

# systemctl stop mariadb

4. MariaDBのアンインストール

アンインストール前にMariaDBのバージョンを確認しておく。10.3.28であることがわかる。

# mysql --version
mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

Zabbix 6.0ではMariaDB 10.5~10.6を利用する必要があるが、標準のリポジトリではインストールすることができないため、一度dnf removeを使ってMariaDBをアンインストールする。

# dnf remove mariadb mariadb-server
モジュラーの依存に関する問題:

 問題 1: 競合するリクエスト
  - module(perl:5.26) が提供されませんモジュール perl-DBD-MySQL:4.046:8030020200716171139:3a70019f.x86_64 に必要です
 問題 2: 競合するリクエスト
  - module(perl:5.26) が提供されませんモジュール perl-DBI:1.641:8030020200716150652:1e4bbb35.x86_64  に必要です
 問題 3: 競合するリクエスト
  - module(perl:5.26) が提供されませんモジュール perl-IO-Socket-SSL:2.066:8040020200924212038:1aedcbfe.x86_64 に必要です
 問題 4: 競合するリクエスト
  - module(perl:5.26) が提供されませんモジュール perl-libwww-perl:6.34:8040020211102170116:bf75fe78.x86_64 に必要です
依存関係が解決しました。
=====================================================================================================
 パッケージ               Arch      バージョン                                   リポジトリー  サイズ
=====================================================================================================
削除中:
 mariadb                  x86_64    3:10.3.28-1.module_el8.3.0+757+d382997d      @appstream     37 M
 mariadb-server           x86_64    3:10.3.28-1.module_el8.3.0+757+d382997d      @appstream     82 M
未使用の依存関係の削除:
 mariadb-backup           x86_64    3:10.3.28-1.module_el8.3.0+757+d382997d      @appstream     24 M
 mariadb-common           x86_64    3:10.3.28-1.module_el8.3.0+757+d382997d      @appstream    179 k
 mariadb-errmsg           x86_64    3:10.3.28-1.module_el8.3.0+757+d382997d      @appstream    2.3 M
 mariadb-gssapi-server    x86_64    3:10.3.28-1.module_el8.3.0+757+d382997d      @appstream     17 k
 mariadb-server-utils     x86_64    3:10.3.28-1.module_el8.3.0+757+d382997d      @appstream    7.1 M
 perl-DBD-MySQL           x86_64    4.046-3.module_el8.3.0+419+c2dec72b          @appstream    358 k
 perl-DBI                 x86_64    1.641-3.module_el8.3.0+413+9be2aeb5          @appstream    1.8 M

トランザクションの概要
=====================================================================================================
削除  9 パッケージ

解放された容量: 155 M
これでよろしいですか? [y/N]: y ←★「y」を入力

~(中略)~

削除しました:
  mariadb-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
  mariadb-backup-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
  mariadb-common-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
  mariadb-errmsg-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
  mariadb-gssapi-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
  mariadb-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
  mariadb-server-utils-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
  perl-DBD-MySQL-4.046-3.module_el8.3.0+419+c2dec72b.x86_64
  perl-DBI-1.641-3.module_el8.3.0+413+9be2aeb5.x86_64

完了しました!

ここで一度パッケージのアンインストール状況を確認する。以下の通り、一部mysql関連のパッケージが残存しており、このうちmysql-libsmysql-commonがMariaDB 10.6インストール時に競合するため、個別にアンインストールを行う。

# rpm -qa | grep mysql
zabbix-server-mysql-6.0.0-1.el8.x86_64
zabbix-web-mysql-6.0.0-1.el8.noarch
mysql-libs-8.0.26-1.module_el8.4.0+915+de215114.x86_64
php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
mysql-common-8.0.26-1.module_el8.4.0+915+de215114.x86_64

# rpm -e mysql-libs-8.0.26-1.module_el8.4.0+915+de215114.x86_64
# rpm -e mysql-common-8.0.26-1.module_el8.4.0+915+de215114.x86_64

5. MariaDB 10.6のインストール

MariaDBは本家MariaDBのリポジトリからインストールを行う。

まず、リポジトリをセットアップするためのスクリプトであるmariadb_repo_setupをダウンロードし実行する。

# curl -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
# bash mariadb_repo_setup --mariadb-server-version mariadb-10.6

リポジトリが設定されたら、MariaDBをインストールする。OS標準のリポジトリとパッケージ名が異なるので注意。

# dnf clean all
# dnf install MariaDB-server MariaDB-client -y
CentOS Stream 8 - AppStream                     2.4 MB/s |  20 MB     00:08
CentOS Stream 8 - BaseOS                         18 MB/s |  19 MB     00:01
CentOS Stream 8 - Extras                         14 kB/s |  18 kB     00:01
Extra Packages for Enterprise Linux 8 - x86_64  1.6 MB/s |  11 MB     00:06
Extra Packages for Enterprise Linux Modular 8 - 4.0 MB/s | 979 kB     00:00
Extra Packages for Enterprise Linux 8 - Next -  276 kB/s | 186 kB     00:00
MariaDB Server                                  516 kB/s | 584 kB     00:01
MariaDB MaxScale                                6.9 kB/s | 8.2 kB     00:01
MariaDB Tools                                   2.7 kB/s | 4.0 kB     00:01
Zabbix Official Repository - x86_64             295 kB/s | 229 kB     00:00
Zabbix Official Repository non-supported - x86_ 5.3 kB/s | 1.2 kB     00:00
依存関係が解決しました。
================================================================================
 パッケージ       Arch   バージョン                          リポジトリー サイズ
================================================================================
インストール:
 MariaDB-client   x86_64 10.6.7-1.el8                        mariadb-main  14 M
 MariaDB-server   x86_64 10.6.7-1.el8                        mariadb-main  25 M
依存関係のインストール:
 MariaDB-common   x86_64 10.6.7-1.el8                        mariadb-main  88 k
 MariaDB-shared   x86_64 10.6.7-1.el8                        mariadb-main 116 k
     置き換え  mariadb-connector-c.x86_64 3.1.11-2.el8_3
     置き換え  mariadb-connector-c-config.noarch 3.1.11-2.el8_3
 boost-program-options
                  x86_64 1.66.0-10.el8                       appstream    141 k
 galera-4         x86_64 26.4.11-1.el8                       mariadb-main  13 M
 libpmem          x86_64 1.6.1-1.el8                         appstream     79 k
 lsof             x86_64 4.93.2-1.el8                        baseos       253 k
 perl-DBI         x86_64 1.641-3.module_el8.3.0+413+9be2aeb5 appstream    740 k
 rsync            x86_64 3.1.3-14.el8                        baseos       405 k
 socat            x86_64 1.7.4.1-1.el8                       appstream    323 k

トランザクションの概要
================================================================================
インストール  11 パッケージ

ダウンロードサイズの合計: 55 M

~(中略)~

インストール済み:
  MariaDB-client-10.6.7-1.el8.x86_64
  MariaDB-common-10.6.7-1.el8.x86_64
  MariaDB-server-10.6.7-1.el8.x86_64
  MariaDB-shared-10.6.7-1.el8.x86_64
  boost-program-options-1.66.0-10.el8.x86_64
  galera-4-26.4.11-1.el8.x86_64
  libpmem-1.6.1-1.el8.x86_64
  lsof-4.93.2-1.el8.x86_64
  perl-DBI-1.641-3.module_el8.3.0+413+9be2aeb5.x86_64
  rsync-3.1.3-14.el8.x86_64
  socat-1.7.4.1-1.el8.x86_64

完了しました!

インストール後のバージョンを確認すると、10.6.7になっていることがわかる。

# mariadb --version
mariadb  Ver 15.1 Distrib 10.6.7-MariaDB, for Linux (x86_64) using readline 5.1

6. Zabbixのバージョンアップ

zabbix-release-6.0のパッケージをインストールする。

# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm を取得中
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:zabbix-release-6.0-1.el8         ################################# [ 50%]
整理中 / 削除中...
   2:zabbix-release-5.0-1.el8         ################################# [100%]

dnfにてZabbixのアップグレードを行う。参考URLに記載したサイトに合わせて、コマンドはdnf intallを使っているが、問題なくアップグレード処理が実行される。

# dnf clean all
79 ファイルが削除されました

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent zabbix-web-japanese -y
CentOS Stream 8 - AppStream                     2.9 MB/s |  20 MB     00:06
CentOS Stream 8 - BaseOS                         21 MB/s |  19 MB     00:00
CentOS Stream 8 - Extras                         63 kB/s |  18 kB     00:00
Extra Packages for Enterprise Linux 8 - x86_64  3.8 MB/s |  11 MB     00:02
Extra Packages for Enterprise Linux Modular 8 - 1.1 MB/s | 979 kB     00:00
Extra Packages for Enterprise Linux 8 - Next -  227 kB/s | 186 kB     00:00
MariaDB Server                                  519 kB/s | 584 kB     00:01
MariaDB MaxScale                                7.6 kB/s | 8.2 kB     00:01
MariaDB Tools                                   2.6 kB/s | 4.0 kB     00:01
Zabbix Official Repository - x86_64              19 kB/s |  17 kB     00:00
Zabbix Official Repository non-supported - x86_ 1.3 kB/s | 1.2 kB     00:00
パッケージ zabbix-server-mysql-5.0.19-1.el8.x86_64 は既にインストールされていま す。
パッケージ zabbix-web-mysql-5.0.19-1.el8.noarch は既にインストールされています。
パッケージ zabbix-apache-conf-5.0.19-1.el8.noarch は既にインストールされています。
パッケージ zabbix-agent-5.0.19-1.el8.x86_64 は既にインストールされています。
パッケージ zabbix-web-japanese-5.0.19-1.el8.noarch は既にインストールされていま す。
依存関係が解決しました。
================================================================================
 パッケージ                Arch         バージョン           リポジトリー サイズ
================================================================================
アップグレード:
 zabbix-agent              x86_64       6.0.0-1.el8          zabbix       523 k
 zabbix-apache-conf        noarch       6.0.0-1.el8          zabbix        21 k
 zabbix-server-mysql       x86_64       6.0.0-1.el8          zabbix       1.6 M
 zabbix-web                noarch       6.0.0-1.el8          zabbix       7.8 M
 zabbix-web-deps           noarch       6.0.0-1.el8          zabbix        21 k
 zabbix-web-japanese       noarch       6.0.0-1.el8          zabbix        21 k
 zabbix-web-mysql          noarch       6.0.0-1.el8          zabbix        20 k

トランザクションの概要
================================================================================
アップグレード  7 パッケージ

ダウンロードサイズの合計: 10 M

~(中略)~

アップグレード済み:
  zabbix-agent-6.0.0-1.el8.x86_64        zabbix-apache-conf-6.0.0-1.el8.noarch
  zabbix-server-mysql-6.0.0-1.el8.x86_64 zabbix-web-6.0.0-1.el8.noarch
  zabbix-web-deps-6.0.0-1.el8.noarch     zabbix-web-japanese-6.0.0-1.el8.noarch
  zabbix-web-mysql-6.0.0-1.el8.noarch

完了しました!

インストールされたパッケージを確認すると、zabbix-getのみアップグレードされていないため、個別にアップグレードを行う。

# rpm -qa | grep zabbix
zabbix-web-deps-6.0.0-1.el8.noarch
zabbix-get-5.0.19-1.el8.x86_64
zabbix-release-6.0-1.el8.noarch
zabbix-agent-6.0.0-1.el8.x86_64
zabbix-web-6.0.0-1.el8.noarch
zabbix-apache-conf-6.0.0-1.el8.noarch
zabbix-web-japanese-6.0.0-1.el8.noarch
zabbix-server-mysql-6.0.0-1.el8.x86_64
zabbix-web-mysql-6.0.0-1.el8.noarch

# dnf install zabbix-get -y
メタデータの期限切れの最終確認: 0:01:18 時間前の 2022年02月27日 18時53分04秒 に 実施しました。
パッケージ zabbix-get-5.0.19-1.el8.x86_64 は既にインストールされています。
依存関係が解決しました。
================================================================================
 パッケージ          Arch            バージョン           リポジトリー    サイズ
================================================================================
アップグレード:
 zabbix-get          x86_64          6.0.0-1.el8          zabbix          367 k

トランザクションの概要
================================================================================
アップグレード  1 パッケージ

ダウンロードサイズの合計: 367 k

~(中略)~

アップグレード済み:
  zabbix-get-6.0.0-1.el8.x86_64

完了しました!

以上でZabbixのすべてのパッケージが6.0に統一された。

# rpm -qa | grep zabbix
zabbix-web-mysql-6.0.0-1.el8.noarch
zabbix-release-6.0-1.el8.noarch
zabbix-get-6.0.0-1.el8.x86_64
zabbix-web-6.0.0-1.el8.noarch
zabbix-web-japanese-6.0.0-1.el8.noarch
zabbix-web-deps-6.0.0-1.el8.noarch
zabbix-server-mysql-6.0.0-1.el8.x86_64
zabbix-agent-6.0.0-1.el8.x86_64
zabbix-apache-conf-6.0.0-1.el8.noarch

7. MariDB起動

以下コマンドでMariaDBを起動する。

# systemctl start mariadb
# systemctl enable mariadb

MariaDBを起動すると以下のようなエラーが出力される。

# tail -30 /var/log/messages | grep "ERROR"
Feb 27 20:35:52 t1024cent mariadbd[20784]: 2022-02-27 20:35:52 0 [ERROR] Incorrect definition of table mysql.event: expected column 'definer' at position 3 to have type varchar(, found type char(141).
Feb 27 20:35:52 t1024cent mariadbd[20784]: 2022-02-27 20:35:52 0 [ERROR] mariadbd: Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.

これは、MariaDBのDB自体のアップグレード処理が未処理のため発生するエラーとなり、mariadb-upgradeコマンドを実行することで解消する。私の環境の場合は、アップグレードプロセスは数秒で完了した。

# mariadb-upgrade
Major version upgrade detected from 10.3.17-MariaDB to 10.6.7-MariaDB. Check required!
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats                                 OK
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK

~(中略)~

zabbix.valuemap                                    OK
zabbix.valuemap_mapping                            OK
zabbix.widget                                      OK
zabbix.widget_field                                OK
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK

mariadb-upgrade実行後、念のためMariaDBを再起動し、エラーログが出力されていないことを確認しておこう。

# systemctl restart mariadb
# tail -30 /var/log/messages | grep "ERROR"

8. Zabbix起動

以下コマンドでZabbixを起動する。

# systemctl start zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm

起動時のzabbix_server.logを見ると、DBのバージョンを確認し、自動的にアップグレードプロセスを開始していることがわかる。私の環境の場合は、アップグレードプロセスは数秒で完了した。

# tail -f /var/log/zabbix/zabbix_server.log
 17068:20220227:185536.941 Starting Zabbix Server. Zabbix 6.0.0 (revision 5203d2ea7d).
 17068:20220227:185536.941 ****** Enabled features ******
 17068:20220227:185536.941 SNMP monitoring:           YES
 17068:20220227:185536.941 IPMI monitoring:           YES
 17068:20220227:185536.941 Web monitoring:            YES
 17068:20220227:185536.941 VMware monitoring:         YES
 17068:20220227:185536.941 SMTP authentication:       YES
 17068:20220227:185536.941 ODBC:                      YES
 17068:20220227:185536.941 SSH support:               YES
 17068:20220227:185536.941 IPv6 support:              YES
 17068:20220227:185536.941 TLS support:               YES
 17068:20220227:185536.941 ******************************
 17068:20220227:185536.941 using configuration file: /etc/zabbix/zabbix_server.conf
 17068:20220227:185537.002 current database version (mandatory/optional): 05000000/05000005
 17068:20220227:185537.002 required mandatory version: 06000000
 17068:20220227:185537.002 starting automatic database upgrade
 17068:20220227:185537.007 completed 0% of database upgrade
 17068:20220227:185537.011 completed 1% of database upgrade
 17068:20220227:185537.074 completed 2% of database upgrade
 17068:20220227:185537.083 completed 3% of database upgrade

~(中略)~

 17068:20220227:185540.010 completed 98% of database upgrade
 17068:20220227:185540.013 completed 99% of database upgrade
 17068:20220227:185540.014 completed 100% of database upgrade
 17068:20220227:185540.014 database upgrade fully completed
 17068:20220227:185540.015 database could be upgraded to use primary keys in history tables
 17322:20220227:185540.022 starting HA manager
 17322:20220227:185540.024 HA manager started in active mode
 17068:20220227:185540.025 server #0 started [main process]
 17324:20220227:185540.026 server #2 started [configuration syncer #1]
 17323:20220227:185540.026 server #1 started [service manager #1]

~(以下略)~

9. Zabbixへのログイン確認

バージョンアップ後のZabbixへログインすると、問題なくGUI画面が表示された。いくつか監視動作の確認をしたところ、特に問題なく監視やメール通知ができており、現状問題なく動作している。

以上で、Zabbix 5.0から6.0にバージョンアップする手順は完了となる。

参考

0 件のコメント:

コメントを投稿

人気の投稿