如何找到mysql DB是奴隶而不是通过查询使用“show slave status”?
答案 0 :(得分:6)
如果复制正在运行,您必须检测以下3个选项
选项#1:检查状态变量'Slave_running'
使用MySQL 5.1 / 5.5
select variable_value from information_schema.global_status
where variable_name = 'Slave_running';
使用MySQL 5.0并返回
SHOW VARIABLES LIKE 'Slave_running';
选项#2:检查处理列表
使用MySQL 5.1 + / 5.5
select COUNT(1) SlaveThreads
from information_schema.processlist
where user = 'system user';
使用MySQL 5.0并返回
SHOW PROCESSLIST;
在用户列中查找具有“系统用户”的2个DB Conction。
选项#3:检查是否存在master.info
如果在数据库服务器上设置了复制,请查找master.info。默认情况下,master.info通常位于/ var / lib / mysql或定义datadir的位置。
多次运行'cat master.info'(对于Windows社区,请键入master.info)。如果日志位置正在移动,则启用复制。如果日志位置没有移动,则可能意味着复制被破坏(SQL线程中的SQL错误),停止(由于STOP SLAVE;
)或禁用(通过运行CHANGE MASTER TO MASTER_HOST='';
)。
答案 1 :(得分:1)
根据MySQL doc - Checking Replication Status:
Slave_IO_Running :是否为I / O. 用于读取主二进制文件的线程 日志正在运行。通常,你想要 这是肯定的,除非你还没有 开始复制或明确 用STOP SLAVE停止了它。
Slave_SQL_Running :是否为SQL 用于执行事件的线程 中继日志正在运行。与I / O一样 线程,通常应为是。
答案 2 :(得分:1)
在MySQL 5.7之前,你可以通过执行以下查询来检查'slave_running'变量:SHOW GLOBAL STATUS LIKE'live_running';
从MySQL 5.7开始, slave_running已被删除,上面的查询返回一个空集 您可以启用“show_compatibility_56”来获取值,但不推荐使用“show_compatibility_56”,很快就会将其删除。这是因为MySQL正在偏离information_schema GLOBAL_STATUS和SESSION_STATUS表,而不是performance_schema。
在SHOW SLAVE STATUS之外获取在MySQL 5.7中运行的从站状态的正确方法是使用新的基于复制的performance_schema表。
您可以执行以下查询以获取复制服务的状态: SELECT SERVICE_STATE FROM performance_schema.replication_connection_status;