当前位置: 首页 > news >正文

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 "\b^[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} -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

 

转载于:https://www.cnblogs.com/w787815/p/8249160.html

相关文章:

  • Shell 输入/输出重定向
  • 通用汽车新增130辆测试无人车,配激光雷达
  • 了解Web及网络基础(二)
  • 拉格朗日插值
  • HomeBrew常规使用教程
  • 递归函数的写法笔记
  • mysql手写sql 建库建表示例
  • Eonasdan bootstrap datetimepicker 使用记录
  • 新版本Jenkins安装时显示离线的问题
  • WEBGL学习【十四】利用HUD技术在网页上方显示三维物体
  • Hibernate映射——多对多关联映射(八)
  • kafka官方文档学习笔记1--基本概念了解
  • [TLSR8266] 1、搭建tlsr8266编译框架在win服务器中
  • net 自定义泛型那点事
  • Android Studio 解决 Error: /data/local/tmp/com.mazaiting.imgtomp4test安装失败问题
  • 0x05 Python数据分析,Anaconda八斩刀
  • CSS 专业技巧
  • egg(89)--egg之redis的发布和订阅
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • EventListener原理
  • iOS | NSProxy
  • java正则表式的使用
  • Js基础知识(四) - js运行原理与机制
  • Python实现BT种子转化为磁力链接【实战】
  • Spring-boot 启动时碰到的错误
  • uni-app项目数字滚动
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何合理的规划jvm性能调优
  • 双管齐下,VMware的容器新战略
  • 思否第一天
  • 物联网链路协议
  • 以太坊客户端Geth命令参数详解
  • ​插件化DPI在商用WIFI中的价值
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 飞书APP集成平台-数字化落地
  • #Linux(帮助手册)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (四)库存超卖案例实战——优化redis分布式锁
  • (算法)Travel Information Center
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转) 深度模型优化性能 调参
  • (转)linux 命令大全
  • (转)scrum常见工具列表
  • (转)setTimeout 和 setInterval 的区别
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET业务框架的构建
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually