Скрипт восстановления MySQL репликации - История изменений http://wiki.bitel.ru/index.php?title=%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_MySQL_%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8&action=history История изменений этой страницы в вики ru MediaWiki 1.15.1 Fri, 29 Mar 2024 14:57:01 GMT Admin:&#32;Новая страница: «Скрипт на BASH предназначен для пропуска сбойного MySQL запроса, приведшего к остановке репли…» http://wiki.bitel.ru/index.php?title=%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_MySQL_%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8&diff=1696&oldid=prev <p>Новая страница: «Скрипт на BASH предназначен для пропуска сбойного MySQL запроса, приведшего к остановке репли…»</p> <p><b>Новая страница</b></p><div>Скрипт на BASH предназначен для пропуска сбойного MySQL запроса, приведшего к остановке реплицирования. Хорошо бы дополнить информированием на E-Mail.<br /> <br /> &lt;source lang=&quot;bash&quot;&gt;<br /> #!/bin/bash<br /> ## Tool to unstick MySQL Replicators.<br /> ## Set to run from cron once a minute.<br /> <br /> # */1 * * * * /usr/local/bin/whip_slave_mysql &gt; /dev/null 2&gt;&amp;1<br /> <br /> # Last updated: MM/DD/YYYY<br /> <br /> COMMANDS=&quot;mysql grep awk logger&quot;<br /> <br /> export PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'<br /> <br /> for i in $COMMANDS<br /> do<br /> X=`echo $i | tr '[a-z]' '[A-Z]'`<br /> export $X=`type -p $i`<br /> done<br /> <br /> # Define variables<br /> USERNAME=root<br /> PASSWORD=xxxxxxxx<br /> <br /> # Define Functions<br /> ## Obtain MwSQL slave server status<br /> function SLAVE()<br /> {<br /> STATUS=`$MYSQL -u $USERNAME -p$PASSWORD -e \<br /> &quot;SHOW SLAVE STATUS \G&quot; |<br /> $GREP Seconds_Behind_Master |<br /> $AWK '{print $2}'`<br /> }<br /> <br /> ## Skip errors<br /> function UNSTICK()<br /> {<br /> $MYSQL -u $USERNAME -p$PASSWORD -e \<br /> &quot;STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;&quot;<br /> sleep 5<br /> # Check everything again<br /> CHECK<br /> }<br /> <br /> ## Decide what to do...<br /> function CHECK()<br /> {<br /> # Obtain status<br /> SLAVE<br /> if [ $STATUS = NULL ]<br /> then<br /> # I think the replicator is broken<br /> echo &quot;MySQL Slave database is not replicating. Fixing...&quot; | $LOGGER<br /> UNSTICK<br /> else<br /> # Everything should be fine<br /> echo &quot;MySQL Slave is $STATUS seconds behind its Master.&quot; | $LOGGER<br /> fi<br /> }<br /> <br /> ## Are we running?<br /> function ALIVE()<br /> {<br /> UP=`$MYSQL -u $USERNAME -p$PASSWORD -e \<br /> &quot;SHOW SLAVE STATUS \G&quot; |<br /> $GREP Slave_IO_Running |<br /> $AWK '{print $2}'`<br /> <br /> if [ $UP = Yes ]<br /> then<br /> # Let's check if everything is good, then...<br /> CHECK<br /> else<br /> # Uh oh...let's not do anything.<br /> echo &quot;MySQL Slave IO is not running!&quot; | $LOGGER<br /> exit 1<br /> fi<br /> }<br /> <br /> # How is everything?<br /> ALIVE<br /> <br /> #EoF<br /> exit 0<br /> &lt;/source&gt;</div> Mon, 21 Jun 2010 05:56:58 GMT Admin http://wiki.bitel.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_MySQL_%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8