1. #!/bin/sh
  2. #ocpyang@126.com
  3. #repdelay.sh
  4. #查看复制延迟详细多少event
  5.  
  6. #####1.juede the rep slave status
  7.  
  8. export black='\033[0m'
  9. export boldblack='\033[1;0m'
  10. export red='\033[31m'
  11. export boldred='\033[1;31m'
  12. export green='\033[32m'
  13. export boldgreen='\033[1;32m'
  14. export yellow='\033[33m'
  15. export boldyellow='\033[1;33m'
  16. export blue='\033[34m'
  17. export boldblue='\033[1;34m'
  18. export magenta='\033[35m'
  19. export boldmagenta='\033[1;35m'
  20. export cyan='\033[36m'
  21. export boldcyan='\033[1;36m'
  22. export white='\033[37m'
  23. export boldwhite='\033[1;37m'
  24.  
  25. cecho ()
  26.  
  27. ## -- Function to easliy print colored text -- ##
  28.  
  29. # Color-echo.
  30. # 參数 $1 = message
  31. # 參数 $2 = color
  32. {
  33. local default_msg="No message passed."
  34.  
  35. message=${1:-$default_msg} # 假设$1没有输入则为默认值default_msg.
  36. color=${2:-black} # 假设$1没有输入则为默认值black.
  37.  
  38. case $color in
  39. black)
  40. printf "$black" ;;
  41. boldblack)
  42. printf "$boldblack" ;;
  43. red)
  44. printf "$red" ;;
  45. boldred)
  46. printf "$boldred" ;;
  47. green)
  48. printf "$green" ;;
  49. boldgreen)
  50. printf "$boldgreen" ;;
  51. yellow)
  52. printf "$yellow" ;;
  53. boldyellow)
  54. printf "$boldyellow" ;;
  55. blue)
  56. printf "$blue" ;;
  57. boldblue)
  58. printf "$boldblue" ;;
  59. magenta)
  60. printf "$magenta" ;;
  61. boldmagenta)
  62. printf "$boldmagenta" ;;
  63. cyan)
  64. printf "$cyan" ;;
  65. boldcyan)
  66. printf "$boldcyan" ;;
  67. white)
  68. printf "$white" ;;
  69. boldwhite)
  70. printf "$boldwhite" ;;
  71. esac
  72. printf "%s\n" "$message"
  73. tput sgr0 # tput sgr0即恢复默认值
  74. printf "$black"
  75.  
  76. return
  77. }
  78.  
  79. cechon ()
  80.  
  81. # Color-echo.
  82. # 參数1 $1 = message
  83. # 參数2 $2 = color
  84. {
  85. local default_msg="No message passed."
  86. # Doesn't really need to be a local variable.
  87.  
  88. message=${1:-$default_msg} # 假设$1没有输入则为默认值default_msg.
  89. color=${2:-black} # 假设$1没有输入则为默认值black.
  90.  
  91. case $color in
  92. black)
  93. printf "$black" ;;
  94. boldblack)
  95. printf "$boldblack" ;;
  96. red)
  97. printf "$red" ;;
  98. boldred)
  99. printf "$boldred" ;;
  100. green)
  101. printf "$green" ;;
  102. boldgreen)
  103. printf "$boldgreen" ;;
  104. yellow)
  105. printf "$yellow" ;;
  106. boldyellow)
  107. printf "$boldyellow" ;;
  108. blue)
  109. printf "$blue" ;;
  110. boldblue)
  111. printf "$boldblue" ;;
  112. magenta)
  113. printf "$magenta" ;;
  114. boldmagenta)
  115. printf "$boldmagenta" ;;
  116. cyan)
  117. printf "$cyan" ;;
  118. boldcyan)
  119. printf "$boldcyan" ;;
  120. white)
  121. printf "$white" ;;
  122. boldwhite)
  123. printf "$boldwhite" ;;
  124. esac
  125. printf "%s" "$message"
  126. tput sgr0 # tput sgr0即恢复默认值
  127. printf "$black"
  128.  
  129. return
  130. }
  131.  
  132. ####2.jude the rep delay status
  133.  
  134. #configure rep master and slave env
  135.  
  136. masterhost="192.168.99.137"
  137. slavehost="192.168.1.220"
  138. mysql_user=root #mysql的username
  139. mysql_pass='123' #mysql的登录用户password
  140.  
  141. SQLresponse=`mysql -h${slavehost} -u${mysql_user} -p${mysql_pass} mysql -e "show slave status \G" |grep '\<Slave_SQL_Running\>'|awk '{print $2}'`
  142. IOresponse=`mysql -h${slavehost} -u${mysql_user} -p${mysql_pass} mysql -e "show slave status \G" |grep '\<Slave_IO_Running\>'|awk '{print $2}'`
  143. Behind=`mysql -h${slavehost} -u${mysql_user} -p${mysql_pass} mysql -e "show slave status \G" |grep '\<Seconds_Behind_Master\>'|awk '{print $2}'`
  144.  
  145. if [ "$SQLresponse" = "No" ]; then
  146. echo " "
  147. error="mysqlserver($slavehost)的复制已经停止工作:Slave_SQL_Running: No;无法获取复制延迟情况."
  148. cechon "${error}" red
  149. echo " "
  150. exit 0
  151.  
  152. fi
  153.  
  154. if [ "$IOresponse" = "No" ]; then
  155. echo " "
  156. error="mysqlserver($slavehost)的复制已经停止工作:Slave_IO_Running: No;无法获取复制延迟情况."
  157. cechon "${error}" red
  158. echo " "
  159. exit 0
  160.  
  161. fi
  162.  
  163. #set mysql evn
  164. MYSQL_USER_MASTER=root
  165. MYSQL_PASS_MASTER='123'
  166. MYSQL_HOST_MASTER=192.168.99.137
  167.  
  168. MYSQL_USER_SLAVE=root
  169. MYSQL_PASS_SLAVE='123'
  170. MYSQL_HOST_SLAVE=192.168.1.220
  171.  
  172. tmpfile_01="tmp01.`date +%Y%m%d%H%M%S`.txt"
  173. tmpfile_02="tmp02.`date +%Y%m%d%H%M%S`.txt"
  174. mysql -h${MYSQL_HOST_MASTER} -u${MYSQL_USER_MASTER} -p${MYSQL_PASS_MASTER} -e"SHOW BINARY LOGS;" >${tmpfile_01}
  175. mysql -h${MYSQL_HOST_SLAVE} -u${MYSQL_USER_SLAVE} -p${MYSQL_PASS_SLAVE} -e"SHOW SLAVE STATUS\G;" >${tmpfile_02}
  176.  
  177. #tail -1 ${tmpfile_01} | grep -v "Log_name"
  178. #cat ${tmpfile_02} | grep -E 'Master_Log_File|Read_Master_Log_Pos|Exec_Master_Log_Pos' | grep -v "Relay_Master_Log_File" |sed 's/^[ ]*//g'
  179. a=`tail -1 ${tmpfile_01} | grep -v "Log_name" |awk '{print $1}'|awk -F "." '{print $2}'`
  180. b=`sed -n "/\<Relay_Master_Log_File\>/p" ${tmpfile_02} |sed 's/^[ ]*//g' |awk -F ":" '{print $2}'|awk -F "." '{print $2}'`
  181. bhtime=`sed -n "/\<Seconds_Behind_Master\>/p" ${tmpfile_02} |sed 's/^[ ]*//g' |awk -F ":" '{print $2}'`
  182.  
  183. if [ "$b" = "$a" ];then
  184. c=`tail -1 ${tmpfile_01} | grep -v "Log_name" |awk '{print $2}'`
  185. d=`sed -n "/\<Read_Master_Log_Pos\>/p" ${tmpfile_02} |sed 's/^[ ]*//g' |awk -F ":" '{print $2}'`
  186. k=`sed -n "/\<Exec_Master_Log_Pos\>/p" ${tmpfile_02} |sed 's/^[ ]*//g' |awk -F ":" '{print $2}'`
  187. e=`expr $c - $d`
  188. dfevt=`expr $d - $k`
  189. if [ "${e}" -eq 0 -a "${bhtime}" -eq 0 -a "${k}" -eq 0 ] ; then
  190. echo "*****************************************************************************"
  191. echo -e "\e[1;31m &&&&&&&Synchronization has been completed!&&&&&&& \e[0m"
  192. echo "*****************************************************************************"
  193. elif [ "${e}" -eq 0 -o "${bhtime}" -gt 0 ] ; then
  194. echo "*****************************************************************************"
  195. echo -e "\e[1;31m Has been synchronized to the same log file! Wait a moment \e[0m"
  196. echo -e "\e[1;31m Not synchronized binlog events is:${dfevt},behind master tims is ${bhtime} \e[0m"
  197. echo "*****************************************************************************"
  198. fi
  199.  
  200. elif [ ${b} -lt ${a} ];then
  201. exbin=`sed -n "/\<Exec_Master_Log_Pos\>/p" ${tmpfile_02} |sed 's/^[ ]*//g' |awk -F ":" '{print $2}'`
  202. y=`sed -n "/\<Relay_Master_Log_File\>/p" ${tmpfile_02} |sed 's/^[ ]*//g' |awk -F ":" '{print $2}'`
  203. #u=`awk '{if($1~/'''''$y'''''/ ) print NR}' ${tmpfile_01}`
  204. u=`grep -n "$y" ${tmpfile_01}|awk -F: '{print $1'}`
  205. x=`awk 'NR>='''$u''' { print $0}' ${tmpfile_01}|awk 'BEGIN{total=0}{total+=$2}END{print total}' `
  206. re=`expr $x - $exbin`
  207. echo -e "\e[1;31m There are multiple log files are not synchronized,the events is:${re} \e[0m"
  208. fi
  209.  
  210. rm -rf ${tmpfile_01}
  211.  
  212. rm -rf ${tmpfile_02}

