bash zabbixDB自動バックアップスクリプト

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

コメント

タイトルとURLをコピーしました