[[監視システム(NMS)]]~
目次~
#contents
**概要 [#v22efdbf]
ZabbixのDB領域を冗長化されていないSSDに変更したことに伴い、保険として定期的にDBバックアップを行うスクリプトを作成。~
バックアップの際にはZabbix Serverを停止してDBのダンプを取得。ダンプ生成後にZabbix Serverを起動し、ダンプをgzip圧縮する流れとなる。~
スクリプトの起動はcronによる定期実行を前提としている。~
**パラメータ [#t089a1d5]
|ROTATE|保存件数。ファイル名にローテーション番号を付与し、指定数のバックアップファイルを保管する|
|OUTPATH|バックアップの生成先ディレクトリ|
|MYSQLDUMP|mysqldumpコマンドのフルパス|
|LOG|バックアップ処理のログ出力先。月次でログファイル名を変更するが、過去ログを削除する機能はない|
|DBUSER|DBのログインユーザ|
|DBPASSWD|DBのログインユーザのパスワード|
|DBNAME|バックアップ対象とするDB名|
**ソース [#w4abd76a]
#!/bin/sh
# -------------------------------
# ZABBIX Backup Database Script
# -------------------------------
# Version : 1.0
# date :2016/07/09
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH
##
## Set
##
## General
ROTATE="10"
## Path
OUTPATH="/home/work/db_backup"
OUTFILE="zabbix_db.dump"
MYSQLDUMP="/usr/bin/mysqldump"
LOG="/var/log/zabbix/auto-backup."`date +%Y%m`".log"
## DB Setting
DBUSER="zabbix"
DBPASSWD="zabbix"
DBNAME="zabbix"
## Backup rotate
cd $OUTPATH
test -f $OUTFILE.gz.$ROTATE && rm -rf $OUTFILE.gz.$ROTATE
while [ $ROTATE -ge 1 ];
do
i=$((ROTATE-1))
if [ -f $OUTFILE.gz.$i ]; then
mv $OUTFILE.gz.$i $OUTFILE.gz.$ROTATE
fi
ROTATE=$i
done
test -f $OUTFILE.gz && mv $OUTFILE.gz $OUTFILE.gz.1
## Execute
echo `date +%Y/%m/%d\ %H:%M:%S`" DB Backup Starting" >> $LOG
/etc/init.d/zabbix-server stop 2>&1 >> $LOG
echo `date +%Y/%m/%d\ %H:%M:%S`" create database dump" >> $LOG
$MYSQLDUMP -u $DBUSER --password=$DBPASSWD $DBNAME > $OUTFILE 2>> $LOG
echo `date +%Y/%m/%d\ %H:%M:%S`" database dump complete" >> $LOG
/etc/init.d/zabbix-server start 2>&1 >> $LOG
echo `date +%Y/%m/%d\ %H:%M:%S`" dump file compress" >> $LOG
gzip $OUTFILE
echo `date +%Y/%m/%d\ %H:%M:%S`" DB Backup End" >> $LOG
# EOF
**処理速度 [#s5327296]
当方環境における動作試験結果。~
-マシンスペック
|サーバ|仮想マシン(VMware vSphere6)|
|CPU|AMD Opteron(tm) Processor 3280 / 2.4GHz / 4core |
|メモリ|8GB|
|HDD(バックアップ元)|RDM接続SSD 128GB(Trancend SSD370S)|
|HDD(バックアップ先)|VMDKファイル(RAID10 / SATA HDD 7200rpm 750GB×6)|
-バックアップ規模
|バックアップ元DB|25GB|
|ダンプファイルサイズ|11.8GB|
|圧縮後サイズ|1.9GB|
-処理時間
|ダンプ生成時間|9分10秒|
|圧縮時間|16分30秒|