mysql复制延迟监控脚本的更多相关文章

  1. MySQL至TiDB复制延迟监控

    因生产环境mysql中有较多复杂sql且运行效率低,因此采用tidb作为生产环境的从库进行部分慢sql及报表的读写分离.其中MySQL至TIDB采用Syncer工具同步.关于TIDB的安装及Synce ...

  2. MySQL慢日志监控脚本实例剖析

    公司线上的 MySQL 慢日志,之前一直没有做好监控.趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下. 针对脚本的注解和整体构思,我会放到脚本之后为大家详解. 1 2 3 ...

  3. pt-heartbeat工具监控MySQL复制延迟

    pt-heartbeat工作原理: 1,在主库上的某个数据库A中创建一张heartbeat表,按照一定的时间频率更新该表的字段(把时间更新进去). 2,从主库连接到从上的这个数据库A中检查复制的时间记 ...

  4. mysql复制延迟排查

    今天收到报警,提示从库延时,首先当然是上去查看情况,首先查看机器负载,如下: 可以看到使用cpu已经100%,io没有等待.那么查看mysql是什么情况,执行show processlist没有发现任 ...

  5. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...

  6. MySQL复制中slave延迟监控

    在MySQL复制环境中,我们通常只根据 Seconds_Behind_Master 的值来判断SLAVE的延迟.这么做大部分情况下尚可接受,但并不够准确,而应该考虑更多因素. 首先,我们先看下SLAV ...

  7. MySQL 5.7--复制延迟监控

    ========================================== SHOW PROCESSLIST方式 为保证二进制日志在从库的执行时间和顺序的正确性,二进制日志中的每个语句都设置 ...

  8. MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟

    本来MySQL BINLOG和mysqldump命令属于八竿子打不着的两个事物,但在最近故障排查中,发现主库和从库已经存在很严重的复制延迟,但从库上显示slave_behind_master值为0,复 ...

  9. [MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7

    一.缘由: 某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下. 一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) ----->IO Thread (从) - ...

