您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

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

时间:2020-12-18 11:20:06  来源:  作者:


作者:迷神

在企业的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

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



Tags:Mysql   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
在企业的Liunx运维中,经常需要应用到各种shell脚本,比如Mysql数据库备份Shell脚本和Mysql主从同步监控Shell脚本等等常用企业运维shell脚本。。下面分享两例,希望对大家有帮助...【详细内容】
2020-12-18   Mysql  点击:(0)  评论:(0)  加入收藏
环境介绍:&emsp;CentOS 7.5&emsp;Mysql 5.7.29&emsp;Mysql主服务器:192.168.2.128&emsp;Mysql从服务器:192.168.2.129Mysql主从同步原理:&emsp;当master服务器上的数据发生改变...【详细内容】
2020-12-18   Mysql  点击:(2)  评论:(0)  加入收藏
mysqld_exporter是Prometheus用于监控MySQL指标的一个导出器,支持对MySQL 5.5以上进行监控。用来抓取mysql的相关信息,下面是mysqld_exporter 安装的相关信息 环境: 192.168.31...【详细内容】
2020-12-17   Mysql  点击:(2)  评论:(0)  加入收藏
有一些小伙伴说更新一些 sql 的基本内容。那我先说说 mysql 的安装和部署吧,我一般都使用解压版本的,不喜欢安装那么多东西。一、下载 mysql 压缩版并解压 (如:D:\mysql-8.0.17-...【详细内容】
2020-12-14   Mysql  点击:(7)  评论:(0)  加入收藏
背景本方案解决了windows下安装MySQL过程繁琐的问题。 是真正的免安装绿色方法,不用配环境变量,不用执行install命令,不用配置my.ini文件。步骤下载下载mysql-8.0.22-winx64.zi...【详细内容】
2020-12-14   Mysql  点击:(5)  评论:(0)  加入收藏
很多同学在面试中会被问到数据库的问题,而常被问到的一个问题就是:MySQL 中的 InnoDB 和 MyISAM 之间是什么关系,分别有什么特点?许多同学都把 MySQL 作为自己的数据库,但是可能...【详细内容】
2020-12-08   Mysql  点击:(8)  评论:(0)  加入收藏
需求在一些项目现场,很多时候,都是缺少专门的数据库运维人员的,但是开发人员开发项目,又需要用到MySQL数据库服务器,而且不同的项目的数据库又要分开项目需求解决方案对于非数据...【详细内容】
2020-12-01   Mysql  点击:(8)  评论:(0)  加入收藏
前言看完本文,删库跑路!? 再也不可能发生了!一定要养成风险操作备份数据的习惯,避免恢复数据浪费时间。本文内容: binlog 的作用 mysqldump 和 mysqlbinlog 做数据备份和数据恢复...【详细内容】
2020-11-30   Mysql  点击:(4)  评论:(0)  加入收藏
大家好,我是历小冰,今天我们来学习和吐槽一下 MySQL 的 Join 功能。关于MySQL 的 join,大家一定了解过很多它的“轶事趣闻”,比如两表 join 要小表驱动大表,阿里开发者规范禁止三...【详细内容】
2020-11-27   Mysql  点击:(11)  评论:(0)  加入收藏
服务启动和停止 停止数据库服务net stop mysql 开启数据库服务net start mysql数据库相关操作连接数据库mysql -uroot -p 密码修改密码alter user &#39;root&#39;@&#39;loc...【详细内容】
2020-11-24   Mysql  点击:(8)  评论:(0)  加入收藏
上一次吊打各种树这篇文章 堂主柠檬带大家学习一遍数据结构中的各种树,对数据结构还不够熟悉的同学,那篇文章可以作为基础入门,我画了很多图理解起来不困难,建议回头先学习下那...【详细内容】
2020-11-23   Mysql  点击:(6)  评论:(0)  加入收藏
前言为了避免删库跑路的事情,权限管理和数据备份是必要。机器环境 mysql 8.0.21 x86_64 MySQL Community Serve centos 7Mysql 权限管理Mysql 8.0 可以创建角色,然后将操作...【详细内容】
2020-11-23   Mysql  点击:(5)  评论:(0)  加入收藏
MySQL 8 之前,使用的动态变量不是永久性的,并且在重启后会重置。可在运行时使用 SET 语句更改这些变量,以影响当前实例的操作,但是我们必须手动更新 my.cnf 配置文件以使其持久化。...【详细内容】
2020-11-19   Mysql  点击:(6)  评论:(0)  加入收藏
为什么现在大部分互联网公司使用的数据库是MySQL?还真是这样哦,我的网站使用的是mysql数据库,我所在公司的网站也是使用的mysql数据库,我的很多客户网站也都是使用的mysql数据库...【详细内容】
2020-11-16   Mysql  点击:(9)  评论:(0)  加入收藏
很多时候在日常的项目中,有些数据是不允许重复的,例如用户信息中的登陆名,一旦存在同一个登陆名,必然不知道到底是哪个用户执行登陆操作,导致系统异常。常常在防止数据重复的情况...【详细内容】
2020-11-16   Mysql  点击:(10)  评论:(0)  加入收藏
我们都知道现在mysql开源数据库是我们现在小型网站使用较多的免费数据库,我们在创建数据表时容易出现表名出现有问题需要修改,今天在这里教大家利用Sql语句来修改表名的方法:本...【详细内容】
2020-11-12   Mysql  点击:(8)  评论:(0)  加入收藏
MGR简介MySQL Group Replication,简称MGR,它是MySQL官方推出的基于paxos分布式一致性协议的状态机复制,实现了分布式下数据的最终一致性。同时MGR提供了高可用、高扩展、高可靠...【详细内容】
2020-11-12   Mysql  点击:(18)  评论:(0)  加入收藏
前言首发公众号:bigsai 头条号:程序员bigsai 还请关注、一键三连!对于Web来说,用户量和访问量在一定程度上推动项目技术和架构的更迭和进步。可能会有以下的一些状况: 页面并发量...【详细内容】
2020-11-10   Mysql  点击:(4)  评论:(0)  加入收藏
总结下之前看到的一些关于MySQL索引原理的内容,好记性不如烂笔头。1. B+树我们知道InnoDB的索引是以B+树的形式组织的。B+树是一种树数据结构,是一个n叉树,每个节点通常有多个...【详细内容】
2020-11-10   Mysql  点击:(6)  评论:(0)  加入收藏
MYSQL内部模块连接器(JDBC、ODBC等) =>[MYSQL 内部[Connection Pool] (授权、线程复用、连接限制、内存检测等)=>[SQL Interface] (DML、DDL、Views等) [Parser] (Query Tra...【详细内容】
2020-11-10   Mysql  点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条