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

作者:迷神

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

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

#!/bin/bash set -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.gz if [ $? == 0 ];then echo '$DATE--$DATABASE is backup succeed' >> $LOGFILE else echo 'Database Backup Fail!' >> $LOGFILE fidone#全部成功就同步到异地备份服务器if [ $? == 0 ];then /usr/bin/rsync -zrtopg --delete /data/backup/* root@192.168.10.10:/data/backup/ >/dev/null 2>&1else echo '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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值