随机推荐

  1. 背景渐变 background-image:linear-gradient(0deg,#fff,#ccc);

    背景渐变 background-image:linear-gradient(0deg,#fff,#ccc);

  2. CE工具里自带的学习工具--第五关

    图解: 此时会弹出一个对话框,选择是就可以了,最终会看到:

  3. CAD参数绘制多行文字(com接口)

    在CAD设计时,需要绘制多行文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawMText 绘制一个多行文字.详细说明如下: 参数 说明 DOUBLE dP ...

  4. C++ 线程同步的四种方式

    程之间通信的两个基本问题是互斥和同步. (1)线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒. (2)线程互 ...

  5. JavaSE-11 接口

    学习要点 接口的定义 接口作为约定 接口作为能力 接口 为什么使用接口 需求描述 要求实现防盗门的功能(防盗门:带锁的门). 需求分析 门有“开”和“关”的功能,锁有“上锁”和“开锁”的功能. 将门和 ...

  6. 第1节 yarn:14、yarn集群当中的三种调度器

    yarn当中的调度器介绍: 第一种调度器:FIFO Scheduler  (队列调度器) 把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源 ...

  7. [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)

    最近有个任务:利用 RNN 进行句子补全,即给定一个不完整的句子,预测其后续的字词.本文使用了 Seq2Seq 模型,输入为5个中文字词,输出为一个中文字词. 目录 关于RNN 语料预处理 搭建数据集 ...

  8. [bzoj2806][Ctsc2012]Cheat(后缀自动机(SAM)+二分答案+单调队列优化dp)

    偷懒直接把bzoj的网页内容ctrlcv过来了 2806: [Ctsc2012]Cheat Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1943   ...

  9. JavaScript关键字

    JavaScript关键字 制作人:全心全意 abstract continue finally instanceof private this boolean default float int p ...

  10. buf.values()

    buf.values() 返回:{Iterator} 创建并返回一个包含 Buffer 值(字节)的迭代器.当 Buffer 使用 for..of 声明时将自动调用该函数. const buf = B ...