用于失败的从属AWS服务器的度量标准

时间:2018-04-03 06:39:15

标签: mysql amazon-web-services amazon-rds amazon-cloudwatch master-slave

我在独立数据中心的服务器上运行主服务器,在AWS中运行从服务器。

复制失败并出现此错误:“主服务器上发生LOST_EVENTS事件。消息:写入二进制日志时出错”。

上次脱机时,它从4k字节/秒的写入吞吐量跃升至40k,并在几周内稳步上升至252k。

1)我想知道为什么在失败后写入吞吐量会稳定增加?

2)我想知道在cloudwatch失败的情况下,可以在cloudwatch中使用什么指标来创建SNS电子邮件?现在,我认为最好的办法是在主服务器上运行一个简单的bash脚本,将Master_Log_File与Relay_Master_Log_File在'show slave status'上进行比较。并完全放弃CloudWatch。

编辑更新脚本:

这是我每10分钟运行一次以检查奴隶状态的脚本(直到我在CloudWatch中找到一个非常规指标):

#!/bin/bash                                                                                            
a=$(mysql --host=*amazonaws.com --port=3306 -u whatever -ppass -N -B -e "show slave status;")                                                          
e=$(echo "$a" | awk -F\\t '{print $12}') #Slave_SQL_Running
d=$(echo "$a" | awk -F\\t '{print $26}') #Seconds_Behind_Master
if [ "$e" != 'Yes' ]; then
  echo -e "slave mysql server down \n slave SQL running: $e \n seconds behind master: $d" | mail -s 'slave mysql server down' admin@email.com
fi

1 个答案:

答案 0 :(得分:0)

我没有从CloudWatch中找到一个很好的指标,所以我制作了这个脚本,该脚本每10分钟通过cron检查一次从属状态-如果找到Slave_SQL_Running或Slave_IO_Running!='是',它将发送一封电子邮件:

>
#!/bin/bash
a=$(mysql --host=host --port=3306 -u master -ppword -N -B -e "show slave status;")
b=$(echo "$a" | awk -F\\t '{print $6}') #Master_Log_File
c=$(echo "$a" | awk -F\\t '{print $10}') #Relay_Master_Log_File
e=$(echo "$a" | awk -F\\t '{print $12}') #Slave_SQL_Running
d=$(echo "$a" | awk -F\\t '{print $26}') #Seconds_Behind_Master
f=$(echo "$a" | awk -F\\t '{print $12}') #Slave_IO_Running
if [ "$e" != 'Yes' ] || [ "$f" != 'Yes' ]; then
  echo -e "server id - slave mysql server down \n master log file: $b \n relay master log file: $c \n seconds behind master: $d \n Slave IO Running: $f \n Slave SQL Running: $e " | mail -s 'slave mysql server down' email@email.com
fi