服务器之家

服务器之家 > 正文

一个简单的MySQL备份Shell脚本

时间:2020-05-14 14:31     来源/作者:MYSQL教程网

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

#!/bin/bash

#this is a script of mysql backup

if [ ! -d /mydata/data1/backup ] ;then

 mkdir /mydata/data1/backup

fi

cd /mydata/data1/backup

file=$(find . -type f -mtime -7 | grep .*all.sql)  #查找7天内是否有备份的文件

echo $file

if [ -z $file ] ;then

 echo "backup all databases..."

 backupfile=$(date +%F-%H-%M-%S)

 mysqldump -uroot --lock-all-tables --flush-logs --master-data=2 --all-databases > /mydata/data1/backup/"$backupfile-all.sql"

 if [ $? -eq 0 ] ;then

 echo "Accomplish,file is $backupfile-all.sql !"

 else

 echo " Failure !!! "

 fi

else                   #查找倒数第二大的二进制文件,作增量备份

 cd ..

 echo "All database backups ,now start doing incremental backups!"

    a=1

    b=1

    for file in $(ls |grep mysql-bin |grep -v index);do

        num=$(echo $file |cut -d. -f2 )

        if [ $num -gt $a ];then

            a=$num

        fi

    done

    unset num file

    num=1 

    for file in $(ls |grep mysql-bin |grep -v index);do

        num=$(echo $file |cut -d. -f2 )

        if [ $num -gt $b -a $num -ne $a ] ; then

            b=$num

            tmp=$file

        fi

    done

    file1=$(echo $tmp|cut -d. -f1)

    file2=$(echo $tmp|cut -d. -f2)

    mysqlbinlog $tmp > /mydata/data1/backup/"$file1-$file2.sql"

 if [ $? -eq 0 ] ;then

 echo "Backup completed,file is "$file1-$file2.sql""

 fi

fi

 

说明:此脚本每七天做一次完全备份,以后每天做一次增量备份,完全备份使用mysqldump客户端工具,增量备份使用mysqlbinlog备份其二进制日志文件。

相关文章

热门资讯

2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国 2021-05-08
返回顶部