1. 程式人生 > >PXC——狀態參數與變量參數

PXC——狀態參數與變量參數

開始 recv 完全 順序 syn 範圍 有一個 cache tro

“galera 參數解析:”

1、狀態參數:

--wsrep_last_committed:

表示的是當前節點最新提交的事務號,也是最新galera GTID的後半部分,前半部分是參數wsrep_local_state_uuid的值,在每次執行提交、DDL執行完成或APPLY之後,都會更新這個值;


--wsrep_replicated:

表示當前節點已經復制過的事務數目。


--wsrep_replicated_bytes:

與參數wsrep_replicated相對應,每一個事務的大小不同,這個參數表示已經復制的wsrep_replicated個事務總字節大小(key和data)的總和;


--wsrep_repl_keys:

當前節點已經復制的wsrep_replicated個事務對應的總的key的數目,一個事務可以包含多個key;


--wsrep_repl_keys_bytes:

與參數wsrep_repl_keys對應,所有發送的key的大小加起來的值,代表總的字節大小;


--wsrep_repl_data_bytes:

與參數wsrep_repl_keys_bytes對應,與上面幾個參數的關系時:wsrep_replicated_bytes=wsrep_repl_keys_bytes+wsrep_repl_data_bytes+wsrep_replicated*64;


--wsrep_received:

與參數wsrep_replicated對應,表示當前節點已經收到的從寫節點復制過的事務數,單位為事務個數;


--wsrep_received_bytes:

對參數wsrep_received對應,表示收到的所有事務包含的key及DATA的字節數


--wsrep_local_commits:

表示當前節點本機提交的事務個數


--wsrep_local_cert_failures

表示本地節點驗證失敗的 次數


--wsrep_local_replays:

表示本地做replay的次數,這個參數值越大,表示本地出錯頻率越高


--wsrep_local_send_queue:

表示當前節點在等待復制的事務個數,就是發送隊列的長度;如果該參數值越大,說明本地壓力或網絡性能有問題,可以作為監控指標;

--wsrep_local_send_queue_max:

當前節點歷史上等待隊列最大的事務數目;


--wsrep_local_send_queue_min:

當前節點歷史上等待列最小的事務數目,一般就是0


--wsrep_local_send_queue_avg:

當前節點自從上次flush參數之後,等待隊列長度的平均值。其值越大則表示壓力越大,但是這個參數中沒有包括flow_control的等待;


--wsrep_local_recv_queue:

表示當前節點從其他節點接受的隊列中事務個數,這個隊列與flow control有關,如果這個值達到gcs.fc_limit值的話,就會發生flow control,本節點會向整個集群發送flow control小心,整個集群會被阻塞,二等地wsrep_local_recv_queue的值小於gcs.fc_limit*gcs.fc_factor之後,flow control解除。


--wsrep_local_recv_queue_mas:

表示當前節點歷史接收隊列中事務的最大個數


--wsrep_local_recv_queue_min:

表示當期節點歷史接收隊列中事務的最小個數


--wsrep_local_recv_queue_avg:

表示當前節點歷史接收隊列中事務的平均個數,如果某個節點的平均值都比其他的大,則可以考慮這個機器的硬件性能是不太好,或壓力造成的;


--wsrep_local_cached_downto:

表示當前節點cache中的最小GTID值,可以決定集群中其他節點在啟動時,是需要做IST還是SST。


--wsrep_flow_control_paused_ns:

表示由於flow control消息引起的集群阻塞時間長度,單位是納秒。這個參數不能通過flush status來重置。它的值是遞增累計的;


--wsrep_flow_control_paused:

表示從上次flush status之後開始,新產生的FC暫停時間與 從flush開始到show status like "wsrep%"命令執行的這段時間的比值,可以理解為一個暫停時間。這個值越接近0,說明系統越正常,如果差不多為1,則說明當前系統基本不能做復制了;


--wsrep_flow_control_sent:

當一個節點的復制任務隊列長度超過fc_limit時,這個節點就會給整個集群發送FC消息,這個參數表示當前節點向整個集群發送FC消息的次數,這個值越大表示這個節點做的越慢。如果這個值突增了,則說明這個節點有可能出現了問題,或這個節點負載增大了,導致apply寫集變慢;


--wsrep_flow_control_recv:

表示當前節點收到FC消息的次數。當這個參數突增時,就需要查看是哪個節點的sent值突增了,那麽這個 節點就有可能存在性能問題;


--wsrep_cert_deps_distance:

表示一個事務的GTID2和它所依賴的事務的GTID1之間差值的總和,與這段時間內所做的總的驗證通過的事務(n_certified)個數的比值。


--wsrep_commit_oooe:

這個參數的值永遠是0,如果出現別的值,請看官網資料


--wsrep_commit_oool:

