mysql备份监控脚本

 建一系列目录用于监控和备份

su - mysql

cd /mysql_backup

mkdir backup.1 backup.2 backup.3 monitor_log scripts

定时备份

#!/bin/sh
db_user="user"
db_passwd="password"
db_host="localhost"
backup_dir="/mysql_backup/master_backup"
time="$(date +"%Y-%m-%d-%H-%M")"
# mysql, mysqldump and some other bin's path
MYSQL="/usr/local/mysql/bin/mysql"
MYSQLDUMP="/usr/local/mysql/bin/mysqldump"
MKDIR="/bin/mkdir"
RM="/bin/rm"
MV="/bin/mv"
GZIP="/bin/gzip"
# check the directory for store backup is writeable
test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0
# the directory for story the newest backup
test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/"
# get all databases
#all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')"
#for db in $all_db
#do
#$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd --skip-lock-tables --single-transaction $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz"
#done

$MYSQLDUMP -u$db_user -p$db_passwd --all-databases --opt --add-drop-database --add-drop-table --events --triggers --routines --default-character-set=utf8 --master-data=2 --single-transaction --complete-insert --quote-names --log-error=$backup_dir/mysqldump$time.log | $GZIP -9 > "$backup_dir/backup.0/$time.all_mysql.gz"

循环删除

#!/bin/sh
backup_dir="/mysql_backup/master_backup"
time="$(date +"%Y-%m-%d-%H-%M")"
MKDIR="/bin/mkdir"
RM="/bin/rm"
MV="/bin/mv"


test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/"
# delete the oldest backup
test -d "$backup_dir/backup.3/" && $RM -rf "$backup_dir/backup.3"
# rotate backup directory
for int in 2 1 0
do
if(test -d "$backup_dir"/backup."$int")
then
next_int=`expr $int + 1`
$MV "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int"
fi
done
exit 0;

备份binlog

#!/bin/bash
cd /mysqldata/master_data
find /mysqldata/master_data/ -name "mysql-bin*" -ctime 0 -exec cp {} /mysql_backup/master_backup/backup.1/ ;

监控

#!/bin/bash

cd /mysqldata/mysql_data

find /mysqldata/mysql_data/ -name "mysql-bin*" -ctime 0 -exec cp {} /mysql_backup/backup.1/ ;

-bash-4.1$

-bash-4.1$ cat /mysql_backup/scripts/mysql_processlist.sh

#!/bin/bash

pgm=`basename $0`

dir=`dirname $0`

YY=`date +%Y`

MM=`date +%m`

DD=`date +%d`

HH=`date +%H`

MI=`date +%M`

SS=`date +%S`

day=`date +%a`

today=`date +%Y%m%d_%H`

datafile="/mysql_backup/monitor_log/$today.txt"

echo `date` >> $datafile

echo "+------+-------+-------+-----+---------+------+-------+------------------------------+----------+" >> $datafile

echo "| Id   | User  | Host  | db  | Command | Time | State | Info                         | Progress |" >> $datafile

echo "+------+-------+-------+-----+---------+------+-------+------------------------------+----------+" >> $datafile

/usr/local/mysql/bin/mysql -uroot -plisx123 -e "show processlist ;" >> $datafile

echo "                                                                         " >> $datafile

echo "                                                                         " >> $datafile

echo "                                                                         " >> $datafile

echo "                                                                         " >> $datafile

/usr/local/mysql/bin/mysql -uroot -plisx123 -e "status ;" >> $datafile

echo "                                                                         " >> $datafile

echo "                                                                         " >> $datafile

echo "                                                                         " >> $datafile

echo "                                                                         " >> $datafile

原文地址:https://www.cnblogs.com/shiji888/p/10949813.html