mysql全量备份与增量备份_Mysql增量备份与全量备份

本文详细介绍了如何使用mysqldump进行全量备份和利用binlog日志进行增量备份,以及如何恢复MySQL数据库。通过设置my.cnf启用binlog,创建备份脚本,利用crontab定时执行,确保数据安全。在日常运维中,定期备份能有效防止数据丢失,便于快速恢复。
摘要由CSDN通过智能技术生成

mysqldump备份及binlog日志恢复

详情: http://blog.51cto.com/hongge/1862214

1.首先确保已开启binlog日志功能。在my.cnf中包含下面的配置以启用二进制日志:

[mysqld]

log-bin=mysql-bin

2.创建两份脚本文件,一份为增量备份的脚本文件,另一份为全量备份的脚本文件。

//脚本文件放这里

//全量备份脚本start

#!/bin/bash

# Program

# use mysqldump to Fully backup mysql data per week!# History

# Path

BakDir=/home/mysql/backup

LogFile=/home/mysql/backup/bak.log

Date=`date +%Y%m%d`

Begin=`date +"%Y年%m月%d日 %H:%M:%S"`

cd $BakDir

DumpFile=$Date.sql

GZDumpFile=$Date.sql.tgz/usr/bin/mysqldump -uroot -proot --quick --events --all-databases --flush-logs --delete-master-logs --single-transaction >$DumpFile

#↑这边放置你的 mysqldump所在地址并加上你连接数据库的账号密码/bin/tar -zvcf $GZDumpFile $DumpFile/bin/rm$DumpFile

Last=`date +"%Y年%m月%d日 %H:%M:%S"`echo 开始:$Begin 结束:$Last $GZDumpFile succ >>$LogFile

cd $BakDir/daily/bin/rm -f *

//全量备份脚本end

//增量备份脚本start

#!/bin/bash

# Program

# usecp to backup mysql data everyday!# History

# Path

#//增量备份时复制mysql-bin.00000*的目标目录,提前手动创建这个目录

BakDir=/home/mysql/backup/daily #备份地址

BinDir=/var/lib/mysql

LogFile=/home/mysql/backup/bak.log #日志地址

BinFile=/var/lib/mysql/mysql-bin.index 获取mysql里的 mysql-bin.index/usr/bin/mysqladmin -uroot -proot flush-logs

#↑获取mysql里的mysqladmin,并填写数据库账户名和密码。(mysqladmin跟全量备份的mysqldump位置一样)

#这个是用于产生新的mysql-bin.00000*文件

Counter=`wc -l $BinFile |awk '{print $1}'`

NextNum=0#这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的for file in `cat$BinFile`dobase=`basename $file`

#basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./NextNum=`expr $NextNum + 1`if [ $NextNum -eq $Counter ]then

echo $base skip! >>$LogFileelsedest=$BakDir/$baseif(test -e $dest)

#test-e用于检测目标文件是否存在,存在就写exist!到$LogFile去then

echo $base exist! >>$LogFileelse

cp $BinDir/$base $BakDirecho $base copying >>$LogFilefi

fi

done

echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup succ! >> $LogFile

//增量备份脚本end

3.将脚本保存到任意位置,比如root文件中

4.设置crontab任务,执行备份脚本。先执行的是增量备份脚本,然后执行的是全量备份脚本:

[root@test-huanqiu ~]# crontab -e

#每个星期日凌晨3:00执行完全备份脚本

0 3 * * 0 /bin/bash -x /root/Mysql-FullyBak.sh >/dev/null 2>&1

#周一到周六凌晨3:00做增量备份

0 3 * * 1-6 /bin/bash -x /root/Mysql-DailyBak.sh >/dev/null 2>&1

#↑脚本路径必须填对

5.测试增量备份与全量备份脚本

先执行增量备份脚本

[root@test-huanqiu backup]# sh /root/Mysql-DailyBak.sh

[root@test-huanqiu backup]# ll

total 8

-rw-r--r--. 1 root root 121 Nov 29 11:29 bak.log

drwxr-xr-x. 2 root root 4096 Nov 29 11:29 daily

[root@test-huanqiu backup]# ll daily/

total 8

-rw-r-----. 1 root root 152 Nov 29 11:29 mysql-binlog.000030

-rw-r-----. 1 root root 152 Nov 29 11:29 mysql-binlog.000031

[root@test-huanqiu backup]# cat bak.log

mysql-binlog.000030 copying

mysql-binlog.000031 copying

mysql-binlog.000032 skip!

2016年11月29日 11:29:32 Bakup succ!

然后执行全量备份脚本

[root@test-huanqiu backup]# sh /root/Mysql-FullyBak.sh

20161129.sql

[root@test-huanqiu backup]# ll

total 152

-rw-r--r--. 1 root root 145742 Nov 29 11:30 20161129.sql.tgz

-rw-r--r--. 1 root root 211 Nov 29 11:30 bak.log

drwxr-xr-x. 2 root root 4096 Nov 29 11:30 daily

[root@test-huanqiu backup]# ll daily/

total 0

[root@test-huanqiu backup]# cat bak.log

mysql-binlog.000030 copying

mysql-binlog.000031 copying

mysql-binlog.000032 skip!

2016年11月29日 11:29:32 Bakup succ!

开始:2016年11月29日 11:30:38 结束:2016年11月29日 11:30:38 20161129.sql.tgz succ

在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据。

转自: https://blog.csdn.net/u011746446/article/details/79468977

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值