Galera是一個MySQL(也支持MariaDB,Percona)的同步多主集羣軟件,目前只支持InnoDB引擎。mysql
主要功能:sql
優點:數據庫
由於是多主,因此不存在Slave lag(延遲)緩存
不存在丟失交易的狀況網絡
同時具備讀和寫的擴展能力併發
更小的客戶端延遲異步
節點間數據是同步的,而Master/Slave模式是異步的,不一樣slave上的binlog多是不一樣的ide
技術:優化
Galera集羣的複製功能基於Galera library實現,爲了讓MySQL與Galera library通信,特別針對MySQL開發了wsrep API。ui
查看MySQL版本: mysql> SHOW GLOBAL VARIABLES LIKE 'version';
查看wsrep版本: mysql> SHOW GLOBAL STATUS LIKE 'wsrep_provider_version';
查看wsrep有關的全部變量: mysql> SHOW VARIABLES LIKE 'wsrep%' G
查看Galera集羣狀態: mysql> show status like 'wsrep%';
監控狀態參數說明:
集羣完整性檢查:
wsrep_cluster_state_uuid:在集羣全部節點的值應該是相同的,有不一樣值的節點,說明其沒有鏈接入集羣.
wsrep_cluster_conf_id:正常狀況下全部節點上該值是同樣的.若是值不一樣,說明該節點被臨時"分區"了.當節點之間網絡鏈接恢復的時候應該會恢復同樣的值.
wsrep_cluster_size:若是這個值跟預期的節點數一致,則全部的集羣節點已經鏈接.
wsrep_cluster_status:集羣組成的狀態.若是不爲"Primary",說明出現"分區"或是"split-brain"情況.
節點狀態檢查:
wsrep_ready: 該值爲ON,則說明能夠接受SQL負載.若是爲Off,則須要檢查wsrep_connected.
wsrep_connected: 若是該值爲Off,且wsrep_ready的值也爲Off,則說明該節點沒有鏈接到集羣.(多是wsrep_cluster_address或wsrep_cluster_name等配置錯形成的.具體錯誤須要查看錯誤日誌)
wsrep_local_state_comment:若是wsrep_connected爲On,但wsrep_ready爲OFF,則能夠從該項查看緣由.
複製健康檢查:
wsrep_flow_control_paused:表示複製中止了多長時間.即代表集羣由於Slave延遲而慢的程度.值爲0~1,越靠近0越好,值爲1表示複製徹底中止.可優化wsrep_slave_threads的值來改善.
wsrep_cert_deps_distance:有多少事務能夠並行應用處理.wsrep_slave_threads設置的值不該該高出該值太多.
wsrep_flow_control_sent:表示該節點已經中止複製了多少次.
wsrep_local_recv_queue_avg:表示slave事務隊列的平均長度.slave瓶頸的預兆.
最慢的節點的wsrep_flow_control_sent和wsrep_local_recv_queue_avg這兩個值最高.這兩個值較低的話,相對更好.
檢測慢網絡問題:
wsrep_local_send_queue_avg:網絡瓶頸的預兆.若是這個值比較高的話,可能存在網絡瓶
衝突或死鎖的數目:
wsrep_last_committed:最後提交的事務數目
wsrep_local_cert_failures和wsrep_local_bf_aborts:回滾,檢測到的衝突數目
mysql是經過線程緩存來完成線程重用的。客戶端發起鏈接時,首先會去線程緩衝池裏找是否是有空閒的線程。若是沒有才會去新建線程。當一個鏈接斷開的時候,並不會立刻銷燬線程釋放資源。而是暫時把線程放在緩衝池中掛起。
查看數據庫鏈接狀況: mysql>show status like 'Thread%';
threads_cached:緩衝池中的線程個數 threads_connected:鏈接中的線程數 threads_connected:已經建立的線程數 在併發數低的狀況下,通常Threads_created參數是treads_cached和treads_connected參數之和。當併發數高的狀況下,Threads_created就會暴增,這個時候就須要考慮thread_cache_size來設置緩衝池的大小了