MySQL日志,mysql日志備份的腳本_腳本備份MySQL數據庫和binlog日志

 2023-10-18 阅读 22 评论 0

摘要:用Mysqldump實現全庫備份+binlog的數據還原首先是為mysql做指定庫文件的全庫備份vim mysqlbak.sh#!/bin/bashMySQL日志,#定義數據庫目錄,要能找到mysqldumpmysqlDir=/usr#定義用于備份數據庫的用戶名和密碼user=rootuserpwd=123456mysql導出sql文件。

用Mysqldump實現全庫備份+binlog的數據還原

首先是為mysql做指定庫文件的全庫備份

vim mysqlbak.sh

#!/bin/bash

MySQL日志,#定義數據庫目錄,要能找到mysqldump

mysqlDir=/usr

#定義用于備份數據庫的用戶名和密碼

user=root

userpwd=123456

mysql導出sql文件。dbname=db1

#定義備份目錄

databackupdir=/mysqlbak

#定義郵件正文文件

emailfile=$databackupdir/email.txt

mysql快速備份數據庫,#定義郵件地址

email=www@163.com

#定義備份日志文件

logfile=$databackupdir/mysqlbackup.log

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

docker日志收集方案。DATE=`date -I`

echo "" > $emailfile

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

cd $databackupdir

#定義備份文件名

mysql備份表。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

#壓縮備份文件

MySQL 備份、if [ "$?" == 0 ];then

#把備份出來的文件進行壓縮,壓縮的結果保存在郵件內容中

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

echo "BackupFileName: $gzdumpfile" >> $emailfile

echo "DataBase Backup Success!" >> $emailfile

mysql創建數據庫、#刪除壓縮前的sql文件

rm -rf $dumpfile

else

echo "Database Backup Fail!" >> $emailfile

fi

備份數據庫的sql語句?#寫日志文件

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

cat $emailfile >> $logfile

#發送郵件通知

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

MySQL binlog,以上腳本執行后會在備份目錄中產生一個tar.gz的文件,此文件為全庫備份文件,備份成功后給指定的郵箱地址發送郵件,收件內容為截圖內容為備份成功!

0febc02a5613b6ab8203c628f1a7dfd6.png

接下來是binlog日志的備份腳本

vim binlogbak.sh

#!/bin/bash

#定義數據庫目錄和數據目錄

mysql數據庫備份方法?mysqldir=/usr/local/mysql

datadir=$mysqldir/binlog

#定義用于備份數據庫的用戶名和密碼

user=root

userpwd=123456

mysql數據庫定時每天備份、#定義備份目錄

databackupdir=/mysqlbak

logbackupdir=$databackupdir/logs

#定義郵件正文文件

emailfile=$databackupdir/email.txt

redis數據庫備份命令,#定義郵件地址

email=www@163.com

#定義備份日志文件

logfile=$databackupdir/mysqlbackup.log

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

mysqldump導入數據庫?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日志,文件每日是前一天的增量備份文件,備份成功后給指定的郵箱地址發送郵件,收件內容為截圖內容為備份成功!

881726b124146dd7e63818603d4d7ff0.png

編寫計劃任務自動執行,每周1,3,24點全庫備份,每天夜里1點日志備份

crontab -e

0 00 * * 1,3 /mysqlbak.sh

0 1 * * * /binlogbak.sh

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/148744.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息