Script To Check If MySQL Master Master Replication Is Working Correctly

Do you like HowtoForge? Please consider to support us by becoming a subscriber.
Submitted by marchost (Contact Author) (Forums) on Tue, 2008-09-09 13:14. :: MySQL

Script To Check If MySQL Master Master Replication Is Working Correctly

This short article explains how you can use a short script to check whether your MySQL master master replication is working as expected or not.

First add a user named "check" with the following mysql queries:

CREATE USER 'check'@'localhost' IDENTIFIED BY 'YOURPASSWORD';

GRANT SUPER , REPLICATION CLIENT ON * . * TO 'check'@'localhost' IDENTIFIED BY 'YOURPASSWORD' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Then add this bash script to your /root directory. Add it to your crontab if needed :

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

###check if already notified###
cd /root
if [ -f slave_problem.txt ]; then
exit 1;
fi

###Check if slave running###
(
echo "show slave status \G;"
) | mysql -u check -pYOURPASSWORD 2>&1 | grep "Slave_IO_Running: No"
if [ "$?" -ne "1" ]; then
echo "Replication failed" > /root/slave_problem.txt
fi

###Send notification if replication down###
cd /root
if [ -f slave_problem.txt ]; then
mail -s "Replication problem" admin@example.com < /root/slave_problem.txt
fi

Please do not use the comment function to ask for help! If you need help, please use our forum.
Comments will be published after administrator approval.
Submitted by pakogah (registered user) on Thu, 2008-09-11 10:54.

    there are 2 parameter we need to watch and make sure that replication is running, 1 is Slave IO (the replication engine) and another is Slave SQL,

the Slave IO can  unable to run when we enter the wrong master/ slave paramater like replication user, etc...

 and Slave SQL can unable to run when some sql syntax is replicated to slave but found an error like duplicated key...

 the slave IO still running but when slave sql stopped, your slave will no longer have the same data with your master anymore...

 so you should add another parameter to check Slave_SQL_Running running or not

 best regards