#!/bin/bash#=======================================================================================#  用于删除 MySQL Master 端已经同步完的 binlog【需在 Master 端运行】,以减少磁盘空间#  每天凌晨 5:30 分运行一次##  注:需在 Slave 端添加允许 Master 端访问的帐号【帐号:check_binlog,密码:binlog_2356】#     运行于 MySQL Master 端【目前只用于一主一从的同步模式,对于多从的情况暂时未考虑】#=======================================================================================PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin ## Slave端连接信息SLAVE_ADDR="XXX.XXX.XXX.XXX"SLAVE_USER="check_binlog"SLAVE_PWD="binlog_2356" LOGFILE="/data/logs/db_sync_info.log"PINGFILE="/tmp/mysqlping.log" ## MySQL状态信息查看命令SQLCMD="show slave status" #=======================================================================================## 检查MySQL是否已经运行if [[ `ps aux |grep mysql[d] |wc -l` -eq 0 ]];thenecho The MySQL is not running at: `date +%F" "%H-%M-%S` >> ${LOGFILE}exit 1fi ## 测试Slave端的连通性nohup mysqladmin -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD}ping > ${PINGFILE}retval=`grep "^error" ${PINGFILE}`rm -f ${PINGFILE}if [["${retval}X" !="X" ]];thenecho The MySQL Slave can not be connected at: `date +%F" "%H-%M-%S` >> ${LOGFILE}exit 1fi ## 检查是否合法的SlaveMASTER_ADDR=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e"${SQLCMD}\G;" |awk '$1=="Master_Host:" {print $2}'`LOCAL_ADDR=`/sbin/ifconfig eth1 |awk -F':' '/inet addr/{print $2}' |sed 's/[a-zA-Z ]//g'`if [["${MASTER_ADDR}" !="${LOCAL_ADDR}" ]];thenecho The MySQL Slave is not lawful at: `date +%F" "%H-%M-%S` >> ${LOGFILE}exit 1fi ## 获得Slave端信息,以此来确定是否处于正常同步的情况IO_STATUS=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e"${SQLCMD}\G;" |awk '$1=="Slave_IO_Running:" {print $2}'`SQL_STATUS=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e"${SQLCMD}\G;" |awk '$1=="Slave_SQL_Running:" {print $2}'`if [["${IO_STATUS}" !="Yes" ||"${SQL_STATUS}" !="Yes" ]];thenecho The MySQL Replication is not synchronous at: `date +%F" "%H-%M-%S` >> ${LOGFILE}exit 1fi ## 再做一次判断,以保证数据同步绝对正常【创建测试数据】mysql -uroot -e"create database if not exists mytestdb;"sleep 3 retval=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e"show databases;" |grep mytestdb`mysql -uroot -e"drop database if exists mytestdb;"if [["${retval}X" ="X" ]];thenecho The MySQL Replication is not synchronous at: `date +%F" "%H-%M-%S` >> ${LOGFILE}exit 1fi ## 在已经同步的情况,还需要判断当前同步的binlog,以此来确定哪些已经是过期的binlogSLAVE_BINLOG1=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e"${SQLCMD}\G;" |awk '$1=="Master_Log_File:" {print $2}'`SLAVE_BINLOG2=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e"${SQLCMD}\G;" |awk '$1=="Relay_Master_Log_File:" {print $2}'`## 获得Master端,当前的binlog文件以及binlog路径MASTER_BINLOG=`mysql -uroot -e"show master status;" |grep -v '^+' |tail -1 |awk '{print $1}'` ## 主从端已经同步到相同的binlogif [["${SLAVE_BINLOG1}" ="${SLAVE_BINLOG2}" &&"${SLAVE_BINLOG1}" ="${MASTER_BINLOG}" ]];thenCURR_BINLOG="${MASTER_BINLOG}" ## 主从端已经同步,但从端的binlog还没有追赶到主端最新的binlogelif [["${SLAVE_BINLOG1}" ="${SLAVE_BINLOG2}" &&"${SLAVE_BINLOG1}" !="${MASTER_BINLOG}" ]];thenCURR_BINLOG="${SLAVE_BINLOG1}" ## 主从端已经同步,主从端的binlog一致,但relaylog还不一致elif [["${SLAVE_BINLOG1}" !="${SLAVE_BINLOG2}" &&"${SLAVE_BINLOG1}" ="${MASTER_BINLOG}" ]];thenCURR_BINLOG="${SLAVE_BINLOG2}" elseecho Has noknown error at:`date +%F" "%H-%M-%S` >> ${LOGFILE}exit 1fi mysql -uroot -e"purge binary logs to '${CURR_BINLOG}';"if [[ $? -eq 0 ]];thenecho Clear MySQL binlog is ok at: `date +%F" "%H-%M-%S` >> ${LOGFILE}fi

