Mysql數據檢查備份腳本

#!/bin/bash

user=root
dateDIR=$(date -d "yesterday" +"%y-%m-%d")
mkdir -p /data/backup/mysql/data/$dateDIR

date +"%Y-%m-%d-%H:%M:%S"  >/data/backup/mysql/data/$dateDIR/MyISAMcheck.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/MyISAMcheck.log
date +"%Y-%m-%d-%H:%M:%S"  >/data/backup/mysql/data/$dateDIR/MyISAManalyze.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/MyISAManalyze.log
date +"%Y-%m-%d-%H:%M:%S"  >/data/backup/mysql/data/$dateDIR/MyISAMoptimize.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/MyISAMoptimize.log

date +"%Y-%m-%d-%H:%M:%S"  >/data/backup/mysql/data/$dateDIR/InnoDBcheck.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/InnoDBcheck.log
date +"%Y-%m-%d-%H:%M:%S"  >/data/backup/mysql/data/$dateDIR/InnoDBanalyze.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/InnoDBanalyze.log
date +"%Y-%m-%d-%H:%M:%S"  >/data/backup/mysql/data/$dateDIR/InnoDBoptimize.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/InnoDBoptimize.log

#刷新緩存中的日誌
mysqladmin -u$user -p123456 flush-logs

for db in $(mysql -u$user -p123456 -e "show databases" | grep -ve "Database" -ve "mysql" -ve "test" -ve "information_schema")
do
#數據庫中每個表的存儲引擎
    mysql -u$user -p123456 -e "show table status" -D "$db" | sed '1d' | awk '{print $1" "$2}' > table-engine_check.txt
#根據每個表不同的存儲引擎,進行修復和優化
       while read table engine
       do
         if [ "$engine" == "MyISAM" ] ; then
             mysqlcheck -u$user -p123456 -C -F -f --auto-repair --tables "$db" "$table" >> /data/backup/mysql/data/$dateDIR/MyISAMcheck.log ;
             mysql -u$user -p123456  -e "ANALYZE NO_WRITE_TO_BINLOG TABLE $db.$table;" |awk 'END{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'>> /data/backup/mysql/data/$dateDIR/MyISAManalyze.log;
             mysql -u$user -p123456  -e "OPTIMIZE NO_WRITE_TO_BINLOG TABLE $db.$table;"|awk 'END{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'>>/data/backup/mysql/data/$dateDIR/MyISAMoptimize.log;
         elif [ "$engine" == "InnoDB" ] ; then
             mysqlcheck -u$user -p123456 -C -F -f --auto-repair --tables "$db" "$table" >> /data/backup/mysql/data/$dateDIR/InnoDBcheck.log ;
             mysql -u$user -p123456  -e "ANALYZE NO_WRITE_TO_BINLOG TABLE $db.$table;" |awk 'END{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'>> /data/backup/mysql/data/$dateDIR/InnoDBanalyze.log;
             mysql -u$user -p123456  -e "OPTIMIZE NO_WRITE_TO_BINLOG TABLE $db.$table;"|awk 'END{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'>> /data/backup/mysql/data/$dateDIR/InnoDBoptimize.log;
         fi
       done < table-engine_check.txt
           
        #針對每個庫進行鎖表然後備份;將備份後的文件打包壓縮到指定目錄
        mysqldump -u$user -p123456 --default-character-set=utf8 --opt --lock-all-tables ${db}| gzip -9> /data/backup/mysql/data/$dateDIR/${db}_${dateDIR}.sql.gz
done

echo "***************************************" >>/data/backup/mysql/data/$dateDIR/MyISAMcheck.log
date +"%Y-%m-%d-%H:%M:%S"  >>/data/backup/mysql/data/$dateDIR/MyISAMcheck.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/MyISAManalyze.log
date +"%Y-%m-%d-%H:%M:%S"  >>/data/backup/mysql/data/$dateDIR/MyISAManalyze.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/MyISAMoptimize.log
date +"%Y-%m-%d-%H:%M:%S"  >>/data/backup/mysql/data/$dateDIR/MyISAMoptimize.log

echo "***************************************" >>/data/backup/mysql/data/$dateDIR/InnoDBcheck.log
date +"%Y-%m-%d-%H:%M:%S"  >>/data/backup/mysql/data/$dateDIR/InnoDBcheck.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/InnoDBanalyze.log
date +"%Y-%m-%d-%H:%M:%S"  >>/data/backup/mysql/data/$dateDIR/InnoDBanalyze.log
echo "***************************************" >>/data/backup/mysql/data/$dateDIR/InnoDBoptimize.log
date +"%Y-%m-%d-%H:%M:%S"  >>/data/backup/mysql/data/$dateDIR/InnoDBoptimize.log

rm -rf table-engine_check.txt
#刪除7天以前的全備份文件和目錄
find /data/backup/mysql/data/* -mtime +6 -type d -exec rm -rf {} \;>/dev/null 2>&1

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章