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

401efd52c9d55677d0f18f3e3281ba2d.png

作者:迷神

在企业的Liunx运维中,经常需要应用到各种shell脚本,比如MySQL数据库备份Shell脚本和Mysql主从同步监控Shell脚本等等常用企业运维shell脚本。。下面分享两例,希望对大家有帮助

Mysql数据库备份脚本(完整备份+异地备份)

Mysql数据库备份其实方法有很多,一般非超大量业务,可以使用 mysqldump 。Mysql数据库备份可以采用在MYSQL从库上执行全量备份+增量备份方式。注意,尽力选择服务器使用少的凌晨的时候进行备份,如果有主从的话,需要在从库中备份避免Mysql主库备份的时候锁表造成业务影响。

#!/bin/bash

set -e #错误时,便停止执行脚本

#数据库名,可以添加多个

DATABASES=(

"data01"

"data02"

)

USER="root"

PASSword="123456"

MAIL="123456@163.com"

BACKUP_DIR=/data/backup

LOGFILE=/data/backup/data_backup.log

DATE=`date +%Y%m%d_%H%M`

cd $BACKUP_DIR

#写入日记文件

echo "--------------------" >> $LOGFILE

echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE

echo "-------------------" >> $LOGFILE

for DATABASE in ${DATABASES};do

/usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD --events -R --opt $DATABASE |gzip >${BACKUP_DIR}/${DATABASE}_${DATE}.sql.gz

if [ $? == 0 ];then

echo "$DATE--$DATABASE is backup succeed" >> $LOGFILE

else

echo "Database Backup Fail!" >> $LOGFILE

fi

done

#全部成功就同步到异地备份服务器

if [ $? == 0 ];then

/usr/bin/rsync -zrtopg --delete /data/backup/* root@192.168.10.10:/data/backup/ >/dev/null 2>&1

else

echo "Database Backup Fail!" >> $LOGFILE

#备份失败后向管理者发送邮件提醒

mail -s "database Daily Backup Fail!" $MAIL

fi

#删除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.com

fi

if [ "$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.log

fi

好了,就这么多,有问题欢迎留言进行交流哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值