https://www.cnblogs.com/gomysql/p/3856484.html
MySQL has a lot of high-availability solutions, such as Cluster , MMM , MHA , DRBD , etc., these are more complicated, my previous articles are also described. Oracle also recently launched the official Fabric . Sometimes we do not need such a complex environment, these options have their pros and cons. Sometimes simple and we were able to hold live program is right for us. Such as MySQL Replication, and then add a variety of high-availability software, such as Keepalived , etc., will be able to achieve high availability environment we need.
MySQL architecture master / slave, When the master fails, vip drift to the slave. Provide services. Of course, also can be set to double master, but not every plan is perfect. Here is set to have a dual master problems that require attention, such as when a user wrote, when a lot of the pressure when the host is assumed that behind 2000 seconds, then this host is down, another host taking over (vip drift from when the machine), because large synchronization delay, the user has just published articles have not copied, so users have published the article again, when the original master good repair, because the I / O and SQL threads also be awake, therefore we will continue to synchronize data synchronization is not just copied, then it is possible to change the user newly published article out. So here the use of master / slave architecture. In this architecture, after failover, take the form of manually copy the new master.
Simple environment are as follows:
master 192.168.0.100 slave 192.168.0.101 VIP 192.168.0.88
Master-slave replication environment is not set up my presentation here. Needy students look at their official handbook . The following describes the installation and configuration used directly in keepalived.
1.keepalived software installation (master operation from the same)
[root@mysql-server-01 ~]# wget -q http://www.keepalived.org/software/keepalived-1.2.13.tar.gz [root@mysql-server-01 ~]# tar xf keepalived-1.2.13.tar.gz [root@mysql-server-01 ~]# cd keepalived-1.2.13 [root@mysql-server-01 keepalived-1.2.13]# ./configure && make && make install
[root@mysql-server-01 keepalived]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ [root@mysql-server-01 keepalived]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ [root@mysql-server-01 keepalived]# mkdir /etc/keepalived [root@mysql-server-01 keepalived]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ [root@mysql-server-01 keepalived]# cp /usr/local/sbin/keepalived /usr/sbin/ [root@mysql-server-01 keepalived]# chkconfig --add keepalived [root@mysql-server-01 keepalived]# chkconfig --level 345 keepalived on
2. modify the configuration files from the master (after the keepalived main configuration file is modified as follows, in fact, it is not the same priority only)
Master of keepalived configuration file as follows
[root@mysql-server-01 keepalived]# cat keepalived.conf global_defs { router_id MySQL-HA } vrrp_script check_run { script "/data/sh/mysql_check.sh" interval 300 } vrrp_sync_group VG1 { group { VI_1 } } vrrp_instance VI_1 { state BACKUP interface eth1 virtual_router_id 51 priority 100 advert_int 1 nopreempt authentication { auth_type PASS auth_pass 1111 } track_script { check_run } notify_master /data/sh/master.sh notify_backup /data/sh/backup.sh notify_stop /data/sh/stop.sh virtual_ipaddress { 192.168.0.88 } } [root@mysql-server-01 keepalived]#
the slave keepalived profile later amended as follows:
[root@mysql-server-02 keepalived]# cat keepalived.conf global_defs { router_id MySQL-HA } vrrp_script check_run { script "/data/sh/mysql_check.sh" interval 300 } vrrp_sync_group VG1 { group { VI_1 } } vrrp_instance VI_1 { state BACKUP interface eth1 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_run } notify_master /data/sh/master.sh notify_backup /data/sh/backup.sh notify_stop /data/sh/stop.sh virtual_ipaddress { 192.168.0.88 } } [root@mysql-server-02 keepalived]#
There are several key parameters of places:
notify_master: state change script execution later as master.
notify_backup: change the status of execution of the script after backup.
notify_fault: change the status of the script execution after fault.
notify_stop: VRRP script execution after stop.
state backup: We are set for backup, after the failure is to not switch automatically.
nopreempt: does not preempt the operation
Which uses four scripts: backup.sh master.sh mysql_check.sh stop.sh
mysql_check.sh script mysqld process is to check whether alive when found not connect mysql, keepalived automatically kill the process, so be VIP drift.
The following script from the master server above all, just a little different from the server above master.sh. When adding a slave to a primary database, send e-mail notifications.
[root@mysql-server-01 sh]# cat mysql_check.sh #!/bin/bash . /root/.bash_profile count=1 while true do mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14520.sock -e "show status;" > /dev/null 2>&1 i=$? ps aux | grep mysqld | grep -v grep > /dev/null 2>&1 j=$? if [ $i = 0 ] && [ $j = 0 ] then exit 0 else if [ $i = 1 ] && [ $j = 0 ] then exit 0 else if [ $count -gt 5 ] then break fi let count++ continue fi fi done /etc/init.d/keepalived stop [root@mysql-server-01 sh]#
Master.sh action is executed after the script status to master. Determining whether the first copy delay, if there is a delay, after 1 minute and the like, whether or not a delay. To skip, and stop replication. And authorized account, records and binlog pos point.
[root@mysql-server-02 sh]# cat master.sh #!/bin/bash . /root/.bash_profile Master_Log_File=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show slave status\G" | grep -w Master_Log_File | awk -F": " '{print $2}') Relay_Master_Log_File=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show slave status\G" | grep -w Relay_Master_Log_File | awk -F": " '{print $2}') Read_Master_Log_Pos=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show slave status\G" | grep -w Read_Master_Log_Pos | awk -F": " '{print $2}') Exec_Master_Log_Pos=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show slave status\G" | grep -w Exec_Master_Log_Pos | awk -F": " '{print $2}') i=1 while true do if [ $Master_Log_File = $Relay_Master_Log_File ] && [ $Read_Master_Log_Pos -eq $Exec_Master_Log_Pos ] then echo "ok" break else sleep 1 if [ $i -gt 60 ] then break fi continue let i++ fi done mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "stop slave;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global innodb_support_xa=0;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global sync_binlog=0;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global innodb_flush_log_at_trx_commit=0;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "flush logs;GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY '123456';flush privileges;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show master status;" > /tmp/master_status_$(date "+%y%m%d-%H%M").txt [root@mysql-server-02 sh]#
master.sh on slave
[root@mysql-server-02 sh]# cat master.sh #!/bin/bash . /root/.bash_profile Master_Log_File=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show slave status\G" | grep -w Master_Log_File | awk -F": " '{print $2}') Relay_Master_Log_File=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show slave status\G" | grep -w Relay_Master_Log_File | awk -F": " '{print $2}') Read_Master_Log_Pos=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show slave status\G" | grep -w Read_Master_Log_Pos | awk -F": " '{print $2}') Exec_Master_Log_Pos=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show slave status\G" | grep -w Exec_Master_Log_Pos | awk -F": " '{print $2}') i=1 while true do if [ $Master_Log_File = $Relay_Master_Log_File ] && [ $Read_Master_Log_Pos -eq $Exec_Master_Log_Pos ] then echo "ok" break else sleep 1 if [ $i -gt 60 ] then break fi continue let i++ fi done mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "stop slave;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global innodb_support_xa=0;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global sync_binlog=0;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global innodb_flush_log_at_trx_commit=0;" -e -S /tmp/mysql_sandbox14521.sock -uroot--pmsandbox MySQL "the flush logs; * * the GRANT ALL PRIVILEGES the ON the TO 'ADMIN' @ '%' the IDENTIFIED BY '123456'; the flush privileges;." MySQL -uroot--pmsandbox - -e /tmp/mysql_sandbox14521.sock S "Show Master Status;"> / tmp / master_status _ $ (DATE "+ Y% m%%% H% m D-") TXT. # when the slave to a primary, email echo "#####################################"> / tmp / Status echo "Salve has been raised main library, please check ">> / tmp / Status! ifconfig | sed -n '/ inet /{s/.*addr://;s/ * //;. the p-}' | grep -v 127.0. >> 0.1 / tmp / Status MySQL-uroot--pmsandbox -S /tmp/mysql_sandbox14521.sock -Nse "Show the Variables like 'Port'" >> / tmp / Status echo "############ ######################### ">> /tmp/status master=`cat /tmp/status`>> /tmp/status echo "$master" | mutt -s "slave to primary!!!" [email protected]
Copy the script to check whether the delay idea is as follows:
1, first to see if there are differences Relay_Master_Log_File and Master_Log_File
2, Relay_Master_Log_File and Master_Log_File if there are differences, then explain the delay lot
3, if Relay_Master_Log_File and Master_Log_File no difference, and look Exec_Master_Log_Pos Read_Master_Log_Pos difference
Rather than to judge by Seconds_Behind_Master, this value represents the delay between the slave SQL thread and the IO thread, actually also take into account whether Master_Log_File and Relay_Master_Log_File there are gaps, more rigorous it is to be performed simultaneously show master status on the master performed Compared. This is also the MHA in the handover process can be done. MMM switch only in the execution of the show slave status from the library. Therefore, data consistency requirements or MHA to the force. Digress. ^ _ ^
Backup.sh action script is to change the status of execution of the script after backup.
[root@mysql-server-02 sh]# cat backup.sh #!/bin/bash . /root/.bash_profile mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY '123456';flush privileges;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global event_scheduler=0;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global innodb_support_xa=0;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global sync_binlog=0;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global innodb_flush_log_at_trx_commit=0;"
stop.sh 表示keepalived停止以后需要执行的脚本。更改密码,设置参数,检查是否还有写入操作,最后无论是否执行完毕,都退出。
[root@mysql-server-02 sh]# cat stop.sh #!/bin/bash . /root/.bash_profile mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY '1q2w3e4r';flush privileges;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global innodb_support_xa=1;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global sync_binlog=1;" mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "set global innodb_flush_log_at_trx_commit=1;" M_File1=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show master status\G" | awk -F': ' '/File/{print $2}') M_Position1=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show master status\G" | awk -F': ' '/Position/{print $2}') sleep 1 M_File2=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show master status\G" | awk -F': ' '/File/{print $2}') M_Position2=$(mysql -uroot -pmsandbox -S /tmp/mysql_sandbox14521.sock -e "show master status\G" | awk -F': ' '/Position/{print $2}') i=1 while true do if [ $M_File1 = $M_File1 ] && [ $M_Position1 -eq $M_Position2 ] then echo "ok" break else sleep 1 if [ $i -gt 60 ] then break fi continue let i++ fi done [root@mysql-server-02 sh]#
到这里基本就介绍完了。最后我们先看主从复制是否正常,如果正常,然后分别启动keepalived,然后进行故障切换测试。
slave状态:
node2 [localhost] {msandbox} ((none)) > pager cat | egrep 'Master_Log_File|Relay_Master_Log_File|Read_Master_Log_Pos|Exec_Master_Log_Pos|Running' PAGER set to 'cat | egrep 'Master_Log_File|Relay_Master_Log_File|Read_Master_Log_Pos|Exec_Master_Log_Pos|Running'' node2 [localhost] {msandbox} ((none)) > show slave status\G Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 409 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Exec_Master_Log_Pos: 409 Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it 1 row in set (0.00 sec) node2 [localhost] {msandbox} ((none)) >
master 状态:
node1 [localhost] {msandbox} ((none)) > show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 409 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) node1 [localhost] {msandbox} ((none)) >
根据我前面给的判断条件,可以看出我的复制没有任何延时。
下面分别在master上和slave上启动keepalived进程。以及查看日志(上面的查看只是给大家说明如何判断复制是否延迟)
master
[root@mysql-server-01 sh]# /etc/init.d/keepalived start Starting keepalived: [ OK ] [root@mysql-server-01 sh]# tail -f /var/log/messages Jul 20 20:48:03 mysql-server-01 Keepalived_vrrp[13040]: Netlink reflector reports IP 192.168.87.134 added Jul 20 20:48:03 mysql-server-01 Keepalived_vrrp[13040]: Netlink reflector reports IP 192.168.0.100 added Jul 20 20:48:03 mysql-server-01 Keepalived_vrrp[13040]: Registering Kernel netlink reflector Jul 20 20:48:03 mysql-server-01 Keepalived_vrrp[13040]: Registering Kernel netlink command channel Jul 20 20:48:03 mysql-server-01 Keepalived_vrrp[13040]: Registering gratuitous ARP shared channel Jul 20 20:48:03 mysql-server-01 Keepalived_healthcheckers[13039]: Netlink reflector reports IP 192.168.0.100 added Jul 20 20:48:03 mysql-server-01 Keepalived_healthcheckers[13039]: Netlink reflector reports IP 192.168.87.134 added Jul 20 20:48:03 mysql-server-01 Keepalived_healthcheckers[13039]: Netlink reflector reports IP 192.168.0.100 added Jul 20 20:48:03 mysql-server-01 Keepalived_healthcheckers[13039]: Registering Kernel netlink reflector Jul 20 20:48:03 mysql-server-01 Keepalived_healthcheckers[13039]: Registering Kernel netlink command channel Jul 20 20:48:23 mysql-server-01 Keepalived_healthcheckers[13039]: Opening file '/etc/keepalived/keepalived.conf'. Jul 20 20:48:23 mysql-server-01 Keepalived_healthcheckers[13039]: Configuration is using : 6489 Bytes Jul 20 20:48:23 mysql-server-01 Keepalived_vrrp[13040]: Opening file '/etc/keepalived/keepalived.conf'. Jul 20 20:48:23 mysql-server-01 Keepalived_vrrp[13040]: Configuration is using : 66476 Bytes Jul 20 20:48:23 mysql-server-01 Keepalived_vrrp[13040]: Using LinkWatch kernel netlink reflector... Jul 20 20:48:23 mysql-server-01 Keepalived_healthcheckers[13039]: Using LinkWatch kernel netlink reflector... Jul 20 20:48:23 mysql-server-01 Keepalived_vrrp[13040]: VRRP_Instance(VI_1) Entering BACKUP STATE Jul 20 20:48:23 mysql-server-01 Keepalived_vrrp[13040]: VRRP sockpool: [ifindex(3), proto(112), unicast(0), fd(10,11)] Jul 20 20:48:23 mysql-server-01 Keepalived_vrrp[13040]: VRRP_Script(check_run) succeeded Jul 20 20:48:27 mysql-server-01 Keepalived_vrrp[13040]: VRRP_Instance(VI_1) Transition to MASTER STATE Jul 20 20:48:27 mysql-server-01 Keepalived_vrrp[13040]: VRRP_Group(VG1) Syncing instances to MASTER state Jul 20 20:48:28 mysql-server-01 Keepalived_vrrp[13040]: VRRP_Instance(VI_1) Entering MASTER STATE Jul 20 20:48:28 mysql-server-01 Keepalived_vrrp[13040]: VRRP_Instance(VI_1) setting protocol VIPs. Jul 20 20:48:28 mysql-server-01 Keepalived_vrrp[13040]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 192.168.0.88 Jul 20 20:48:28 mysql-server-01 Keepalived_healthcheckers[13039]: Netlink reflector reports IP 192.168.0.88 added Jul 20 20:48:33 mysql-server-01 Keepalived_vrrp[13040]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 192.168.0.88
slave
可以看见VIP已经绑定在了master上,执行ip addr看看是否有这个VIP
[root@mysql-server-01 ~]# ip addr | grep eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 192.168.0.100/24 brd 192.168.0.255 scope global eth1 inet 192.168.0.88/32 scope global eth1 [root@mysql-server-01 ~]#
可以看见vip也已经绑定成功。
现在我们从远程机器登陆看看,使用vip,创建测试库,插入数据,最后模拟mysqld crash
[root@mysql-server-03 ~]# mysql -uadmin -p123456 -h 192.168.0.88 -P 14520 Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 47 Server version: 5.6.19-log MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database dengyayun; Query OK, 1 row affected (0.01 sec) mysql> use dengyayun Database changed mysql> create table t1 ( id int); Query OK, 0 rows affected (0.38 sec) mysql> insert into t1 select 999; Query OK, 1 row affected (0.03 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql>
发现使用vip登陆没有问题,创建库以及插入数据都木有问题。现在杀掉mysqld进程,看vip是否进行了漂移,以及查看数据是否存在。
[root@mysql-server-01 ~]# pkill -9 mysqld
过了一会儿,报警邮件就到了,以及vip也已经切换了。如下:
查看slave上面的message信息,如下输出:
[root@mysql-server-02 ~]# tail -n 20 /var/log/messages Jul 20 22:00:20 mysql-server-02 Keepalived_healthcheckers[13327]: Registering Kernel netlink command channel Jul 20 22:00:40 mysql-server-02 Keepalived_vrrp[13328]: Opening file '/etc/keepalived/keepalived.conf'. Jul 20 22:00:40 mysql-server-02 Keepalived_vrrp[13328]: Configuration is using : 66454 Bytes Jul 20 22:00:40 mysql-server-02 Keepalived_vrrp[13328]: Using LinkWatch kernel netlink reflector... Jul 20 22:00:40 mysql-server-02 Keepalived_healthcheckers[13327]: Opening file '/etc/keepalived/keepalived.conf'. Jul 20 22:00:40 mysql-server-02 Keepalived_healthcheckers[13327]: Configuration is using : 6467 Bytes Jul 20 22:00:40 mysql-server-02 Keepalived_healthcheckers[13327]: Using LinkWatch kernel netlink reflector... Jul 20 22:00:40 mysql-server-02 Keepalived_vrrp[13328]: VRRP_Instance(VI_1) Entering BACKUP STATE Jul 20 22:00:40 mysql-server-02 Keepalived_vrrp[13328]: VRRP sockpool: [ifindex(3), proto(112), unicast(0), fd(10,11)] Jul 20 22:00:40 mysql-server-02 Keepalived_vrrp[13328]: VRRP_Script(check_run) succeeded Jul 20 22:07:47 mysql-server-02 dhclient[7343]: DHCPREQUEST on eth0 to 192.168.87.254 port 67 (xid=0x4ada08db) Jul 20 22:07:47 mysql-server-02 dhclient[7343]: DHCPACK from 192.168.87.254 (xid=0x4ada08db) Jul 20 22:07:49 mysql-server-02 dhclient[7343]: bound to 192.168.87.135 -- renewal in 885 seconds. Jul 20 22:10:38 mysql-server-02 Keepalived_vrrp[13328]: VRRP_Instance(VI_1) Transition to MASTER STATE Jul 20 22:10:38 mysql-server-02 Keepalived_vrrp[13328]: VRRP_Group(VG1) Syncing instances to MASTER state Jul 20 22:10:39 mysql-server-02 Keepalived_vrrp[13328]: VRRP_Instance(VI_1) Entering MASTER STATE Jul 20 22:10:39 mysql-server-02 Keepalived_vrrp[13328]: VRRP_Instance(VI_1) setting protocol VIPs. Jul 20 22:10:39 mysql-server-02 Keepalived_vrrp[13328]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 192.168.0.88 Jul 20 22:10:39 mysql-server-02 Keepalived_healthcheckers[13327]: Netlink reflector reports IP 192.168.0.88 added Jul 20 22:10:44 mysql-server-02 Keepalived_vrrp[13328]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 192.168.0.88 [root@mysql-server-02 ~]#
最后我们再次使用vip登陆;发现数据没有异常。复制也停止了,因为已经切换为主库。
[root@mysql-server-03 ~]# mysql -uadmin -p123456 -h 192.168.0.88 -P14521 Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 301 Server version: 5.6.19-log MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select * from dengyayun.t1; +------+ | id | +------+ | 999 | +------+ 1 row in set (0.00 sec) mysql> pager cat | egrep 'IO_Running|SQL_Running' PAGER set to 'cat | egrep 'IO_Running|SQL_Running'' mysql> show slave status\G Slave_IO_Running: No Slave_SQL_Running: No Slave_SQL_Running_State: 1 row in set (0.00 sec) mysql>