這個參數的值永遠是0,如果出現別的值,請看官網資料


--wsrep_commit_window:

這個參數與上面的參數還是相關的,在每次提交時,都會檢查oooe;如果這個值越大,這說明真個提交過程的順序越亂,寫入事務壓力不太平衡;如果越接近1,則說明寫入越有秩序,事務相對比較均勻;

--wsrep_apply_oooe:

這個參數和上面oooe的道理是一樣的,如果這個值很接近0,則說明這個系統的執行基本是串行的;


--wsrep_apply_oool:

與參數wsrep_apply_oooe對應,這個參數標的含義是,如果值越大,則表示並行執行時亂序的現象越多;如果值越小,則說明基本是順序執行的;


--wsrep_apply_window:

這個參數值與上面的對應,這個值越大,表示並行apply事務間的GTID相差越大,這個節點的活動也就越頻繁;


--wsrep_local_state:

表示當前節點的狀態,(有4個值: 1:表示正在請求加入集群,速度很快一般看不到這個狀態;2:表示正在同步數據;3:表示當前節點已經加入集群;4:表示當前節點與整個集群是完全相同的)


--wsrep_local_state_comment:

這個參數與上面參數的4個狀態值一一對應的,是對上面節點值的一個描述;


--wsrep_cert_index_size:

表示當前節點的驗證隊列中,總共有多少個key;


--wsrep_causal_reads:

表示的是處理這種寫集等待的次數,不過這個參數已經不用了


--wsrep_cert_interval:

表示的是,所有事務的GTID值與它們各自可以看到的最新提交事務的GTID值之間差值的總和,與這段時間內所做的被驗證通過事務的總個數的比值;


--wsrep_evs_repl_latency:

表示GCOMM在消息傳送時的復制延遲,單位是秒;采樣時間通過參數evs.stats_report_period來控制,默認是PT1M


--wsrep_incoming_addresses:

表示當前急群眾,所有已經加入或正在加入集群的節點信息,格式為:IP:端口,IP:端口,可以通過該信息來做監控;


--wsrep_cluster_size:

表示當前集群中節點的個數,與參數wsrep_incoming_addresses對應,也可以作為監控項,一般監控條件必須大於或等於3,如果是3的話,則會發生腦裂的問題;


--wsrep_local_bf_aborts:

表示當前節點在運行過程中,由於事務的沖突,導致本地事務被主動取消的事務個數。如果這個值比較大,說明集群的寫入沖突比較多,可能需要調整寫入的方式,比如切換寫節點等;


--wsrep_local_index:

表示當前節點在集群中的編號。在集群中,每個節點都有一個唯一的編號,從0開始計數


--wsrep_ready:

一個很重要的監控項,可以知道當前節點的狀態是不是可以撫慰,正常情況下為ON,如果變為OFF,則可能是發生了腦裂,或者和其他節點之間的網絡連不上,又或者是galera集群沒有正常啟動等;一般可以通過命令set global wsrep_provider_options='pc.bootstrap=yes' 來恢復,不過在執行這個命令之後,需要觀察整個集群的狀態,不然可能會導致這個節點在邏輯上脫離集群。這個命令的作用就是讓當前節點變為primary,如果執行了,則說明確定要使用這個節點來提供服務了;


2、變量參數:

--wsrep_provider_options:

---cert.log_conflicts:

在galera中,提交的每一個事務都會做驗證,看看是不是有依賴關系,並堅持是不是有沖突等,發現了沖突,就由這個參數來控制是否要將沖突記錄下來,從而可以通過日誌查出原因或用於做一些其他的工作,日誌會被記錄到error_log文件中;

---gcache.dir:

用來指定GCache文件的目錄,只有在gcache.name參數指定的是相對路徑時,這個目錄才會起作用,而如果gcache.name指定的是絕對路徑,則這個參數就被忽略了,如果這個參數沒有指定,則會被設置為參數base_dir的值;

---gcache.name:

用來指定GCache文件的名字,名字中也可以帶著路徑,包括絕對路徑及相對路徑;


---gcache.mem_size:不建議使用!官方已經棄用


---gcache.page_size:

這個參數表示的就是新建物理文件的大小,如果一個還是不夠用,則會繼續新建同樣大小的物理文件,而當GCache被purge之後,物理文件的GCache就會被清除,當文件中沒有有效的寫集內容時,文件也會被刪除掉。所以只要物理文件出現,就說明GCache不夠用了;


---gcache.size:不建議使用!官方已經棄用


---gcs.fc_limit:

這個參數控制的就是接受隊列達到多大時,觸發FC


---gcs.fc_factor:

這個參數表示是,接收隊列在多大時,FC會解除。這個參數是一個比例,gcs.fc_limit X gcs.gc_factor的結果就是FC解除時的接收隊列長度。如果小於這個長度,則FC解除;


