#!/bin/sh
# バックアップ対象Zabbix情報指定
ZABBIX_DB_USER="CHANGE_HERE"
ZABBIX_DB_PASS="CHANGE_HERE"
ZABBIX_DB_NAME="CHANGE_HERE"
# scp情報指定
ScpKey="CHANGE_HERE"
ScpUser="CHANGE_HERE"
# バックアップデータ転送先サーバ情報指定
BK="CHANGE_HERE"
BK_PATH="/data/zabbix/"
# バックアップデータ保存先指定
BASE_PATH="/etc/zabbix/backup/"
# バックアップデータのファイル名生成
time=$(date "+%Y%m%d_%H%M%S")
BACKUP_FILE_NAME="zabbix_backup_${time}.sql.gz"
# バックアップ処理(mysqldump)
mysqldump -u ${ZABBIX_DB_USER} -p${ZABBIX_DB_PASS} \
--single-transaction --hex-blob ${ZABBIX_DB_NAME} \
--ignore-table=${ZABBIX_DB_NAME}.history \
--ignore-table=${ZABBIX_DB_NAME}.history_uint \
--ignore-table=${ZABBIX_DB_NAME}.trends_uint \
--ignore-table=${ZABBIX_DB_NAME}.trends \
--ignore-table=${ZABBIX_DB_NAME}.history_str \
--ignore-table=${ZABBIX_DB_NAME}.history_text \
--ignore-table=${ZABBIX_DB_NAME}.history_log \
--ignore-table=${ZABBIX_DB_NAME}.alerts \
--ignore-table=${ZABBIX_DB_NAME}.auditlog \
--ignore-table=${ZABBIX_DB_NAME}.auditlog_details \
--ignore-table=${ZABBIX_DB_NAME}.events \
--ignore-table=${ZABBIX_DB_NAME}.acknowledges \
--ignore-table=${ZABBIX_DB_NAME}.escalations \
--ignore-table=${ZABBIX_DB_NAME}.problem \
--ignore-table=${ZABBIX_DB_NAME}.problem_tag \
--ignore-table=${ZABBIX_DB_NAME}.event_recovery \
--ignore-table=${ZABBIX_DB_NAME}.task_acknowledge \
--ignore-table=${ZABBIX_DB_NAME}.task_close_problem \
--ignore-table=${ZABBIX_DB_NAME}.task_remote_command \
--ignore-table=${ZABBIX_DB_NAME}.task_remote_command_result \
--ignore-table=${ZABBIX_DB_NAME}.event_suppress \
--ignore-table=${ZABBIX_DB_NAME}.task_check_now \
--ignore-table=${ZABBIX_DB_NAME}.task \
| gzip > ${BASE_PATH}${BACKUP_FILE_NAME}
# mysqldumpが正常に行われたらバックアップデータ転送
if [ ${PIPESTATUS[0]} = 0 ]; then
scp -i $ScpKey $BASE_PATH$BACKUP_FILE_NAME $ScpUser@$BK:$BK_PATH
fi
# バックアップ実行サーバではデータをためないように1日以上古いバックアップデータ削除
find $BASE_PATH -mtime +1 -exec rm -f {} \;
exit
コメント