MySQL主從複製中的“show slave status”詳細含義
MySQL主從複製中的“show slave status”詳細含義
正常狀態的資訊
*************************** 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時,會報錯
在搭建好mysql主從之後,我們一般在從庫上透過命令
show slave status\G
來檢視主從的狀態,會有很多的引數,接下來筆者就帶大家好好的瞭解這些引數
root@localhost (none)>show slave status\G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.100 Master_User: mysync Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.001822 Read_Master_Log_Pos: 290072815 Relay_Log_File: mysqld-relay-bin.005201 Relay_Log_Pos: 256529594 Relay_Master_Log_File: mysql-bin.001821 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: 256529431 Relay_Log_Space: 709504534 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: 2923Master_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: 1 Master_UUID: 13ee75bb-99e2-11e6-be4d-b499baa80e6e Master_Info_File: /home/data/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Reading event from the relay log Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 01 row in set (0.02 sec)
引數詳解:
1. Slave_IO_State
這裡顯示了當前slave I/O執行緒的狀態(slave連線到master的狀態)。狀態資訊和使用show processlist | grep "system user"(會顯示兩條資訊,一條slave I/O執行緒的,一條是slave SQL執行緒的)顯示的內容一樣。
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: 192.168.1.100
mysql主庫的ip地址
3. Master_User: mysync
這個是master上面的一個使用者。用來負責主從複製的使用者,建立主從複製的時候建立的(具有reolication slave許可權)。
4. Master_Port: 3306
master伺服器的埠 一般是3306
5. Connect_Retry: 60
連線中斷後,重新嘗試連線的時間間隔。預設值是60秒。
#與master相關的日誌的資訊
6. Master_Log_File: mysql-bin.001822
當前I/O執行緒正在讀取的主伺服器二進位制日誌檔案的名稱。
7. Read_Master_Log_Pos: 290072815
當前I/O執行緒正在讀取的二進位制日誌的位置。
#與relay log相關的資訊
8. Relay_Log_File: mysqld-relay-bin.005201
當前slave SQL執行緒正在讀取並執行的relay log的檔名。
9. Relay_Log_Pos: 256529594
當前slave SQL執行緒正在讀取並執行的relay log檔案中的位置;(Relay_Log_File下的Relay_Log_Pos其實一一對應著Relay_Master_Log_File的Exec_Master_Log_Pos。)
10. Relay_Master_Log_File: mysql-bin.001821
當前slave SQL執行緒讀取並執行的relay log的檔案中多數近期事件,對應的主伺服器二進位制日誌檔案的名稱。(說白點就是我SQL執行緒從relay日誌中讀取的正在執行的sql語句,對應主庫的sql語句記錄在主庫的哪個binlog日誌中)
#slave I/O和SQL執行緒的狀態(重要)
11. Slave_IO_Running: Yes
I/O執行緒是否被啟動併成功地連線到主伺服器上。
12. Slave_SQL_Running: Yes
SQL執行緒是否被啟動。
13. Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
這些引數都是為了用來指明哪些庫或表在複製的時候不要同步到從庫,但是這些引數用的時候要小心,因為 當跨庫使用的時候 可能會出現問題。
一般情況下 ,限制的時候都用Replicate_Wild_Ignore_Table這個引數。
14. Last_Errno: 0
Last_Error
slave的SQL執行緒讀取日誌引數的的錯誤數量和錯誤訊息。錯誤數量為0並且訊息為空字串表示沒有錯誤。
如果Last_Error值不是空值,它也會在從屬伺服器的錯誤日誌中作為訊息顯示。
15. Skip_Counter: 0
SQL_SLAVE_SKIP_COUNTER的值,用於設定跳過sql執行步數。
16. Exec_Master_Log_Pos: 256529431
slave SQL執行緒當前執行的事件,對應在master相應的二進位制日誌中的position。(結合Relay_Master_Log_File理解,而且在Relay_Master_Log_File這個值等於Master_Log_File值的時候,Exec_Master_Log_Pos是不可能超過Read_Master_Log_Pos的。)
17. Relay_Log_Space: 709504534
所有原有的中繼日誌結合起來的總大小。
18. Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
在START SLAVE語句的UNTIL子句中指定的值。
Until_Condition具有以下值:
1) 如果沒有指定UNTIL子句,則沒有值
2) 如果從屬伺服器正在讀取,直到達到主伺服器的二進位制日誌的給定位置為止,則值為Master
3) 如果從屬伺服器正在讀取,直到達到其中繼日誌的給定位置為止,則值為Relay
Until_Log_File和Until_Log_Pos用於指示日誌檔名和位置值。日誌檔名和位置值定義了SQL執行緒在哪個點中止執行。
19. Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Master_SSL_Verify_Server_Cert: No
Master_SSL_Crl:
Master_SSL_Crlpath:
這些欄位顯示了被從屬伺服器使用加密相關的引數。這些引數用於連線主伺服器。
Master_SSL_Allowed具有以下值:
1) 如果允許對主伺服器進行SSL連線,則值為Yes
2) 如果不允許對主伺服器進行SSL連線,則值為No
3) 如果允許SSL連線,但是從屬伺服器沒有讓SSL支援被啟用,則值為Ignored。
與SSL有關的欄位的值對應於–master-ca,–master-capath,–master-cert,–master-cipher和–master-key選項的值。
20. seconds_Behind_Master: 2923
這個值是時間戳的差值。是slave當前的時間戳和master記錄該事件時的時間戳的差值。
21. Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
最後一次I/O執行緒或者SQL執行緒的錯誤號和錯誤訊息。
22. Replicate_Ignore_Server_Ids:
主從複製,從庫忽略的主庫伺服器Id號。就是不以這些伺服器Id為主庫。
23. Master_Server_Id: 1
Master_UUID: 13ee75bb-99e2-11e6-be4d-b499baa80e6e
Master_Info_File: /home/data/mysql/master.info
分別表示主庫伺服器id號,主庫伺服器的UUID好,還有在從庫中儲存主庫伺服器相關的目錄位置。
24. SQL_Delay: 0
一個非負整數,表示秒數,Slave滯後多少秒於master。
25. SQL_Remaining_Delay: NULL
當 Slave_SQL_Running_State 等待,直到MASTER_DELAY秒後,Master執行的事件,此欄位包含一個整數,表示有多少秒左右的延遲。在其他時候,這個欄位是NULL。
26. Slave_SQL_Running_State: Reading event from the relay log
SQL執行緒執行狀態:
1) Reading event from the relay log
執行緒已經從中繼日誌讀取一個事件,可以對事件進行處理了。
2) Has read all relay log; waiting for the slave I/O thread to update it
執行緒已經處理了中繼日誌檔案中的所有事件,現在正等待I/O執行緒將新事件寫入中繼日誌。
3) Waiting for slave mutex on exit
執行緒停止時發生的一個很簡單的狀態。
27. Master_Retry_Count: 86400
連線主庫失敗最多的重試次數。
28. Master_Bind:
slave從庫在多網路介面的情況下使用,以確定用哪一個slave網路介面連線到master。
29. Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
最後一次I/O執行緒或者SQL執行緒錯誤時的時間戳。
#GTID模式相關
30. Retrieved_Gtid_Set:
獲取到的GTID<IO執行緒>
Executed_Gtid_Set:
執行過的GTID<SQL執行緒>
Auto_Position: 0
理解與應用 :
1、為什麼執行stop slave; 再start slave;可以繼續主從關係呢?
其實執行stop slave;就是分別關閉了I/O執行緒(stop slave IO_THREAD;)和SQL執行緒(stop slave SQL_THREAD;),I/O執行緒會維護master.info資訊的更新,SQL執行緒會維護relay-log.info資訊的更新,在執行start slave;時候,會依照master.info和relay-log.info資訊,繼續執行I/O執行緒和SQL執行緒。
2、怎樣從一個從庫再複製一個新的從庫呢?
步驟:
-
-
在從庫上面stop slave IO_THREAD;關閉IO執行緒
-
等待SQL執行緒執行完成,當Relay_Master_Log_File和Master_Log_File二進位制日誌檔名一致,且Exec_Master_Log_Pos等於Read_Master_Log_Pos值。
-
mysqldump匯出所需要的庫,到新的從庫伺服器,並匯入。
-
主庫授權replication slave許可權給新的從庫
-
新的從庫使用change master to命令,master_log_file對應Master_Log_File值,master_log_pos對應Read_Master_Log_Pos值。
-
在從庫執行start slave IO_THREAD;和在新的從庫上執行start slave;
-
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在itpub、部落格園、CSDN和個人微 信公眾號( xiaomaimiaolhr )上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文部落格園地址: http://www.cnblogs.com/lhrbest ● 本文CSDN地址: https://blog.csdn.net/lihuarongaini ● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: ........................................................................................................................ ● QQ群號: 230161599 (滿) 、618766405 ● 微 信群:可加我微 信,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ) ,註明新增緣由 ● 於 2019-07-01 06:00 ~ 2019-07-31 24:00 在西安完成 ● 最新修改時間:2019-07-01 06:00 ~ 2019-07-31 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店 : ● 小麥苗出版的資料庫類叢書 : http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網路班 : http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁 : https://lhr.ke.qq.com/ ........................................................................................................................ 使用 微 信客戶端 掃描下面的二維碼來關注小麥苗的微 信公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2651332/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SHOW SLAVE STATUS 詳解
- mysql主從複製詳細部署MySql
- mysql 主從複製搭建詳細步驟MySql
- MySQL主從複製的詳細過程介紹MySql
- MySQL的主從複製、半同步複製、主主複製詳解MySql
- Mysqldump實現mysql的master-slave主從複製MySqlAST
- MySQL的主從複製與MySQL的主主複製MySql
- MySQL 5.5.x 配置Master-Slave主從複製MySqlAST
- [MySQL進階之路][No.0002] SHOW SLAVE STATUSMySql
- Redis 主從複製詳細解讀Redis
- MySQL show status 命令詳解MySql
- 技術分享 | show engine innodb status中Pages flushed up to 的含義
- MySQL主從複製與主主複製MySql
- MySQL主從複製配置引數 -- logs-slave-updatesMySql
- Innobackupex實現mysql線上搭建master-slave主從複製MySqlAST
- MySQL的主從複製MySql
- mysql5.7主從複製,主主複製MySql
- MySQL show engine innodb status 詳解MySql
- 【Mysql】show engine innodb status詳解MySql
- MySQL:show slave status 關鍵值和MGRrelay log的清理策略MySql
- MySQL主從複製、半同步複製和主主複製MySql
- mysql複製--主從複製配置MySql
- MySQL 主從複製MySql
- 【MySql】主從複製MySql
- MySQL主從複製MySql
- MySQL主從複製之GTID模式詳細介紹鞴嬈MySql模式
- MySQL主從複製、半同步複製和主主複製概述MySql
- MYSQL主從複製的搭建MySql
- MySQL主從複製_複製過濾MySql
- 配置mysql5.5主從複製、半同步複製、主主複製MySql
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- MySQL主從複製原理MySql
- mysql--主從複製MySql
- mysql主從複製搭建MySql
- MySql 主從複製配置MySql
- MySQL主從複製配置MySql
- mysql 8.4 主從複製MySql