zabbix 监控数据备份,history,trends等表按天导出压缩备份

#!/bin/bash

red='\e[0;31m' # 红色
RED='\e[1;31m'
green='\e[0;32m' # 绿色
GREEN='\e[1;32m'
blue='\e[0;34m' # 蓝色
BLUE='\e[1;34m'
purple='\e[0;35m' # 紫色
PURPLE='\e[1;35m'
NC='\e[0m' # 没有颜色

source /etc/bashrc
source /etc/profile

MySQL_USER=XXX
MySQL_PASSWORD=XXX
MySQL_HOST=localhost
MySQL_PORT=3306
MySQL_DUMP_PATH=/mysql_backup
MYSQL_DUMP_PATH2=/root/old_134.sql
MYSQL_BIN_PATH=/home/mysql-8.0.25/bin/mysql
MYSQL_DUMP_BIN_PATH=/home/mysql-8.0.25/bin/mysqldump
MySQL_DATABASE_NAME=zabbix
SOCKET=/home/mysql-8.0.25/mysql.sock
DATE=$(date '+%Y-%m-%d')
YESTERDAY=$(date +%Y-%m-%d --date='1 days ago')
dumpdata () {
     ${MYSQL_DUMP_BIN_PATH} --socket=${SOCKET} --opt -u${MySQL_USER} -p${MySQL_PASSWORD} -P${MySQL_PORT} -h${MySQL_HOST} -d  ${MySQL_DATABASE_NAME} $1 >${TABLE_NAME}.sql
     ${MYSQL_DUMP_BIN_PATH} --socket=${SOCKET} --opt -u${MySQL_USER} -p${MySQL_PASSWORD} -P${MySQL_PORT} -h${MySQL_HOST} -t  ${MySQL_DATABASE_NAME} $1 --where=" clock>=UNIX_TIMESTAMP(\"$YESTERDAY\") and clock<UNIX_TIMESTAMP(\"$DATE\")"> /${MySQL_DUMP_PATH}/NotImportantDataForEveryDay/${TABLE_NAME}.${YESTERDAY}.sql

}


MySQLDUMP () {
    [ -d ${MySQL_DUMP_PATH} ] || mkdir ${MySQL_DUMP_PATH}
    cd ${MySQL_DUMP_PATH}
    [ -d logs    ] || mkdir logs
    [ -d ${DATE} ] || mkdir ${DATE}
    cd ${DATE}

    TABLE_NAME_ALL=$(${MYSQL_BIN_PATH} --socket=${SOCKET} -u${MySQL_USER} -p${MySQL_PASSWORD}  -h${MySQL_HOST} ${MySQL_DATABASE_NAME} -e \
    "show tables"|egrep -v "(Tables_in_zabbix)")
    echo ${TABLE_NAME_ALL}
    for TABLE_NAME in ${TABLE_NAME_ALL}
    do
        if [ "$TABLE_NAME" = "history"  ] || [ "$TABLE_NAME" = "history_log"  ] || [ "$TABLE_NAME" = "history_text"  ] \
        || [ "$TABLE_NAME" = "history_str"  ] || [ "$TABLE_NAME" = "history_uint"  ] ||  [ "$TABLE_NAME" = "acknowledges"  ] \
        ||  [ "$TABLE_NAME" = "alerts"  ] ||[ "$TABLE_NAME" = "auditlog"  ] ||[ "$TABLE_NAME" = "events"  ] \
        ||[ "$TABLE_NAME" = "service_alarms"  ] || [ "$TABLE_NAME" = "trends"  ] ||[ "$TABLE_NAME" = "trends_uint"  ]
        then
            echo "IT'S $TABLE_NAME"
            dumpdata $TABLE_NAME
        else
        ${MYSQL_DUMP_BIN_PATH} --socket=${SOCKET} --opt -u${MySQL_USER} -p${MySQL_PASSWORD} -P${MySQL_PORT} -h${MySQL_HOST} \
        ${MySQL_DATABASE_NAME} ${TABLE_NAME} >${TABLE_NAME}.sql
        sleep 0.01
        fi
    done

    [ "$?" == 0 ] && echo "${DATE}: Backup zabbix succeed"     >> ${MySQL_DUMP_PATH}/logs/ZabbixMysqlDump.log
    [ "$?" != 0 ] && echo "${DATE}: Backup zabbix not succeed" >> ${MySQL_DUMP_PATH}/logs/ZabbixMysqlDump.log

    cd ${MySQL_DUMP_PATH}/
    [ "$?" == 0 ] && rm -rf $(date +%Y-%m-%d --date='180 days ago')
    cd ${MySQL_DUMP_PATH}/NotImportantDataForEveryDay/
    tar -zcvf NotImportantDataForEvery.${YESTERDAY}.tar.gz *.${YESTERDAY}.sql
    rm -rf *.${YESTERDAY}.sql

    exit 0
}

