目次

概要

ZabbixのDB領域を冗長化されていないSSDに変更したことに伴い、保険として定期的にDBバックアップを行うスクリプトを作成。
バックアップの際にはZabbix Serverを停止してDBのダンプを取得。ダンプ生成後にZabbix Serverを起動し、ダンプをgzip圧縮する流れとなる。
スクリプトの起動はcronによる定期実行を前提としている。

パラメータ

ROTATE保存件数。ファイル名にローテーション番号を付与し、指定数のバックアップファイルを保管する
OUTPATHバックアップの生成先ディレクトリ
MYSQLDUMPmysqldumpコマンドのフルパス
LOGバックアップ処理のログ出力先。月次でログファイル名を変更するが、過去ログを削除する機能はない
DBUSERDBのログインユーザ
DBPASSWDDBのログインユーザのパスワード
DBNAMEバックアップ対象とするDB名

ソース

#!/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

処理速度

当方環境における動作試験結果。

  • マシンスペック
    サーバ仮想マシン(VMware vSphere6)
    CPUAMD Opteron(tm) Processor 3280 / 2.4GHz / 4core
    メモリ8GB
    HDD(バックアップ元)RDM接続SSD 128GB(Trancend SSD370S)
    HDD(バックアップ先)VMDKファイル(RAID10 / SATA HDD 7200rpm 750GB×6)
  • バックアップ規模
    バックアップ元DB25GB
    ダンプファイルサイズ11.8GB
    圧縮後サイズ1.9GB
  • 処理時間
    ダンプ生成時間9分10秒
    圧縮時間16分30秒

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-07-10 (日) 02:55:48 (2837d)