---gcs.fc_master_slave :

這個參數與上面兩個參數是相關的,如果設置為yes,表示當前集群的使用方式為主從模式,也就是單點寫入的模式,其他節點都是從節點;如果設置為no的話,說明是多點寫入模式,則gcs.fc_limit最終生效的值就會發生變化。


---gcs.sync_donor:

這個參數控制的是,在state transfer的過程中,donor是否要發送flow control消息;如果將這個參數設置為no,表示不產生flow control,這樣就是一種非阻塞式的state transfer;

---gmcast.listen_addr:

這個值是用來感知其他節點的加入操作的,而新加入節點在選擇donor之後會向這個地址發送消息,這就可以建立聯系的;

---gmcast.segment:

這個值的設置是用來在選擇donor時,確定哪個節點具有優先權的,範圍是0-255,值越大,優先權越高。一般都設置為0,也就是自動選擇donor;


---ist.recv_addr:

這個地址是用來設置做IST時joiner的接收地址的,默認情況下,設置為wsrep_node_address所指定的地址,端口為單獨的接收端口,格式為IP:PORT


---repl.commit_order:

這個參數控制的是galera並發控制的行為,針對的是提交操作。為了使所有節點產生的binlog完全一樣,建議這個值設置為3;


---repl.max_ws_size:

這個參數,是用來控制寫集復制大小的,單位是字節;

---pc.bootstrap:

這個參數可以用來將當前節點狀態為不可服務狀態(non-primary components)的節點,變為primary components狀態的節點;一般講這個參數的命令設置為:set global wsrep_provider_options='pc.bootstrap=yes';,用於快速處理故障,恢復線上服務;

--wsrep_start_position:

這是參數是PXC版本的mysqld新增的一個參數,用來在節點啟動時,指定當前節點最新的GTID值,或者是指定當前節點開始向集群要增量數據點的位置;


--wsrep_slave_threads:

這個參數,是用來設置galera cluster集群中,從節點執行apply時用於做並行復制的線程個數。

---wsrep_retry_autocommit:

這個參數是來控制事務執行行為的,如果驗證失敗,則每個節點應該都是驗證失敗的,那麽每個節點都會失敗,從節點在驗證失敗的情況下,直接忽略寫集即可;而主節點是通過參數wsrep_retry_autocommit來控制,如果不為0,則當前事務(自動提交的情況下)會再執行一次,從頭到尾重新執行,然後再次發送、驗證等;


--wsrep_recover:

這個參數,是用來找到某一個節點(處於shutdown狀態)最新GTID值的,它只需要去innodb的ibddata的一個固定位置,找到這個GTID值,然後將其輸入到日誌文件中,從而可以了解最新的位置及與集群的差集;


--wsrep_on:

這個參數用來控制當前節點的寫入是不是想要復制到其他節點。默認情況下,為了保證集群的一致性,都會將一個節點的寫入,復制到其他節點;

--wsrep_max_ws_size:

這個參數,用來控制galera cluster在某一個節點寫入事務大小,這裏指的是keys及DATA二者加起來的byte數目,這是個安全性的參數;


--wsrep_max_ws_rows:

這個參數,用來控制galera cluster在某一個節點寫入事務所影響的行數。如果超過這個值,則直接拋出異常,是一種安全性的參數;

--wsrep_desync:

在復制延遲的節點上設置這個參數為on,這樣這個節點就會變成了一種異步復制的模式,此時主庫可以一直寫入,從節點也一直apply,如果接受任務隊列的長度已經超過了fc.limit值,則這個從節點也不會發送flow control小心,整個集群的寫入安然無恙,只是有可能從節點的數據不是最新的了,有一段時間的延遲,如果可以幾首,那長期保持這樣的狀態也沒什麽不好的;如果延遲問題沒有了,那就不會再出現任務堆積的情況了,這是可以再講這個參數值設置為OFF,整個集群又保持一致了,就變成了真真正正的galera cluster;


--wsrep_cluster_address:

這個參數,格式類似:gcomm://192.168.1.1:3306,192.168.1.2:3306,每一個節點,啟動時都會通過設置這個參數來找到集群中的其他節點,指定的節點中可以是已經啟動的,也可以是沒有啟動的,galera會自動選擇並加入。建議在集群變更時盡量保證這個參數的值與集群中實際節點一致,避免在以後變更時出現不必要的麻煩;


--wsrep_OSU_method:

這個參數是用來控制DDL執行行為的;默認情況它的值是TOI,表示在執行過程中,是全程強勢有序的,並且在使用到被修改的表時,都會將其殺死,這是默認的情況,並且是最簡單的方法,也推薦使用這種方法;


PXC——狀態參數與變量參數