Ubuntu で Zabbix Server を 1.8 系から 2.2 系へアップグレードした時のコマンドメモ
はじめに
わたしが運用しているすべてのサーバーは munin と Zabbix によって監視しています。 これまで Ubuntu 12.04 の apt リポジトリで提供されている Zabbix 1.8 を利用していましたが、 Web コントロールパネルが壊れたことを契機に、これを直すのではなく 2.2 にアップグレードしました。
アップグレードは 27 日の夜中に行い無事終了しましたが、どこかに記録を残して置かないともったいないと思い立ったので .zsh_history を元に手順をメモしておきます。
手順
cd $HOME
# Stop Zabbix Server (1.8)
sudo service zabbix-server stop
# Create a backup
mkdir ./zabbix-backup
mysqldump -uroot -p zabbix > ./zabbix-backup/dump.db
sudo cp /etc/zabbix/{apache.conf,zabbix_server.conf} ./zabbix-backup
sudo cp -r /etc/zabbix/alert.d ./zabbix-backup
# Remove Zabbix Server (1.8) and Zabbix frontend
sudo apt-get remove zabbix-server-mysql zabbix-frontend-php
# Add official apt repositories
sudo zsh -c 'cat << EOF > /etc/apt/sources.list.d/zabbix.list
deb http://repo.zabbix.com/zabbix/2.2/ubuntu/ precise main
deb-src http://repo.zabbix.com/zabbix/2.2/ubuntu/ precise main
EOF'
curl -o - http://repo.zabbix.com/zabbix-official-repo.key| sudo apt-key add -
sudo apt-get update
# Make sure Zabbix Server(2.2) will be installed and install it
sudo apt-cache policy zabbix-server-mysql zabbix-frontend-php
sudo apt-get install zabbix-server-mysql zabbix-frontend-php
sudo service zabbix-server stop
# Edit configuration file
sudo vimdiff ./zabbix-backup/zabbix_server.conf /etc/zabbix/zabbix_server.conf
sudo vimdiff ./zabbix-backup/apache.conf /etc/zabbix/apache.conf
# Download source code of Zabbix Server(2.2) and migrate database schemas from 1.8's one to 2.0's
apt-get source zabbix-server-mysql
cd ./zabbix-2.2.5/upgrades/dbpatches/2.0
mysql -uroot -p zabbix < ./patch.sql
# Start Zabbix Server(2.2) and monitor progress of auto database schema migration
sudo service zabbix-server-mysql start
watch 'sudo tail -n 20 /var/log/zabbix/zabbix_server.log'
おわりに
Zabbix を OS の標準リポジトリに入っている 1.8 系から 2.2.4 にアップグレードした。長い道のりだった。主に mysqldump でのバックアップ作成と 1.8 から 2.0 の時のデータベースマイグレーションが。
— Kohei YOSHIDA (@yosida95) July 28, 2014
1.8 から 2.0 へのデータベースマイグレーションバッチは 500 万レコードくらいのテーブルに対して容赦なく ALTER TABLE を仕掛けてくるのでめちゃくちゃ時間がかかります。 あまりに時間がかかったので、夜中バッチを起動して翌朝に完了していることを期待してそのまま眠りました。