#!/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
Mysql數據檢查備份腳本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
如果同事暗中傷害你,應該怎麼辦?
這個饅頭有餡
2019-02-24 13:59:08
職場中,抱怨越多的員工,越被領導瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序員被裁,應屆生卻能月薪 1.3 萬?這你能忍?
前端高達
2019-02-24 13:48:04
遇到到處蹭吃卻從不請客吃飯的主怎麼辦?
樑軍年
2019-02-24 13:26:35
MySQL数据库集群-PXC方案
wy53780
2020-04-23 13:55:07
《從0到1學習Flink》—— Flink 讀取 Kafka 數據批量寫入到 MySQL
zhisheng
2019-02-24 21:04:11
SpringBoot 填坑 (一) | CentOS7.4 環境下,表時間字段默認值設置失效
一個優秀的廢人
2019-02-24 15:33:55
mysql-存儲過程
雙子城
2019-02-24 13:43:57
jmeter學習指南之操作 mysql 數據庫
小強測試
2019-02-24 13:34:06
20190222全天的實驗
清歡難尋
2019-02-24 13:17:21
MongoDB索引優化詳解
geekpy
2019-02-24 14:20:06