#!/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