1. 程式人生 > >PXC狀態引數與變數引數

PXC狀態引數與變數引數

“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,表示在執行過程中,是全程強勢有序的,並且在使用到被修改的表時,都會將其殺死,這是預設的情況,並且是最簡單的方法,也推薦使用這種方法;