用Mysqldump实现全库备份+binlog的数据还原

首先是为mysql做指定库文件的全库备份

vim mysqlbak.sh

#!/bin/bash

#定义数据库目录,要能找到mysqldump

mysqlDir=/usr

#定义用于备份数据库的用户名和密码

user=root

userpwd=123456

dbname=db1

#定义备份目录

databackupdir=/mysqlbak

#定义邮件正文文件

emailfile=$databackupdir/email.txt

#定义邮件地址

email=www@163.com

#定义备份日志文件

logfile=$databackupdir/mysqlbackup.log

#DATE=`date +%Y%m%d`

DATE=`date -I`

echo "" > $emailfile

echo $( date +"%Y-%m-%d %H:%M:%S" ) >> $emailfile

cd $databackupdir

#定义备份文件名

dumpfile=mysql_$DATE.sql

gzdumpfile=mysql_$DATE.sql.tar.gz

#使用mysqldump备份数据库,--flush-logs 产生一个新日志

$mysqlDir/bin/mysqldump -u$user -p$userpwd --flush-logs -x $dbname > $dumpfile

#压缩备份文件

if [ "$?" == 0 ];then

#把备份出来的文件进行压缩,压缩的结果保存在邮件内容中

tar zcvf $gzdumpfile $dumpfile >> $emailfile 2>&1

echo "BackupFileName: $gzdumpfile" >> $emailfile

echo "DataBase Backup Success!" >> $emailfile

#删除压缩前的sql文件

rm -rf $dumpfile

else

echo "Database Backup Fail!" >> $emailfile

fi

#写日志文件

echo "-------------------------------------------------" >> $logfile

cat $emailfile >> $logfile

#发送邮件通知

cat $emailfile| mail -s "Mysql Backup" $email

以上脚本执行后会在备份目录中产生一个tar.gz的文件,此文件为全库备份文件,备份成功后给指定的邮箱地址发送邮件,收件内容为截图内容为备份成功!

接下来是binlog日志的备份脚本

vim binlogbak.sh

#!/bin/bash

#定义数据库目录和数据目录

mysqldir=/usr/local/mysql

datadir=$mysqldir/binlog

#定义用于备份数据库的用户名和密码

user=root

userpwd=123456

#定义备份目录

databackupdir=/mysqlbak

logbackupdir=$databackupdir/logs

#定义邮件正文文件

emailfile=$databackupdir/email.txt

#定义邮件地址

email=www@163.com

#定义备份日志文件

logfile=$databackupdir/mysqlbackup.log

#DATE=`date +%Y%m%d`

echo "" > $emailfile

echo $( date +"%Y-%m-%d %H:%M:%S" ) >> $emailfile

#刷新日志,使数据库使用新的二进制日志文件

/usr/bin/mysqladmin -u$user -p$userpwd flush-logs

cd $datadir

#得到二进制日志列表

filelist=`cat mysql_binlog.index`

icounter=0

for file in $filelist

do

#需要注意的是符号和两个操作项之间的空格毕不可少,下面也是一样

icounter=`expr $icounter + 1`

done

nextnum=0

ifile=0

for file in $filelist

do

binlogname=$file

nextnum=`expr $nextnum + 1`

#跳过最后一个二进制日志 (数据库当前使用的二进制日志文件)

if [ $nextnum -eq $icounter ];then

echo "Skip lastest!" > /dev/null

else

dest=$logbackupdir/$binlogname

#跳过已经备份的二进制日志文件

if [ -e $dest ];then

echo "Skip exist $binlogname!" > /dev/null

else

#备份日志文件到备份目录

cp $binlogname $logbackupdir

if [ "$?" == 0 ];then

ifile=`expr $ifile + 1`

echo "$binlogname Backup Success!" >> $emailfile

fi

fi

fi

done

if [ $ifile -eq 0 ];then

echo "No Binlog Backup!" >> $emailfile

else

echo "Backup $ifile File(s)." >> $emailfile

echo "Backup MySQL Binlog OK!" >> $emailfile

fi

#写日志文件

echo "-------------------------------------------------" >> $logfile

cat $emailfile >> $logfile

#发送邮件通知

cat $emailfile| mail -s "Mysql Backup" $email

以上脚本执行后会在备份目录中产生多个没备份过的binlog日志,文件每日是前一天的增量备份文件,备份成功后给指定的邮箱地址发送邮件,收件内容为截图内容为备份成功!

