show slave status命令詳細解析

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用它來讀取中繼日誌,而後執行它們來更新數據。mysql

        如上所述,每一個master/slave上都有3個線程。每一個master上有多個線程,它爲每一個slave鏈接都建立一個線程,每一個slave只有I/O和SQL線程。sql

show slave status 用於提供有關從屬服務器線程的關鍵參數的信息數據庫

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_Statespa

SHOW PROCESSLIST輸出的State字段的拷貝。SHOW PROCESSLIST用於從屬I/O線程。若是線程正在試圖鏈接到主服務器,正在等待來自主服務器的時間或正在鏈接到主服務器等,本語句會通知您線程

 Master_User日誌

被用於鏈接主服務器的當前用戶。server

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,由於從屬服務 器不知道主服務器正在作什麼,也不能有把握地說落後多少。

 

 

 

 

 

 

 

 

 

 

 

2、正常狀態的信息 *************************** 1. row ***************************                Slave_IO_State: Waiting for master to send event                   Master_Host: 10.1.1.1                   Master_User: rep_user                   Master_Port: 3306                 Connect_Retry: 10               Master_Log_File: binlog.000026           Read_Master_Log_Pos: 446                Relay_Log_File: relay.000008                 Relay_Log_Pos: 589         Relay_Master_Log_File: binlog.000026              Slave_IO_Running: Yes             Slave_SQL_Running: Yes               Replicate_Do_DB:           Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                    Last_Error:                  Skip_Counter: 0           Exec_Master_Log_Pos: 446               Relay_Log_Space: 878               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: 0 Master_SSL_Verify_Server_Cert: No                 Last_IO_Errno: 0                 Last_IO_Error:                Last_SQL_Errno: 0                Last_SQL_Error:   Replicate_Ignore_Server_Ids:              Master_Server_Id: 2211 1 row in set (0.00 sec) 狀態解釋:      1.Slave_IO_State: Waiting for master to send event        這裏顯示了當前slave I/O線程的狀態。狀態信息和使用show processlist顯示的內容同樣。        slave I/O線程的狀態,有如下幾種:        1) waiting for master update            這是connecting to master狀態以前的狀態       2) connecting to master           I/O線程正嘗試鏈接到master       3) checking master version           在與master創建鏈接後,會出現該狀態。該狀態出現的時間很是短暫。       4) registering slave on master           在與master創建鏈接後,會出現該狀態。該狀態出現的時間很是短暫。         5) requesting binlog dump            在與master創建鏈接後,會出現該狀態。該狀態出現的時間很是短暫。在這個狀態下,I/O線程向master發送請求,請求binlog,位置從指定的binglog 名字和binglog的position位置開始。        6) waiting to reconnect after a failed binlog dump request            若是由於鏈接斷開,致使binglog的請求失敗,I/O線程會進入睡眠狀態。而後按期嘗試重連。嘗試重連的時間間隔,可使用命令"change master to master_connect_trt=X;"改變。        7) reconnecting after a failed binglog dump request            I/O進程正在嘗試鏈接master        8) waiting for master to send event            說明,已經成功鏈接到master,正等待二進制日誌時間的到達。若是master 空閒,這個狀態會持續很長時間。若是等待的時間超過了slave_net_timeout(單位是秒)的值,會出現鏈接超時。在這種狀態下,I/O線程會 人爲鏈接失敗,並開始嘗試重連       9) queueing master event to the relay log           此時,I/O線程已經讀取了一個event,並複製到了relay log 中。這樣SQL 線程能夠執行此event       10) waiting to reconnect after a failed master event read           讀取時出現的錯誤(由於鏈接斷開)。在嘗試重連以前,I/O線程進入sleep狀態,sleep的時間是master_connect_try的值(默認是60秒)       11) reconnecting after a failed master event read           I/O線程正嘗試重連master。若是鏈接創建,狀態會變成"waiting for master to send event"       12) waiting for the slave sql thread to free enough relay log space          這是由於設置了relay_log_space_limit,而且relay log的大小已經整張到了最大值。I/O線程正在等待SQL線程經過刪除一些relay log,來釋放relay log的空間。       13) waiting for slave mutex on exit           I/O線程中止時會出現的狀態,出現的時間很是短。    2. Master_Host: 10.1.8.62        Master_User: rep_user        Master_Port: 3306        這3條信息,顯示了slave鏈接master時,使用的master的主機---master_host、鏈接master用的用戶---master_user、鏈接master的端口---master_port。    3. Connect_Retry: 10       鏈接中斷後,從新嘗試鏈接的時間間隔。默認值是60秒。    4. Master_Log_File: binlog.000026        Read_Master_Log_Pos: 446        這兩條信息,顯示了與master相關的日誌的信息。master_log_file:當前I/O線程正在讀取的master 二進制日誌的文件名;read_master_log_pos:當前I/O線程正在讀取的二進制日誌的位置    5.  Relay_Log_File: relay.000008         Relay_Log_Pos: 589         Relay_Master_Log_File: binlog.000026         這3條信息,顯示了與relay log相關的信息。relay_log_file:當前SQL線程正在讀取並執行的relay log的文件名;relay_log_pos:當前SQL線程正在讀取並執行的relay log文件的位置;relay_master_log_file:master 二進制日誌的文件名。該文件包含當前SQL執行的事物    6.  Slave_IO_Running: Yes         Slave_SQL_Running: Yes         顯示了當前I/O線程和SQL線程的狀態    7.  Replicate_Do_DB:         Replicate_Ignore_DB:         Replicate_Do_Table:         Replicate_Ignore_Table:         Replicate_Wild_Do_Table:         Replicate_Wild_Ignore_Table:         這部分顯示的是關於複製DB和table的信息。    8.  Last_Errno: 0         Last_Error:         laster_errno和laster_error是 Last_SQL_Errno和Last_SQL_Error的同義詞。   9.  Skip_Counter: 0        系統參數sql_slave_skip_counter的值。sql_slave_skip_counter:slave應該跳過的事件數   10. Exec_Master_Log_Pos: 446        sql線程當前執行的事件,在master 二進制日誌中的position   11. Relay_Log_Space: 878         全部存在relay log的大小   12. Seconds_Behind_Master: 0        這個值是時間戳的差值。是slave當前的時間戳和master記錄該事件時的時間戳的差值   13. Replicate_Ignore_Server_Ids:         slave當前會跳過的事件號   14. Master_Server_Id: 2211        master的server-id;若是master和slave的server-id相同,在啓動slave時,會報錯

相關文章
相關標籤/搜索