目的:定期监控mysql主从数据库的同步,如果不同步,记录故障时间,执行命令,恢复主从同步状态。

1。创建一个脚本文件


六 / / / check_mysql_slave.sh crontab家#编辑器,添加以下代码





# /斌/ SH!

# check_mysql_slave状态

IP = eth0 #卡名称

mysql_binfile = / usr / / /本地MySQL bin / MySQL

mysql_user =根# MySQL数据库帐户

mysql_pass = 123456 #密码

mysql_sockfile = / /到TMP

日期时间= `日期+% % % Y M D / H:% % m:%s

mysql_slave_logfile = / / / check_mysql_slave.log家日志#日志文件的路径,必须创建。

slave_ip = ` ifconfig grep IP |美元inet addr| awk -F {:{ }打印4美元`} +

状态= $($ mysql_binfile U P mysql_pass mysql_user美元美元的mysql_sockfile美元ESHOW SLAVE STATUS G| grep我运行)

slave_io_running = ` echo $状态slave_io_running | | grep awk {打印2美元的` }

slave_sql_running = ` echo $状态grep slave_sql_running awk {打印2美元}的` | |

如果{$ slave_io_running=是-$ slave_sql_running=是}

然后回声奴隶正在运行!

其他的

回声美元美元slave_ip奴隶没有运行时间!> mysql_slave_logfile美元

mysql_binfile美元-美元mysql_user P mysql_pass美元的mysql_sockfile美元E奴隶停止;

mysql_binfile美元-美元mysql_user P mysql_pass美元的mysql_sockfile美元-设置全局sql_slave_skip_counter = 1 ;

mysql_binfile美元-美元mysql_user P mysql_pass美元的mysql_sockfile美元E奴隶开始;

mysql_binfile美元-美元mysql_user P mysql_pass美元的mysql_sockfile美元- E出口

FI





保存并退出#:WQ!

chmod +x / / / check_mysql_slave.sh crontab家#添加脚本执行权限




2。添加任务计划和修改 / / crontab等


VI /等/ crontab在最后一行添加#

* / 10 *根 / / / check_mysql_slave.sh crontab家#说每10分钟一次

保存并退出#:WQ!




三.启动crond使设置有效


/ / RC等。D / init. d / crond启动# yum install -维克西cron安装计划任务,有些系统可能不预装

在#设置引导Chkconfig crond

查看crond服务的开始#开始




mysql的主同步状态可以从日志文件 / / / check_mysql_slave.log原木家

ps:下一个脚本自动增加主库的文件号,当发现同步不同步时,POS会同步主库。脚本的内容如下:






# /斌/ SH!
#集X
#文件slave_repl.sh
#作者凯文
#日期是2011-11-13

mstool = / usr / / /当地mysql-3307 bin / MySQL - H 192.168.1.106 -中- PW!zl7pog27 P 3307
sltool = / usr / / /当地mysql-3307 bin / MySQL - H 192.168.1.107 -中- PW!zl7pog27 P 3307
声明一个slave_stat
slave_stat =($($ sltool ESHOW SLAVE STATUS G| grep运行| awk {打印2美元}))
如果{$ { slave_stat { 0 } }=是-$ { slave_stat { 1 } }=是}
然后
回声OK奴隶正在运行
0号出口
其他的
回声关键的奴隶是错误
回声
回声*********************************************************
现在用主MySQL启动复制!
文件= ` mstool美元E显示主人的地位 G| grep文件| awk {打印2美元的` }
POS = ` mstool美元E显示主人的地位 G| grepPOS| awk {打印2美元的` }
sltool美元- E,奴隶停止;改变主master_host = '192.168.1.106 ',master_port = 3307,master_user = 'repl ',master_password =大片,master_user = 'repl ',master_host = '192.168.1.106;
3睡眠
sltool美元ESHOW SLAVE STATUS G;| grep运行
回声
现在复制完成!
回声
回声**********************************************************
2号出口
FI




以下结果如下:






#。 / slave_stop3307.sh
应用
现在停止奴隶复制!
slave_io_running:无
slave_sql_running:无
应用
#。 / slave_repl3307.sh
临界从误
*********************************************************
现在开始使用主MySQL复制!
slave_io_running:是的
slave_sql_running:是的
现在复制完成了!
**********************************************************