SHOW SLAVE STATUS
用于提供有關從屬服務器線程的關鍵參數的信息。如果您使用mysql客戶端發布此語句,則您可以使用一個G語句終止符來獲得更便于閱讀的豎向版面,而不是使用分號:
mysql> SHOW SLAVE STATUSG
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 3
Master_Log_File: gbichot-bin.005
Read_Master_Log_Pos: 79
Relay_Log_File: gbichot-relay-bin.005
Relay_Log_Pos: 548
Relay_Master_Log_File: gbichot-bin.005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 79
Relay_Log_Space: 552
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 8
SHOW SLAVE STATUS會返回以下字段:
· Slave_IO_State
SHOW PROCESSLIST輸出的State字段的拷貝。SHOW PROCESSLIST用于從屬I/O線程。如果線程正在試圖連接到主服務器,正在等待來自主服務器的時間或正在連接到主服務器等,本語句會通知您。在6.3節,“復制實施細節”中列出了可能的狀態。舊版本的MySQL在連接主服務器不成功時,允許線程繼續運行。對于舊版本的MySQL,觀看此字段是必須的。如果它正在運行,則無問題;如果它沒有運行,則您會在Last_Error字段中發現錯誤(后面有說明)。
· Master_Host
當前的主服務器主機。
· Master_User
被用于連接主服務器的當前用戶。
· Master_Port
當前的主服務器接口。
· Connect_Retry
--master-connect-retry選項的當前值
· Master_Log_File
I/O線程當前正在讀取的主服務器二進制日志文件的名稱。
· Read_Master_Log_Pos
在當前的主服務器二進制日志中,I/O線程已經讀取的位置。
· Relay_Log_File
SQL線程當前正在讀取和執行的中繼日志文件的名稱。
· Relay_Log_Pos
在當前的中繼日志中,SQL線程已讀取和執行的位置。
· Relay_Master_Log_File
由SQL線程執行的包含多數近期事件的主服務器二進制日志文件的名稱。
· Slave_IO_Running
I/O線程是否被啟動并成功地連接到主服務器上。對于舊版本的MySQL(在4.1.14和5.0.12之前),如果I/O線程已被啟動,即使從屬服務器仍沒有連接到主服務器上,Slave_IO_Running也將被設置到YES。
· Slave_SQL_Running
SQL線程是否被啟動。
· Replicate_Do_DB, Replicate_Ignore_DB
使用--replicate-do-db和--replicate-ignore-db選項指定的數據庫清單。
· Replicate_Do_Table, Replicate_Ignore_Table, Replicate_Wild_Do_Table, Replicate_Wild_Ignore_Table
使用--replicate-do-table, --replicate-ignore-table, --replicate-wild-do-table和--replicate-wild-ignore_table選項指定的表清單。
· Last_Errno, Last_Error
被多數最近被執行的查詢返回的錯誤數量和錯誤消息。錯誤數量為0并且消息為空字符串意味著“沒有錯誤”。如果Last_Error值不是空值,它也會在從屬服務器的錯誤日志中作為消息顯示。
舉例說明:
Last_Errno: 1051
Last_Error: error 'Unknown table 'z'' on query 'drop table z'
該消息指示,表z曾經存在于在主服務器中并已被取消了,但是它沒有在從屬服務器中存在過,因此對于從屬服務器,DROP TABLE失敗。(舉例說明,在設置復制時,如果您忘記了把此表拷貝到從屬服務器中,則這有可能發生。)
· Skip_Counter
最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值。
· Exec_Master_Log_Pos
來自主服務器的二進制日志的由SQL線程執行的上一個時間的位置(Relay_Master_Log_File)。在主服務器的二進制日志中的(Relay_Master_Log_File, Exec_Master_Log_Pos)對應于在中繼日志中的(Relay_Log_File, Relay_Log_Pos)。
· Relay_Log_Space
所有原有的中繼日志結合起來的總大小。
· Until_Condition, Until_Log_File, Until_Log_Pos
在START SLAVE語句的UNTIL子句中指定的值。
Until_Condition具有以下值:
o 如果沒有指定UNTIL子句,則沒有值
o 如果從屬服務器正在讀取,直到達到主服務器的二進制日志的給定位置為止,則值為Master
o 如果從屬服務器正在讀取,直到達到其中繼日志的給定位置為止,則值為Relay
Until_Log_File和Until_Log_Pos用于指示日志文件名和位置值。日志文件名和位置值定義了SQL線程在哪個點中止執行。
· Master_SSL_Allowed, Master_SSL_CA_File, Master_SSL_CA_Path, Master_SSL_Cert, Master_SSL_Cipher, Master_SSL_Key
這些字段顯示了被從屬服務器使用的參數。這些參數用于連接主服務器。
Master_SSL_Allowed具有以下值:
o 如果允許對主服務器進行SSL連接,則值為Yes
o 如果不允許對主服務器進行SSL連接,則值為No
o 如果允許SSL連接,但是從屬服務器沒有讓SSL支持被啟用,則值為Ignored。
與SSL有關的字段的值對應于--master-ca, --master-capath, --master-cert, --master-cipher和--master-key選項的值。
· Seconds_Behind_Master
本字段是從屬服務器“落后”多少的一個指示。當從屬SQL線程正在運行時(處理更新),本字段為在主服務器上由此線程執行的最近的一個事件的時間標記開始,已經過的秒數。當此線程被從屬服務器I/O線程趕上,并進入閑置狀態,等待來自I/O線程的更多的事件時,本字段為零。總之,本字段測量從屬服務器SQL線程和從屬服務器I/O線程之間的時間差距,單位以秒計。
如果主服務器和從屬服務器之間的網絡連接較快,則從屬服務器I/O線程會非常接近主服務器,所以本字段能夠十分近似地指示,從屬服務器SQL線程比主服務器落后多少。如果網絡較慢,則這種指示不準確;從屬SQL線程經常會趕上讀取速度較慢地從屬服務器I/O線程,因此,Seconds_Behind_Master經常顯示值為0。即使I/O線程落后于主服務器時,也是如此。換句話說,本列只對速度快的網絡有用。
即使主服務器和從屬服務器不具有相同的時鐘,時間差計算也會起作用(當從屬服務器I/O線程啟動時,計算時間差。并假定從此時以后,時間差保持不變)。如果從屬SQL線程不運行,或者如果從屬服務器I/O線程不運行或未與主服務器連接,則Seconds_Behind_Master為NULL(意義為“未知”)。舉例說明,如果在重新連接之前,從屬服務器I/O線程休眠了master-connect-retry秒,則顯示NULL,因為從屬服務器不知道主服務器正在做什么,也不能有把握地說落后多少。
本字段有一個限制。時間標記通過復制被保留,這意味著,如果一個主服務器M1本身是一個從屬服務器M0,則來自M1的binlog的任何事件(通過復制來自M0的binlog的事件而產生),與原事件具有相同的時間標記。這可以使MySQL成功地復制TIMESTAMP。但是,Seconds_Behind_Master的缺點是,如果M1也收到來自客戶端的直接更新,則值會隨機變化,因為有時最近的M1時間來自M0,有時來自直接更新,最近的時間標記也是如此。