编写计划任务自动执行,每周1,3,24点全库备份,每天夜里1点日志备份

crontab -e

0 00 * * 1,3 /mysqlbak.sh

0 1 * * * /binlogbak.sh

脚本备份MySQL数据库和binlog日志的更多相关文章

  1. (转)Mysql数据库之Binlog日志使用总结

    使用mysqlbinlog提取二进制日志 原文:http://blog.csdn.net/leshami/article/details/41962243 MySQL binlog日志记录了MySQL ...

  2. Mysql数据库之Binlog日志使用总结

    binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了.下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理: 一.binlog日志介绍1)什么是binlo ...

  3. linux shell脚本备份mysql数据库

    #!/bin/sh # 备份数据库 # Mysql 用户名密码 MYSQL_USER=root MYSQL_PASS=root BACKUP_DIR=/data/backup/mysql DATA_D ...

  4. python 脚本备份 mysql 数据库到 OSS

    脚本如下: #!/usr/bin/python ########################################################### ################ ...

  5. (转)Mysql数据库之Binlog日志使用总结CentOS 7.x设置自定义开机启动,添加自定义系统服务

    Centos 系统服务脚本目录: /usr/lib/systemd/ 有系统(system)和用户(user)之分, 如需要开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即: li ...

  6. (转)Mysql数据库之Binlog日志使用总结Linux下用户组、文件权限详解

    Linux下用户组.文件权限详解 原文:http://blog.csdn.net/sdulibh/article/details/51566772 用户组 在linux中的每个用户必须属于一个组,不能 ...

  7. Windows系统定时备份MySQL数据库

    当一个网站投入使用时,定期备份数据库是必要的事.那么,在Windows系统上,我们该如何做呢? 如下语句可以实现备份及还原MySQL数据库: 备份MySQL数据库 mysqldump -uroot - ...

  8. 定时备份mysql数据库的shell脚本

    最近项目需要定时备份mysql数据库的数据,根据需求写了一份定时备份mysql数据库的脚本. -h mysql的地址  默认为localhost -P 端口号  默认为3306 -u 用户  默认为r ...

  9. Linux自动备份MySQL数据库脚本代码

    下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且会将备份文件通过gzip压缩.需要注意的是, ...

随机推荐

  1. python3在win10运行CGI

    痛苦是保持清醒最好的方式 --秦时明月·奶盖   CGI是什么 CGI是目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway interface),通用网关接口,它是一段 ...

  2. js--获取和设置css属性

    在这一章我们讲述一下如何通过js来操作css中的属性 1,首先,我们想获取元素的一些属性.例如innerHTML,value等值时,我们可以 var object=document.getELemen ...

  3. vector Construct

    #include<vector> #include<iostream> using namespace std; void Test(); void main() { ,,,, ...

  4. spark调优——数据倾斜

    Spark中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同的问题. 例如,reduce点一共要处理100万条数据,第 ...

  5. 跟UI自动化测试有关的技术

    大家都知道,针对UI的自动化技术一般要支持下列的东西: 1. 识别窗口   能够识别尽量多的窗口种类,支持尽量多的UI技术.比如Win32.WinForm.WPF以及WebPage(这个比较特殊,确切 ...

  6. python--io多路复用之select实现

    1.I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. 2.I/O多路复用避免阻塞在io上,原本为多进程或多线程来接收多 ...

  7. Xcode 创建.a和framework静态库(转)

    最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.iOS中的静 ...

  8. Common Substrings POJ - 3415 (后缀自动机)

    Common Substrings \[ Time Limit: 5000 ms\quad Memory Limit: 65536 kB \] 题意 给出两个字符串,要求两个字符串公共子串长度不小于 ...

  9. 验证码破解 | Selenium模拟登陆12306

    12306官网登录的验证码破解比较简单,验证码是常规的点触类型验证码,使用超级鹰识别率比较高. 思路: (1)webdriver打开浏览器: (2)先对整个屏幕截屏,通过标签定位找到验证码图片,并定位 ...

  10. JS线程机制与事件机制

    JS线程机制与事件机制 1.进程与线程 (1).定义: 进程:程序的一次执行,它占有一片独有的内存空间 CPU的基本调度单位,是程序执行的一个完整的流程 (2).进程与线程的关联 一个进程一般至少有一 ...