MySQL複製參數及狀態判斷總結

 

MySQL複製參數及狀態判斷總結

 

1、MySQL主從複製參數

1.1、master 常用參數

server_id                      服務器在集羣中唯一標識符

log_bin[=binlog_name]          啓動二進制日誌

log_bin_index                  二進制日誌索引名稱

binlog_format                  二進制日誌的類型

binlog_row_image               二進制鏡像保存量

binlog_do_db,binlog_ignore_db  記錄在二進制日誌中和不記錄在二進制日誌中

binlog_cache_size              緩存還沒刷新到磁盤的binlog日誌

max_binlog_cache_size          緩存還沒刷新到磁盤的最大binlog日誌

max_binlog_size                二進制日誌最大值

expire_logs_days               二進制日誌被保留的有效期

sync_binlog                    二進制日誌刷新到磁盤頻率

binlog_rows_query_log_events   二進制日誌基於行,用來指定額外的信息

log_error                      記錄錯誤日誌

slow_query_log_file            記錄慢查詢日誌位置

log_queries_not_using_indexes  查詢沒使用索引是否記錄到慢查詢日誌

slow_query_log                 啓用慢查詢日誌

log_slow_admin_statements      慢查詢日誌是否記錄管理語句

long_query_time                多長時間記錄到慢查詢日誌中

enforce_gtid_consistency       開啓gtid的一些安全限制

gtid_mode=on                   開啓gtid

 

1.2、slave常用參數

 

relay_log[=relay_log_name]            從節點中繼日誌名

relay_log_index                       中繼日誌索引名稱

replicate_do_db[table]                slave只重放指定的庫/表

replicate_ignore_db[table]            slave 忽略重放指定的庫/表

replicate_wild_do_table               slave重放滿足匹配的表

replicate_wild_ignore_table           slave忽略重放滿足匹配條件的表

slave_skip_errors                     自動忽略指定錯誤,逗號分割

slave_exec_mode                       取值IDEMPOTENT,STRICE是否自動忽略重複主鍵和主鍵找不到錯誤

log_slave_updates                     啓動從節點的二進制日誌

relay_log_purge                       如何清除中繼日誌文件,默認1 自動清理

read_only                             從庫只讀,SUPER權限用戶除外

super_read_only                       SUPER用戶設置只讀

skip_slave_start                      從節點跳過自動開啓複製

sync_relay_log和sysnc_relay_log_info  中繼日誌文件同步頻率,默認10000

repost_host                           區別不同的從節點,SHOW SLAVE HOSTS查看

slave_max_allowed_packet              從節點的SQL和IO線程允許最大的數據包容量

relay_log_recovery                    中繼日誌自動恢復,從庫意外停止後使用

master_info_repository                slave master節點信息保留在位置,默認file

relay_log_info_repository             從節點信息slave保留在位置,默認file

gtid_mode=on                          開啓gtid

enforce_gtid_consistency=on           開啓gtid的一些安全限制

 

 

1.3、半同步複製參數

rpl_semi_sync_master_enabled               主節點開啓半同步複製

rpl_semi_sync_master_timeout               半同步複製超時時間,默認10s

rpl_semi_sync_master_wait_no_slave         主節點是否需要在數據複製發生後等待一段時間(在master_timeout超時時間內,當slave的數量少於wait_for_slave_count時,是否保持半同步複製),默認on

rpl_semi_sync_master_wait_for_slave_count  master必須接收到slave ACK消息的數量,默認1

rpl_semi_sync_master_trace_level           master調式日誌輸出級別,可選1,16,32,64,默認32

rpl_semi_sync_slave_trace_level            slave調式日誌輸出級別,可選1,16,32,64,默認32

rpl_semi_sync_slave_enabled                從節點開啓半同步複製

rpl_semi_sync_master_wait_point            半同步複製master Storage commit在獲取從庫ACK之前(AFTER_COMMIT)還是之後(AFTER_SYNC),默認AFTER_SYNC

rpl_stop_slave_timeout                     控制stop slave 的執行時間,在重放一個大的事務的時候,突然執行stop slave,命令 stop slave會執行很久,這個時候可能產生死鎖或阻塞,嚴重影響性能,mysql 5.6可以通過rpl_stop_slave_timeout參數控制stop slave的執行時間。

slave_parallel_type    slave並行複製類型

slave_parallel_workers 並行複製進程數

 

2、主從同步狀態判斷