mysql shell命令和作用_MySQL的一些功能实用的Linux shell脚本分享相关推荐

  1. mysql 脚本 linux_MySQL的一些功能实用的Linux shell脚本分享

    Memcached启动脚本 # vim /etc/init.d/memcached #!/bin/bash #============================================= ...

  2. 8则实用的Linux Shell命令

    8则实用的Linux Shell命令 1 为 man 手册创建 pdf 版本 man -t manpage | ps2pdf - filename.pdf 比如制作 ls 命令的 man 手册 pdf ...

  3. mysql的force的作用_mysql中force Index等一些不是很常用的sql优化介绍

    oracle的hint功能种类很多,对于优化sql语句提供了很多方法. 在mysql里,也有类似的hint功能. 下面为大家介绍一些比较常用的,供大家学习参考. 1.强制索引 FORCE INDEX ...

  4. win7下运行linux命令,win7系统32位旗舰版iso运行linux shell脚本的操作办法

    win7旗舰版是用户量最大的一款操作系统:有不少人在使用中都遇见了win7系统运行linux shell脚本的问题,对于电脑不太熟悉的朋友面对win7系统运行linux shell脚本便无计可施,其实 ...

  5. 100个实用的 Linux Shell 脚本经典案例,收藏备用~

    点击关注公众号,利用碎片时间学习 1)编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2)通过位 ...

  6. mysql grant命令详解_MySQL授权命令grant的使用方法详解

    本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant权限 on数据库对象 to用户 一.grant 普通数据用户,查询.插入.更新.删除 数 ...

  7. mysql js 命令行登录_MYSQL常用命令

    1.連接Mysql 格式: mysql -h主機地址 -u用戶名 -p用戶密碼 1.連接到本機上的MYSQL. 首先打開DOS窗口,然後進入目錄mysql\bin,再鍵入命令mysql -u root ...

  8. mysql数据库索引的作用_mysql数据库索引和引擎

    1. 数据库索引 1.1 索引作用 当我们在数据库表中查询数据时,若没有索引,会逐个遍历表格中的所有记录,表格中数据记录量大时很耗时.建立索引就像创建目录一样,直接通过索引找到数据存储位置,加快查找. ...

  9. mysql数据库优化的作用_MySQL数据库优化总结

    选择适当的字段类型,特别是主键 选择字段的一般原则是保小不保大,能用占用字节小的字段就不用大字段.比如主键, 我们强烈建议用自增类型,不用guid,为什么?省空间啊?空间是什么?空间就是效率!按4个字 ...

最新文章

  1. C++和Python,JSON文件的读取和保存
  2. Jon Wexler and adidas NMD R1 Primeknit Zebra Pack
  3. async和await理解代码
  4. 蒙特卡洛算法_MCMC、蒙特卡洛近似和Metropolis算法简介
  5. 成功 打不开_switch商店打不开怎么办?手把手教你用这五种方法成功进入eshop
  6. C:矩形相交、相包含、相离关系判断
  7. 多个apple苹果设备(iphone,mac,pad,icloud)之间同步数据
  8. 【HackerRank】Cut the tree
  9. linux 16.04系统下载,Ubuntu下载16.04_Ubuntu Desktop32位标准版 - 系统之家
  10. 蓝桥杯入门练习题斐波那契数列
  11. Linux进程中的RSS和VSZ
  12. Sql优化v-1.0
  13. midl会议_医学图像分析相关的会议
  14. Kanzi Shader入门
  15. iphone换android手机铃声,在iPhone中换个自定义铃声要11个步骤 正常人受不了
  16. 面经_OPPO研究院_数据科学研究员实习岗
  17. matlab kml批量转为shp文件,arcpy实现 kml批量转出为shp
  18. 准确性 敏感性 特异性_特异性图
  19. 题解 | Popping Balloons-2019牛客暑期多校训练营第十场F题
  20. 2020美赛C题解题思路(A Wealth of Data)

热门文章

  1. windows无法访问_注册CourseMaker之后无法登录,显示“网络无法访问……”,怎么办?...
  2. java 获取rss_如何使用java代码获取RSS中信息
  3. 部署 Job (第三部分)
  4. Ehcache小结(二)
  5. jenkins source files 和 Remove Prefix 用户
  6. Antd 多层Modal+Form组件嵌套 如何在父级组件中清空子级组件状态与数据?
  7. Android 快速实现微信支付(真的!很快!)
  8. java连接oracle失败_程序连接oracle数据库失败
  9. 离散信号频谱matlab代码,离散信号MATLAB频谱分析程序
  10. oracle aq hang,AQ: dequeue的时候hang住