我有一个主服务器在独立数据中心的服务器上运行,还有一个从服务器在 AWS 中。
复制失败并出现以下错误:“主服务器上发生事件 LOST_EVENTS。消息:写入二进制日志时出错”。
上次离线时,写入吞吐量从 4k 字节/秒跃升至 40k,并在几周内稳步增加到 252k。
1)我想知道为什么失败后写入吞吐量会稳定增加?
2) 我想知道在 cloudwatch 失败时可以使用什么指标来创建 SNS 电子邮件给我?现在,我认为最好的办法是在主服务器上运行一个简单的 bash 脚本,在“显示从状态”上将 Master_Log_File 与 Relay_Master_Log_File 进行比较;并完全放弃 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
最佳答案
我没有从 CloudWatch 中找到好的指标,所以我制作了这个脚本,它通过 cron 每 10 分钟检查一次从属状态 - 如果发现 Slave_SQL_Running 或 Slave_IO_Running != 'Yes',它会发送一封电子邮件:
#!/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
关于mysql - 对发生故障的从属 AWS 服务器使用什么指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49623735/