mysql> show slave status \G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: XX.XX.XX.XX

                  Master_User: repl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: binlog.001250

          Read_Master_Log_Pos: 657664

               Relay_Log_File: relaylog.002972

                Relay_Log_Pos: 657871

        Relay_Master_Log_File: binlog.001250

             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: 657664

              Relay_Log_Space: 40938241024

              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: 89

                  Master_UUID: 0090f5f1-3ec3-11e9-9cf2-e4434b18391a

             Master_Info_File: /data/mysql/data/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

           Master_Retry_Count: 86400

                  Master_Bind:

      Last_IO_Error_Timestamp:

     Last_SQL_Error_Timestamp:

               Master_SSL_Crl:

           Master_SSL_Crlpath:

           Retrieved_Gtid_Set: 0090f5f1-3ec3-11e9-9cf2-e4434b18391a:1-301580

            Executed_Gtid_Set: 0090f5f1-3ec3-11e9-9cf2-e4434b18391a:1-301580,

722985f1-3ec4-11e9-bc62-e4434b18399a:1-2

                Auto_Position: 1

         Replicate_Rewrite_DB:

                 Channel_Name:

           Master_TLS_Version:

1 row in set (0.00 sec)

 

Seconds_Behind_Master值計算,是通過當前系統時間戳減去sql_thread線程正在執行的binlog evnet上的時間戳,得到的差值就是Seconds_Behing_Master的值。

如果用這個判斷延遲,當io_thread停止時,沒接收到binglog,這時Seconds_Behing_Master就爲0,這種情況判斷主從延遲就不準確。

正常的判斷主從延遲:

首先Master_Log_File和Relay_Master_Log_File所指向的文件必須一致。

其次Read_Master_Log_Pos和Exec_Master_Log_Pos的位置也要一致才行。

 

3、查看半同步狀態

3.1、查看master semi sync狀態

mysql> SHOW GLOBAL STATUS LIKE 'rpl_semi%';

+--------------------------------------------+-------+

| Variable_name                              | Value |

+--------------------------------------------+-------+

| Rpl_semi_sync_master_clients               | 1     |

| Rpl_semi_sync_master_net_avg_wait_time     | 669   |

| Rpl_semi_sync_master_net_wait_time         | 1338  |

| Rpl_semi_sync_master_net_waits             | 2     |

| Rpl_semi_sync_master_no_times              | 0     |

| Rpl_semi_sync_master_no_tx                 | 0     |

| Rpl_semi_sync_master_status                | ON    |

| Rpl_semi_sync_master_timefunc_failures     | 0     |

| Rpl_semi_sync_master_tx_avg_wait_time      | 779   |

| Rpl_semi_sync_master_tx_wait_time          | 1559  |

| Rpl_semi_sync_master_tx_waits              | 2     |

| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |

| Rpl_semi_sync_master_wait_sessions         | 0     |

| Rpl_semi_sync_master_yes_tx                | 2     |

+--------------------------------------------+-------+

 

註解:

Rpl_semi_sync_master_clients
記錄支持半同步的slave的個數。
Rpl_semi_sync_master_net_avg_wait_time
master 等待slave 回覆的平均等待時間。 單位毫秒.
Rpl_semi_sync_master_net_wait_time
master 總的等待時間。
Rpl_semi_sync_master_net_waits
master 等待slave 回覆的的總的等待次數。
Rpl_semi_sync_master_no_times
master 關閉半同步複製的次數。
Rpl_semi_sync_master_no_tx
master 沒有收到slave的回覆而提交的次數,(應該可以理解爲master 等待超時的次數)
Rpl_semi_sync_master_status
標記master現在是否是半同步複製狀態。

Rpl_semi_sync_master_tx_avg_wait_time
master 花在每個事務上的平均等待時間。
Rpl_semi_sync_master_tx_wait_time
master 總的等待次數。

Rpl_semi_sync_master_wait_sessions
當前有幾個線程在等備庫響應
Rpl_semi_sync_master_yes_tx 
master 成功接收到slave的回覆的次數。
Rpl_semi_sync_slave_status
標記slave 是否在半同步狀態。

Rpl_semi_sync_master_timefunc_failures       

時間函數未正常工作的次數

Rpl_semi_sync_master_wait_pos_backtraverse   

改變當前等待最小二進制日誌的次數

 

3.2、查看slave的semi sync狀態

mysql > SHOW GLOBAL STATUS LIKE 'rpl_semi%';

+----------------------------+-------+

| Variable_name              | Value |

+----------------------------+-------+

| Rpl_semi_sync_slave_status | ON    |

+----------------------------+-------+

1 row in set (0.00 sec)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章