生产环境下shell脚本:Mysql数据库备份和Mysql主从同步监控


生产环境下shell脚本:Mysql数据库备份和Mysql主从同步监控

文章插图
作者:迷神
在企业的Liunx运维中,经常需要应用到各种shell脚本,比如MySQL数据库备份Shell脚本和Mysql主从同步监控Shell脚本等等常用企业运维shell脚本 。。下面分享两例,希望对大家有帮助
Mysql数据库备份脚本(完整备份+异地备份)Mysql数据库备份其实方法有很多,一般非超大量业务,可以使用 mysqldump。Mysql数据库备份可以采用在MYSQL从库上执行全量备份+增量备份方式 。注意,尽力选择服务器使用少的凌晨的时候进行备份,如果有主从的话,需要在从库中备份避免Mysql主库备份的时候锁表造成业务影响 。
#!/bin/bashset -e#错误时,便停止执行脚本#数据库名,可以添加多个DATABASES=("data01""data02")USER="root"PASSword="123456"MAIL="123456@163.com"BACKUP_DIR=/data/backupLOGFILE=/data/backup/data_backup.logDATE=`date +%Y%m%d_%H%M`cd $BACKUP_DIR#写入日记文件echo "--------------------" >> $LOGFILEecho "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILEecho "-------------------" >> $LOGFILEfor DATABASE in ${DATABASES};do/usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD --events-R --opt$DATABASE |gzip >${BACKUP_DIR}/${DATABASE}_${DATE}.sql.gzif [ $? == 0 ];thenecho "$DATE--$DATABASE is backup succeed" >> $LOGFILEelseecho "Database Backup Fail!" >> $LOGFILEfidone#全部成功就同步到异地备份服务器if [ $? == 0 ];then/usr/bin/rsync -zrtopg--delete/data/backup/* root@192.168.10.10:/data/backup/>/dev/null 2>&1elseecho "Database Backup Fail!" >> $LOGFILE#备份失败后向管理者发送邮件提醒mail -s "database Daily Backup Fail!" $MAILfi#删除30天以上的备份文件find $BACKUP_DIR-type f -mtime +30 -name "*.gz" -exec rm -f {} ;这里使用的是 rsync 进行同步,但是实际生产过程中,大家也可以使用 scp 或者 ftp之类的都可以的 。根据实际需要进行处理
Mysql主从同步监控邮件报警脚本监控MySQL主从同步是否正常运行 。主要是看Slave机器的IO和SQL状态都必须为YES,缺一不可,这里用到了多重条件判断 。加入到计划任务,可以10分钟一次,根据实际需要,如果有一个不是YES,那就可以通过邮件通知,实际的,大家也可以通过其他的方式,比如微信,短信等等 。
#!/bin/bash#查找mysql端口是否存在 。MYSQLPORT='netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}''MYSQLIP='ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}''#mysql登陆查看从库状态STATUS=$(/usr/local/mysql/bin/mysql -u dbuser -dbpwd123 -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running")IO_env='echo $STATUS | grep IO | awk ' {print $2}''SQL_env='echo $STATUS | grep SQL | awk '{print $2}''if [ "$MYSQLPORT" == "3306" ]then echo "mysql is running"else mail -s "warn!server: $MYSQLIP mysql is down" magedu@gmail.comfiif [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]then echo "Slave is running!"else echo "####### $date #########">> /data/log/check_mysql_slave.log echo "Slave is not running!" >> /data/log/check_mysql_slave.log mail -s "warn! $MySQLIP_replicate_error" magedu@gmail.com << /data/log/check_mysql_slave.logfi好了,就这么多,有问题欢迎留言进行交流哦 。

【生产环境下shell脚本:Mysql数据库备份和Mysql主从同步监控】


    推荐阅读