服务器之家

服务器之家 > 正文

一个简单的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备份其二进制日志文件。

相关文章

热门资讯

歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部