天天看點

shell腳本案例-mysql備份腳本

案例需求

寫一個mysql binlog備份腳本,要求每天0點0分,計算機自動備份前一天的binlog日志,打包後發送給備份伺服器。

腳本應用場景:

檔案備份

解決問題

日常檔案備份

日常資料備份

腳本思路

1、确定binlog的位置及備份時間間隔 每天

目前要備份的binlog是誰

重新整理binlog日志,生成新的binlog用于存儲備份節點後的資料

2、打包binlog日志 以年-月-日_binlog.tar.gz格式

3、生成校驗碼 md5sum

4、将校驗碼和壓縮包存入到檔案夾 檔案夾命名 年-月-日 再次打包

5、使用scp拷貝到備份機器

實作代碼

#!/bin/bash
#Description: 
#Author: www.zutuanxue.com
#Created Time: 
#将mysql的binlog日志備份到備份伺服器


########variables
db_user='root'
db_password=''
log='/var/log/mysql_backup.log'



###main
#獲得資訊
binlog_dir='/var/lib/mysql'
current_binlog=`mysql -u $db_user -e "show master status"|egrep "binlog.[[:digit:]]*"|awk '{print $1}'`

date >> $log
#準備備份
#1 重新整理binlog    
mysql -u $db_user -e "flush logs"
#2 打包要備份的binlog
tar czf `date +%F`_binlog.tar.gz $binlog_dir/$current_binlog &>>$log
#3 生成校驗碼
md5sum `date +%F`_binlog.tar.gz > "`date +%F`_md5sum.txt"
#4 存入檔案夾
[ ! -d `date +%F` ]&&mkdir `date +%F`
mv  `date +%F`_binlog.tar.gz `date +%F`
mv `date +%F`_md5sum.txt `date +%F`

# 打包目錄
tar czf `date +%F`.tar.gz `date +%F` &>>$log

#5 拷貝
#要求提前做證書信任
scp `date +%F`.tar.gz [email protected]:/opt/backup &>>$log
if [ $? -ne 0 ];then
    echo "ERROR:scp `date +%F`.tar.gz fail" &>>$log
    exit 1
fi

#6 校驗
ssh [email protected] "tar xf /opt/backup/`date +%F`.tar.gz -C /opt"
#ssh [email protected] "cd /opt/backup`date +%F`"
ssh [email protected] "cd /opt/`date +%F`;md5sum -c `date +%F`_md5sum.txt" &>>$log
if [ $? -eq 0 ];then
   echo "success" &>>$log
   ssh [email protected] "rm -rf /opt/`date +%F`"
else
   echo "fail" &>>$log
fi
           

案例思考

雙機同步實作方式
           

繼續閱讀