##import功能未作修改,因本脚本中history等数据表只含表结构,慎用
MySQLImport () {
    cd ${MySQL_DUMP_PATH2}
    DATE=$(ls  ${MySQL_DUMP_PATH2} |egrep "\b^[0-9]+-[0-9]+-[0-9]+$\b")
    echo -e "${green}${DATE}"
    echo -e "${blue}what DATE do you want to import,please input date:${NC}"
    read SELECT_DATE
    if [ -d "${SELECT_DATE}" ];then
        echo -e "you select is ${green}${SELECT_DATE}${NC}, do you want to contine,if,input ${red}(yes|y|Y)${NC},\
        else then exit"
        read Input
        [[ 'yes|y|Y' =~ "${Input}" ]]
        status="$?"
        if [ "${status}" == "0"  ];then
            echo "now import SQL....... Please wait......."
        else
            exit 1
        fi
        cd ${SELECT_DATE}
        for PER_TABEL_SQL in $(ls *.sql)
        do
           ${MYSQL_BIN_PATH} --socket=${SOCKET} -u${MySQL_USER} -p${MySQL_PASSWORD}  -h${MySQL_HOST} ${MySQL_DATABASE_NAME} < ${PER_TABEL_SQL}
           echo -e "import ${PER_TABEL_SQL} ${PURPLE}........................${NC}"
        done
        echo "Finish import SQL,Please check Zabbix database"
    else
        echo "Don't exist ${SELECT_DATE} DIR"
    fi
}

case "$1" in
MySQLDUMP|mysqldump)
    MySQLDUMP
    ;;
MySQLImport|mysqlimport)
    MySQLImport
    ;;
*)
    echo "Usage: $0 {(MySQLDUMP|mysqldump) (MySQLImport|mysqlimport)}"
    ;;
esac


mysqldump:

dumpdata () 导出指定表的前一天数据,history,trends表数据,按天存放在NotImportantDataForEveryDay目录里

mysqldump()将history等表导出表结构与配置表放一起;

最后删除多余的sql文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程目标     全面理解和掌握 Zabbix 监控系统的架构及运行原理,搭建和管理各种规模的Zabbix监控系统 课程简介         Zabbix是一个开源的企业级的监控解决方案。通过Zabbix可以监控IT基础设施的方方面面,包括硬件、操作系统、网络、虚拟化层、中间件和各种业务应用系统。用Zabbix几乎可以监控你想监控的任意数据。              本课程从Zabbix的介绍、安装开始,一步步带你深入Zabbix,通过学习你会:         1、掌握Zabbix各个组件的配置和管理。         2、掌握不同监控项的类型和配置方法,根据监控需求灵活配置监控项。         3、掌握网络发现、低级发现和主动式agent自动注册,实现自动化监控。         4、掌握模版、宏变量、触发器和告警通知的配置和高级的应用方法。         5、掌握图形、屏幕、拓扑图和仪表盘等数据可视化的方法,利用大屏可以实时的展示监控数据。         6、掌握Zabbix系统自身的维护、备份、升级、排障以及性能优化。         7、掌握Zabbix内部运行机制和Zabbix使用技巧,让zabbix更好的帮助你实现监控目标。                  本课程中还包含很多操作演示,比如像创建主机,创建监控项、触发器、图形、全局事件关联等,也介绍了微信和钉钉告警的配置方法。当你对Zabbix深入了解之后,面对层出不穷的新业务、新应用,你都能轻松自如的制定和提供相应的监控解决方案。 特别提示:官网的中文文档有些地方翻译的有问题,一定要以英文文档为准。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值