基于mysqldump编写自动全备增备的shell脚本

基于mysqldump编写自动全备增备的shell脚本

在线上MySQL数据库备份分为全备和增备,而xtrabackup备份已经支持了增量备份了,但是mysqldump就不支持增量备份,所以我们需要写一个shell脚本对于mysqldump来自动全备和增备。

一下脚本要求我们做一个全备的策略,然后如何做增量备份,自动完成每天执行增量备份,每个星期天执行全备。备份完删除二进制文件,减低磁盘压力。

[[email protected] ~]# cat mysqlback.sh
#!/bin/bash
##date=2017-11-7
##name=cml
##email=********@qq.com
##title=mysqldump backup
 
EMAIL="*******@qq.com"
mysqlbak_dir=/usr/local/mysql/mydata
mysqlbak_log=/usr/local/mysql/mydata/mysqlbak.log
DATE=`date +%Y%m%d`
TIME=`date +"%y-%m %H:%M:%S"`
DUMPBAK=$DATE.sql
GZDUMPBAK=$DATE.sql.gz
WEEK=`date +%w`
cd $mysqlbak_dir
USER=root
PASSWD=redhat
bin_log=`ls -tr mysql-bin.0*| head -1`
bin_log_dir=/usr/local/mysql/mydata/bin_log
 
if [ ! -f $bin_log_dir ];then
       mkdir$bin_log_dir
fi
 
echo "--------------------------$TIME-----------------------------">> $mysqlbak_log
 
 
if [ $WEEK == 0 ];then     ##日期是星期天的时候执行
##week=0~6
       cd$mysqlbak_dir
       /usr/local/mysql/bin/mysqldump-u$USER -p$PASSWD --single-transaction -R --triggers -E --master-data --flush-logs--all-databases > $DUMPBAK 2>&1
       echo"mysqldump backup success!!" >> $mysqlbak_log
       tar-czvf $GZDUMPBAK $DUMPBAK >> $mysqlbak_log 2>&1
       echo"$GZDUMPBAK backup success!!" >> $mysqlbak_log
#     if[ -f $GZDUMPBAK ];then
#            echo"$GZDUMPBAK BACKUP SUCCESS!!" |mail -s "mysqldump backup"$EMAIL
#     fi
       rm-rf $DUMPBAK
       rm-rf $bin_log
##上面步骤是全备过程
else
       cd$mysqlbak_dir
       /usr/local/mysql/bin/mysqladmin-u$USER -p$PASSWD flush-logs
       cp-p $bin_log $bin_log_dir
       echo"copy $bin_log to $bin_log_dir" >> $mysqlbak_log
       rm-rf $bin_log
       echo"backup bin_log success!!" >> $mysqlbak_log
#     echo"backup bin_log $bin_log SUCCESS!" | mail -s "backupbin_log" $EMAIL
##下面是增备过程
fi

##给脚本权限:

[[email protected] ~]# cd /usr/local/src/script/
[[email protected] script]# ls
mysqlback.sh
[[email protected] script]# chmod a+x mysqlback.sh

##把它加入到crontab几乎任务里面:

[[email protected] script]# crontab -e
1 0 * * * /usr/local/src/script/mysqlback.sh
时间: 2024-11-14 09:34:01

基于mysqldump编写自动全备增备的shell脚本的相关文章

通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)

依据前文<通过Git WebHooks+脚本实现自动更新发布代码>的解决方案编写的shell脚本,此脚本专门用于更新补丁文件,例如对项目中的文件实现增(add).删(remove).改(update),并且执行相关的命令,如清除缓存.重启服务等. 此Shell脚本目前设计成在本地执行,目前不适合分布式执行的情况.也就是说,此脚本最好与项目在同一个机器上,这个缺陷已经标注在脚本中了,参见脚本中的多个TODO. 脚本完成的工作: 检查配置文件合规性 备份与恢复 增删改文件 执行命令 失败回滚 除上

