Zabbix1.8を2.4へアップグレード

途中でMySQLをリストアしてたりしたので一週間もかかっちまいました。
作業の記録です。
環境はRHEL6。

Zabbixサーバとエージェントを停止

# /etc/init.d/zabbix-server stop
Shutting down zabbix server:                               [  OK  ]
# /etc/init.d/zabbix-agent stop
Shutting down zabbix agent:                                [  OK  ]

MySQLバックアップを取得

# mysqldump -uroot -ppassword zabbix > ~/backup/zabbix.dmp

既存パッケージを削除

いま入っているzabbix関連のパッケージを削除する。
いま入っているパッケージはrpm -qa で調べられる。

# rpm -qa | grep zabbi
zabbix-server-mysql-1.8.13-1ML6.x86_64
zabbix-web-1.8.13-1ML6.x86_64
zabbix-web-mysql-1.8.13-1ML6.x86_64
zabbix-template-vm-esx-esxi-2.0.0-1ML6.noarch
zabbix-server-1.8.13-1ML6.x86_64
zabbix-agent-1.8.13-1ML6.x86_64
zabbix-1.8.13-1ML6.x86_64

# rpm -qa | grep zabbix | xargs rpm -e --nodeps 

新しいパッケージをインストール

まずリポジトリrpmをインストールする。

# wget http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
# rpm -ivh zabbix-release-2.4-1.el6.noarch.rpm

続いてyumでzabbixの本体をインストール。

# yum install zabbix-server-mysql zabbix-web-mysql

データベースのアップグレード

MySQLのDBスキーマが変更されているようなので、パッチを適用。

# ./upgrade zabbix -uroot -p

これ、相当時間がかかります。私の場合はこらえきれなくてctl-cしちゃいました。
データ量にもよるでしょうが、historyテーブルや、history_unitテーブルのalter tableにとっても時間がかかるようで、自環境ではおよそ24時間。
ちなみにmysqldumpから吐き出したダンプファイルをリストアするのには、upgradeスクリプトの三倍くらい時間がかかります(まる三日くらい)。

zabbix_server.confを編集

上記のupgradeスクリプトでDBが1.8から2.0対応へ変更されますが、さらにzabbix_serverが立ち上がるときに2.0から2.4対応への変更が自動的に実施されます。その時にDB接続ができないとテーブル変更ができません。zabbix_server.conf中のDB接続情報を編集します。
/etc/zabbix/zabbix_server.confを編集。

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

zabbix_serverを起動

# /etc/init.d/zabbix_server start

これも相当時間がかかるようです。我慢して待ちましょう。サーバプロセス自体はすぐに起動されますが、裏でalter tableなどいっぱい動作します。
上記zabbix_server.confでデバッグレベルを上げるとその様子をログで観察できます。

というところで今日は終了。
明日ちゃんと動作しているといいんですが。