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. 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密|原创

    前言 出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方. ps:日常开发中,我们要有一定的安全意识 ...

  2. 从养孩子谈谈 IO 模型(一)

    同步/异步.阻塞/非阻塞 说的是一回事儿吗? 同步/异步.阻塞/非阻塞 你能通俗易懂的讲清楚吗? Java 中的 BIO.NIO.AIO 你了解吗? Socket 编程你还会吗? Linux 操作系统 ...

  3. VMware中虚拟机克隆后多台主机网络冲突

    在Vmware中将虚拟机的一台centos7机器克隆了3台,然后启动机器后出现机器都能够上网,但是无法在本地xshell中同时进行连接,且连接的某一台虚拟机都会经常中断 虚拟机克隆后,会遇到的问题: ...

  4. PTA | 1029 旧键盘 (20分)

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字.以及 ...

  5. 科技发展时间线(Technology Timeline)

    本文主要记录,过去两百年间,科技发展的时间线 这些内容,是自己在学习电脑发展历史的时候做的, 感兴趣的同学,可以复制到 Excel 里面,按顺序逐一进行学习, 学习和整理的过程确实花了很长时间,但是并 ...

  6. c++容器的底层数据结构

    序列式容器 vector ->底层数据结构为数组,支持快速随机访问 list ->底层数据结构为双向链表,支持快速增加和删除 deque ->底层数据结构为一个中央控制器和多个缓冲区 ...

  7. ClassLoader类加载器浅见

    类加载器 类加载器,它拿到.class文件,它会把他拆成两部分,将static数据转换成方法区的数据结构,然后把他放在了方法区之中. 然后在堆里面建一个类对象(Class,它可以用来实例化对象),然后 ...

  8. AJ学IOS(22)UI之UIApplicationDelegate和UIWindow

    AJ分享,必须精品 UIApplicationDelegate 每次新建完项目,都有个带有“AppDelegate”字眼的类,它就是UIApplication的代理 NYAppDelegate默认已经 ...

  9. 10行代码,用python能做出什么骚操作

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:小栗子 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  10. 8行代码帮你python建立UDP通信

    首先我们要搭建一个UDP通信,首先我们就要知道什么UDP: UDP用户数据报传输协议,它位于TCP/IP协议的传输层,是一种无连接的协议,它发送的报文不能确定是否完整地到达了另外一端.UDP广泛应用于 ...