mysql-zrm备份工具实现全备+增备策略

本博文声明,特别适合初次应用此工具的小白使用,原因看完就明白,OK,开始吧! 1.前期准备: 因为mysql-zrm这个备份工具是用perl语言写成的工具,所有要先安装一些软件包,来为mysql-zrm工具提供必要的环境 yum install perl-DBI perl-DBD-MySQL perl-XML-Parser -y PS:(网上好多人云亦云,要不就是复制.转载别人的,不需要那么复杂,只需要安装这3个包即可) 2.创建备份用户 mysql> grant select,insert,u

通过Git WebHooks+脚本实现自动更新发布代码之shell脚本

前文讲述了<通过Git WebHooks+脚本实现自动更新发布代码>,里面提供了一种自动更新发布代码的脚本编写思路.本文的脚本与前文中的思路不太不同.本脚本以capistrano中的一些思想和理念为依据,用简单好理解的shell脚本实现capistrano原本实现的自动化部署部分. 脚本的一些特点和功能: 解决脚本的符号链接问题,准确获取脚本工作目录(从tomcat脚本中学到): 颜色显示,不同级别的信息用不同的颜色显示(共两种方案,前一种从一位不知名的国外工程师处得到,后一种从lnmp1.2

Linux 平台下 RMAN 全备 和 增量备份 shell 脚本

转:http://blog.csdn.net/tianlesoftware/article/details/5740630 全备脚本 以 nocatalog 模式为例: Shell 脚本: ######################################################################## ##   hot_database_backup.sh      ## ##   created by Tianlesoftware   ## ##        

一个自动安装LNMP的简洁Shell脚本

此脚本在生产服务器上使用了一年多,本脚本崇尚简单唯美,只需要一个脚本就可以在任何一台有网络的服务器上自动配置LNMP.本脚本会在脚本执行目录下,建packages目录用于存放LNMP所需要的软件.大家安装完可以删除该目录. 使用方法:1.把shell脚本的内容保存为nginx_php2.root权限下运行:chmod u+x nginx_php; ./nginx_php init; ./nginx_php ins_mysql-server; ./nginx_php ins_mysql-clien

LDAP认证客户端、自动挂载用户家目录shell脚本配置

这个是LDAP认证客户端与自动挂载家目录shell脚本配置,使用"authconfig-tui"图形化配置简单,但是后面需要手动操作,自动写入配置文件还没有研究透彻.以后完善 #!/bin/bash yum install -y nss-pam-ldapd nfs-utils nfs autofs pam_ldap openldap openldap-clients #showmount -e 172.16.16.22 automaster="/etc/auto.master

Linux下自动还原MySQL数据库的Shell脚本

创建shell脚本topjui_source.exp,内容如下: #!/usr/bin/expect spawn echo "###### running... ######" spawn echo $argv0 spawn echo $argv1 set timeout 30 spawn mysql -uroot -p123456 set timeout 30 expect { "hi" { send "You said hi\n"} &quo

一个自动安装lnmp环境的shell脚本

#/bin/bash #定义nginx源码包版本,脚本会根据版本名称和后缀检查文件是否在当前目录如果你需要安装不同版本的nginx可以修改这两个变量 nginx_version=nginx-1.8.0 format1=tar.gz #定义php-fpm安装包的文件名,如果你需要安装其他版本可以更改这个变量 php_fpm_package_name=php-fpm-5.4.16-36.el7_1.x86_64.rpm #判断系统语言是不是中文是返回0不是返回1 language(){ echo $

一个自动生成awr报告的shell脚本

最近在学习shell编程,搞一点点小工具自动完成awr报告的收集工作,方便系统出现问题时问题排查.脚本内容如下,系统收集每天开始时间6点结束时间20点的awr报告并存储在/u01/shell_t/awr/目录下 #! /bin/sh export ORACLE_SID=PROD1export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 m=(`sqlplus -S "/