2011-03-31 54 views

回答

1

根據MySQL doc - Checking Replication Status

Slave_IO_Running:無論是I/O 線程讀取主服務器的二進制日誌 運行。通常情況下,你想 這是爲是,除非你還沒有 開始複製或明確地 停止它與STOP從。

Slave_SQL_Running:無論是SQL 線程在 中繼日誌執行活動正在運行。與I/O 線程一樣,這通常應該爲Yes。

4

這裏有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'; 
  • 如果SlaveThreads = 2,複製是運行
  • 如果SlaveThreads = 1,複製是Broken
  • 如果SlaveThreads = 0,複製停止或禁用

使用MySQL 5.0和背部

SHOW PROCESSLIST; 

查找thaty在用戶欄 '系統用戶' 2個DB Conenctions。

選項#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='';)。

0

在MySQL 5之前。7,您可以通過執行以下查詢來檢查'slave_running'變量:SHOW GLOBAL STATUS LIKE'slave_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;