分享一例shell脚本,用于监测mysql数据库的主从复制,有需要的朋友不妨参考学习下。
转自:http://www.jbxue.com/article/14103.html(转载请注明出处)
本节内容:
监控mysql主从复制的shell脚本。
说明:
监控脚本在 rhel5 下测试正常,其它版本的linux 系统请自行测试。
代码:
复制代码代码如下:
#监控mysql 主从复制
cat chk_mysql_rep.sh
#!/bin/bash
#
#script_name:chk_mysql_rep.sh
#check mysql replication
#
#ssh root@xen "/usr/local/mysql/bin/mysql -uroot -pdongnan -e 'show slave status\G' -ss" | awk '/Running:/ {print $2}'
#Yes
#Yes
#
#variables
ssh=/usr/bin/ssh
sh_dir=/root/sh/
crondir=${sh_dir}crontab
source ${sh_dir}CONFIG
hosts="$DB_SLAVE_HOSTS"
#main
#主循环遍历机器 www.jbxue.com
for HOST in $hosts;do
log=$crondir/log/mysql_replication_error.log
key=$($ssh root@$HOST "/usr/local/mysql/bin/mysql -uroot -pdongnan -e 'show slave status\G' -ss" | awk '/Running:/ {printf $2}')
#无法连接的主机,跳过本次循环
test -z "$key" && continue
#返回结果真
if [ "$key" == "YesYes" ];then
#flag真,解除报警
if [ -f "${crondir}/log/$HOST.mysql" ];then
#sms
#for mobile in $MOBILES;do
#echo "$HOST replication ok" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
#done
#mail
for mail in $MAILS;do
echo "$HOST replication ok" | mail -s "$HOST replication ok" $mail
done
#flag
rm -f "${crondir}/log/$HOST.mysql"
fi
#返回结果假
else
check_date=$(date '+ %F %T')
#flag假,报警
if [ ! -f "${crondir}/log/$HOST.mysql" ];then
#sms www.jbxue.com
#for mobile in $MOBILES;do
#echo "$HOST replication error" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
#done
#mail
for mail in $MAILS;do
echo "$HOST replication error" | mail -s "$HOST replication error" $mail
done
#flag
echo "replication error" >"${crondir}/log/$HOST.mysql"
#log
echo "$check_date $HOST mysql replicaton error" >> $log
fi
fi
#
done
#
cat chk_mysql_rep.sh
#!/bin/bash
#
#script_name:chk_mysql_rep.sh
#check mysql replication
#
#ssh root@xen "/usr/local/mysql/bin/mysql -uroot -pdongnan -e 'show slave status\G' -ss" | awk '/Running:/ {print $2}'
#Yes
#Yes
#
#variables
ssh=/usr/bin/ssh
sh_dir=/root/sh/
crondir=${sh_dir}crontab
source ${sh_dir}CONFIG
hosts="$DB_SLAVE_HOSTS"
#main
#主循环遍历机器 www.jbxue.com
for HOST in $hosts;do
log=$crondir/log/mysql_replication_error.log
key=$($ssh root@$HOST "/usr/local/mysql/bin/mysql -uroot -pdongnan -e 'show slave status\G' -ss" | awk '/Running:/ {printf $2}')
#无法连接的主机,跳过本次循环
test -z "$key" && continue
#返回结果真
if [ "$key" == "YesYes" ];then
#flag真,解除报警
if [ -f "${crondir}/log/$HOST.mysql" ];then
#sms
#for mobile in $MOBILES;do
#echo "$HOST replication ok" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
#done
for mail in $MAILS;do
echo "$HOST replication ok" | mail -s "$HOST replication ok" $mail
done
#flag
rm -f "${crondir}/log/$HOST.mysql"
fi
#返回结果假
else
check_date=$(date '+ %F %T')
#flag假,报警
if [ ! -f "${crondir}/log/$HOST.mysql" ];then
#sms www.jbxue.com
#for mobile in $MOBILES;do
#echo "$HOST replication error" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
#done
for mail in $MAILS;do
echo "$HOST replication error" | mail -s "$HOST replication error" $mail
done
#flag
echo "replication error" >"${crondir}/log/$HOST.mysql"
#log
echo "$check_date $HOST mysql replicaton error" >> $log
fi
fi
#
done
#
相关推荐
目的:定时监控MySQL主从数据库是否同步,如果不同步,记录故障时间,并执行命令使主从恢复同步状态 1、创建脚本文件 vi /home/crontab/check_mysql_slave.sh #编辑,添加下面代码 #!/bin/sh # check_mysql_slave...
11. 系统监控:实例“MySQL主从监控邮件报警脚本”和“监控Nginx进程的脚本”等,可以帮助读者搭建监控系统,实现对关键服务的实时监控和告警。 本书通过实战案例的方式,帮助读者在实际的Linux系统运维工作中,...
1. **relay-fetch**:一种优化MySQL主从复制的技术,通过调整从库的SQL线程行为来减少复制延时。具体来说,可以通过调整`slave_sql_fetch_users`和`slave_sql_verify_checks`等参数来改善性能。 #### 四、其他实用...
1. **主从复制配置**:首先,你需要配置MySQL的主从复制,确保数据在主库和从库之间同步。这包括设置`server-id`,配置`binlog_format`为ROW,开启`log-bin`以记录二进制日志,以及在主库上授权从库进行复制。 2. *...
5. 管理工具优化:MySQL 5.7包含了一些新的管理和监控工具,如MySQL Shell,它是一个交互式脚本环境,支持JavaScript和Python,使得数据库管理更加灵活高效。 接下来,我们关注Windows系统的安装过程: 1. 下载并...
7. **MySQL Shell**:MySQL 8.0提供了多语言交互式环境MySQL Shell,支持JavaScript和Python脚本,便于进行数据库管理和开发。 8. **数据加密**:MySQL 8.0支持数据-at-rest加密,可以在不改变应用的情况下保护数据...
4.1.4 Shell脚本案例 4.1.5Shel1数组编程 5. Linux深入篇 5.1构建 Nginx WEB服务器 Nginx WEB安装 5.1.2 nginx虚拟主机配置 5.1.3 nginx性能优化 5.1.4 nginx参数深入理解 5.1.5 Nginx Rewrite规则 面面面面 5.2构建...
6. **复制增强**:MySQL 5.7的复制功能有所改进,包括支持GTID(全局事务标识符)自动定位,使得主从同步更加精确和可靠。 7. **半同步复制**:默认启用半同步复制,确保数据至少在一个从库上被写入,提高了数据...
2)配置主从复制(从库执行) #/bin/bash mysql8_install repl 3)配置组复制(先在Primary节点上执行,再到Secondary节点上执行) 注:先把3个节点MySQL实例启动后再开始搭建mgr,同时修改脚本里的ip地址和端口和...
11. **复制与集群**:MySQL支持主从复制和组复制,以实现高可用性和数据冗余,当主服务器出现故障时,可以从备用服务器接管服务。 12. **InnoDB存储引擎**:MySQL最常用的存储引擎,支持事务处理、行级锁定和外键...
本文将详细解释如何利用shell脚本配合`mysqld_multi`来自动化处理多实例从库的设置。 `mysqld_multi`是MySQL提供的一种管理工具,它允许在一个系统上启动、停止和管理多个独立的MySQL服务器实例。这对于创建主从...
在上述给定文件中,提供了两个实例,分别使用shell脚本和PHP脚本来检测MySQL同步状态。首先,通过shell脚本,我们可以设置定时任务(如使用crontab)来定期检查MySQL数据库服务器的运行状态和主从同步状态。脚本中...
7. **更好的复制功能**:MySQL 8.0的复制功能进行了升级,包括GTID(全局事务标识符)复制,提供更简单、更安全的主从同步。 8. **新的管理工具**:MySQL Shell是一个多模式的交互式JavaScript和Python界面,用于...
18. **自动化备份**:通过shell脚本、cron任务结合`mysqldump`或InnoDB的备份功能实现定时备份,确保数据安全。 19. **存储过程最佳实践**:保持简单,避免复杂逻辑,适当注释,注意事务管理,避免全局变量,确保...
- **MySQL主从高可用架构**:构建MySQL主从复制,提高数据库系统的可靠性。 - **LVS+Keepalived负载均衡**:使用Linux Virtual Server(LVS)和Keepalived实现高可用的负载均衡解决方案。 - **Squid缓存服务器配置*...