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}" == "" ];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
logs
[root@Zabbix-Server zabbix-datafile-backup]# cd /
[root@Zabbix-Server ]# 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 -
#Q--/
* * * /etc/zabbix/zabbix-datafile-bak.sh mysqldump

重启下计划任务服务

/sbin/service crond restart

Zabbix备份数据文件的更多相关文章

  1. [20171225]没有备份数据文件的恢复.txt

    [20171225]没有备份数据文件的恢复.txt --//别人问的问题,增加了数据文件没有备份,如何恢复,实际上很简单,因为当前控制文件有记录建立时间只要从建立数据文件开始的--//归档日志都存在恢 ...

  2. 更换Oracle备份数据文件

    应用背景:需要查看和修改一下Interlib中的数据,所以要反复的将备份数据进行导入和清空.整理一下步骤 删除tablespace drop tablespace interlib including ...

  3. Oracle 无备份情况下的恢复--控制文件/数据文件

    13.3无备份恢复控制文件 没有备份恢复控制文件其实就是在nomount状态,create control创建一个新的控制文件. dba必须知道4个信息才能正确的创建:数据库名.在线日志路径及其大小. ...

  4. RMAN备份与恢复之数据文件

    备份数据文件,模拟磁盘损坏时,还原恢复数据文件. 首先,查询数据文件序号,备份数据文件,可根据数据文件序号指定备份的数据文件. SQL SQL> select file_name,file_id ...

  5. ORACLE用户管理方式下备份数据和复制数据库

    首先要明确的是,oracle数据库的备份可以分为逻辑备份和物理备份.           逻辑备份的是通过数据导出对数据进行备份,主要方式有老式的IMP/EXP和数据泵灯方式.适合变化较少的数据库,而 ...

  6. c# 备份数据

    #region 备份数据文件 /// <summary> /// 备份数据文件 /// </summary> /// <param name="strFileN ...

  7. 05 使用bbed跳过归档恢复数据文件

    5 使用BBED跳过归档 在归档模式下,缺失了一部分的归档日志文件,对数据文件进行恢复 1 开启归档 --shutdown immediate --startup mount --alter data ...

  8. oracle直通车6关于rman备份恢复数据文件,以及创建分区表的实验

    1.创建一张表,在表上创建一个索引,分别查询表,索引各自分配了多少个extents,多少个数据块以及总共占用空间的大小(bytes). 答:创建一张表t,为字段object_id创建索引t_objec ...

  9. 数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询

    一.查看数据库信息:=====================1.数据文件 SQL> SELECT FILE#,STATUS,ENABLED,NAME FROM V$DATAFILE; FILE ...

随机推荐

  1. RecyclerView实现拖动排序和滑动删除功能

    RecyclerView 的拖动排序需要借助一下 ItemTouchHelper 这个类,ItemTouchHelper 类是 Google 提供的一个支持 RecyclerView 滑动和拖动的一个 ...

  2. 从零开始编译安装 Extcalc

    Extcalc 是个非常强大的计算器,同时也是一个非常老的软件包,已经不再更新.希望使用 apt-get 或是 dnf 安装已经不可能,更何况我是在 mips 的龙芯 3A 上.唯一的方法就是编译安装 ...

  3. Spring Boot创建一个HelloWorld项目

    目录 Spring Boot 简介 微服务框架 以前使用spring开发web的方式 Spring Boot 启动器介绍 如何创建一个helloword的SpringBoot项目 Spring Boo ...

  4. markdown 插入图片太大?怎么设定图片大小?

    你一定在插入图片的时候,遇到图片太大,影响观感的问题. Markdown中,图片大小的设定方式有两种 第一种: ![](https://img2018.cnblogs.com/blog/1735896 ...

  5. Unity 游戏框架搭建 2019 (二十六) 第一轮整理完结

    昨天呢我们把第八个示例整理完了.整理之后学习了类的第一作用:方法的集合,还有 Obselete 这个 API.并且在进行整理的时候贯彻了我们新的约定和规则:先确保功能有效,再去做变更和删除. 今天我们 ...

  6. .net 垃圾回收

    垃圾回收器帮我们处理了内存中不在使用的对象,提高了机器的性能,让开发人员轻松了很多. 你真的了解垃圾回收吗? 或许你知道垃圾回收,听说过是通过标记回收,可是怎么标记回收呢就不是很清楚了,好吧,如果不清 ...

  7. MAC设置开机启动

    mac将使用launchctl做为开机启动工具,launchctl将根据plist文件的信息来启动任务.plist脚本一般存放在以下目录: l /Library/LaunchDaemons --> ...

  8. zookeeper的下载安装和选举机制(zookeeper一)

    1. 简要概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的框架.Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架它负责存储和管理大家都关心的 ...

  9. tf.train.MomentumOptimizer 优化器

    tf.train.MomentumOptimizer( learning_rate, momentum, use_locking=False, use_nesterov=False, name='Mo ...

  10. SolrCloud(solr集群+zookeeper集群)

    一.集群介绍 1.  什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引 ...