SHOW SLAVE STATUS 詳解

germany006發表於2013-06-21
轉載地址:http://blog.csdn.net/shiqidide/article/details/7263652

MySQL同步功能由3個執行緒(master上1個,slave上2個)來實現。執行 DE>START SLAVEDE> 語句後,slave就建立一個I/O執行緒。I/O執行緒連線到master上,並請求master傳送二進位制日誌中的語句。master建立一個執行緒來把日誌的內容傳送到slave上。這個執行緒在master上執行 DE>SHOW PROCESSLISTDE> 語句後的結果中的 DE>Binlog DumpDE> 執行緒便是。slave上的I/O執行緒讀取master的 DE>Binlog DumpDE> 執行緒傳送的語句,並且把它們複製到其資料目錄下的中繼日誌(relay logs)中。第三個是SQL執行緒,salve用它來讀取中繼日誌,然後執行它們來更新資料。

        如上所述,每個master/slave上都有3個執行緒。每個master上有多個執行緒,它為每個slave連線都建立一個執行緒,每個slave只有I/O和SQL執行緒。

show slave master 用於提供有關從屬伺服器執行緒的關鍵引數的資訊

mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                Master_Host: 172.17.2.40
                Master_User: photorepl
                Master_Port: 4331
               Connect_Retry: 60
               Master_Log_File: mysql-bin.005502
                Read_Master_Log_Pos: 64401238
               Relay_Log_File: mysqld-relay-bin.015418
               Relay_Log_Pos: 13456757
               Relay_Master_Log_File: mysql-bin.005152
               Slave_IO_Running: Yes
              Slave_SQL_Running: Yes
               Replicate_Do_DB: 
               Replicate_Ignore_DB: mysql
               Replicate_Do_Table: 
               Replicate_Ignore_Table: 
               Replicate_Wild_Do_Table: photo.%
               Replicate_Wild_Ignore_Table: mysql.%
                 Last_Errno: 0
                 Last_Error: 
               Skip_Counter: 0
               Exec_Master_Log_Pos: 13456620
              Relay_Log_Space: 36764898503
               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: 249904
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

SHOW SLAVE STATUS會返回以下欄位:

 Slave_IO_State

SHOW PROCESSLIST輸出的State欄位的複製。SHOW PROCESSLIST用於從屬I/O執行緒。如果執行緒正在試圖連線到主伺服器,正在等待來自主伺服器的時間或正在連線到主伺服器等,本語句會通知您

 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執行緒是否被啟動併成功地連線到主伺服器上。

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具有以下值:

如果沒有指定UNTIL子句,則沒有值

如果從屬伺服器正在讀取,直到達到主伺服器的二進位制日誌的給定位置為止,則值為Master

如果從屬伺服器正在讀取,直到達到其中繼日誌的給定位置為止,則值為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具有以下值:

如果允許對主伺服器進行SSL連線,則值為Yes

如果不允許對主伺服器進行SSL連線,則值為No

如果允許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,因為從屬伺服器不知道主伺服器正在做什麼,也不能有把握地說落後多少。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-764532/,如需轉載,請註明出處,否則將追究法律責任。

相關文章