zoukankan      html  css  js  c++  java
  • Zabbix备份数据文件

    mysql自带的工具mysqldump,当数据量大了之后进行全备所花的时间比较长,这样将会造成数据库的锁读、从而zabbix服务的监控告警不断,想着做下配置文件的备份、刚好有这么个脚本、满足了需求。

    后续会使用xtrabckup来进行完成备份,执行这个脚本所花时间不过几秒

    #!/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=zabbix
    MySQL_PASSWORD=zabbix #修改对应的密码
    MySQL_HOST=localhost
    MySQL_PORT=3306
    MySQL_DUMP_PATH=/home/zabbix-datafile-backup
    MYSQL_BIN_PATH=/usr/bin/mysql
    MYSQL_DUMP_BIN_PATH=/usr/bin/mysqldump
    MySQL_DATABASE_NAME=zabbix
    DATE=$(date '+%Y%m%d')
    
    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} -u${MySQL_USER} -p${MySQL_PASSWORD}  -h${MySQL_HOST} ${MySQL_DATABASE_NAME} -e "show tables"|egrep -v "(Tables_in_zabbix)")
        TABLE_NAME_ALL=$(${MYSQL_BIN_PATH} -u${MySQL_USER} -p${MySQL_PASSWORD}  -h${MySQL_HOST} ${MySQL_DATABASE_NAME} -e "show tables"|egrep -v "(Tables_in_zabbix|history*|trends*|acknowledges|alerts|auditlog|events|service_alarms)")
        for TABLE_NAME in ${TABLE_NAME_ALL}
        do
            ${MYSQL_DUMP_BIN_PATH} --opt -u${MySQL_USER} -p${MySQL_PASSWORD} -P${MySQL_PORT} -h${MySQL_HOST} ${MySQL_DATABASE_NAME} ${TABLE_NAME} >${TABLE_NAME}.sql
            sleep 0.01
        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}/
        rm -rf $(date +%Y%m%d --date='5 days ago')
        exit 0
    }
    MySQLImport () {
        cd ${MySQL_DUMP_PATH}
        DATE=$(ls  ${MySQL_DUMP_PATH} |egrep "^[0-9]+$")
        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} -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

    执行步骤如下

    [root@Zabbix-Server /]# sh zabbix-datafile-bak.sh mysqldump
    [root@Zabbix-Server /]# ls
    bin   dev  home  lib64  mnt  proc  run   srv  tmp  var                 zabbix-datafile-backup
    boot  etc  lib   media  opt  root  sbin  sys  usr  zabbix-data-backup  zabbix-datafile-bak.sh
    [root@Zabbix-Server /]# cd zabbix-datafile-backup/
    [root@Zabbix-Server zabbix-datafile-backup]# ls
    20180109  logs
    [root@Zabbix-Server zabbix-datafile-backup]# cd 20180109/
    [root@Zabbix-Server 20180109]# ls
    actions.sql                graphs.sql           interface_discovery.sql         opinventory.sql         slideshow_usrgrp.sql
    application_discovery.sql  graph_theme.sql      interface.sql                   opmessage_grp.sql       slides.sql
    application_prototype.sql  group_discovery.sql  item_application_prototype.sql  opmessage.sql           sysmap_element_url.sql
    applications.sql           group_prototype.sql  item_condition.sql              opmessage_usr.sql       sysmaps_elements.sql
    application_template.sql   groups.sql           item_discovery.sql              optemplate.sql          sysmaps_links.sql
    autoreg_host.sql           host_discovery.sql   items_applications.sql          profiles.sql            sysmaps_link_triggers.sql
    conditions.sql             host_inventory.sql   items.sql                       proxy_autoreg_host.sql  sysmaps.sql
    config.sql                 hostmacro.sql        maintenances_groups.sql         regexps.sql             sysmap_url.sql
    dbversion.sql              hosts_groups.sql     maintenances_hosts.sql          rights.sql              sysmap_user.sql
    dchecks.sql                hosts.sql            maintenances.sql                screens_items.sql       sysmap_usrgrp.sql
    dhosts.sql                 hosts_templates.sql  maintenances_windows.sql        screens.sql             timeperiods.sql
    drules.sql                 housekeeper.sql      mappings.sql                    screen_user.sql         trigger_depends.sql
    dservices.sql              httpstepitem.sql     media.sql                       screen_usrgrp.sql       trigger_discovery.sql
    escalations.sql            httpstep.sql         media_type.sql                  scripts.sql             triggers.sql
    expressions.sql            httptestitem.sql     opcommand_grp.sql               services_links.sql      users_groups.sql
    functions.sql              httptest.sql         opcommand_hst.sql               services.sql            users.sql
    globalmacro.sql            icon_mapping.sql     opcommand.sql                   services_times.sql      usrgrp.sql
    globalvars.sql             icon_map.sql         opconditions.sql                sessions.sql            valuemaps.sql
    graph_discovery.sql        ids.sql              operations.sql                  slideshows.sql
    graphs_items.sql           images.sql           opgroup.sql                     slideshow_user.sql

    加入计划任务、每天可以执行一次

    [root@Zabbix-Server zabbix]# crontab -l|tail -2
    #Q-2018-1/9
    00 6 * * * /etc/zabbix/zabbix-datafile-bak.sh mysqldump

    重启下计划任务服务

    /sbin/service crond restart
  • 相关阅读:
    day1
    day0
    Scala编程快速入门系列(二)
    Scala编程快速入门系列(一)
    awk使用方法与案例介绍
    快速掌握Shell编程
    yum源配置的三种方法
    部署Kettle做ETL开发并使用Crontab制作调度系统
    大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录
    RDD概念、特性、缓存策略与容错
  • 原文地址:https://www.cnblogs.com/w787815/p/8249160.html
Copyright © 2011-2022 走看看