碼迷,mamicode.com
首頁 > 其他好文 > 詳細

Galera Cluster大坑的解決方案

時間:2019-06-18 15:57:31      閱讀:20      評論:0      收藏:0      [點我收藏+]

標簽:執行   完成   沖突   use   一個   galera   服務   方式   tiny   

有些同學在使用Galera Cluster之后,會發現有一些坑,如:
1)大表DDL操作會導致整個集群不可用。在DDL操作完成前集群都不可寫入任何事務,導致服務不可用。

解決方案:
直接使用pt-online-schema工具進行操作,可以避開這個問題。

2)由于Galera Cluster在執行DDL時,是Total Ordered Isolation(wsrep_OSU_method=TOI)的,所以必須要保證每個節點都是同時執行的,當然對于不是DDL的,也是Total Order的,因為每一個事務都具有同一個GTID值,DDL也不例外,而DDL涉及到的是表鎖,MDL鎖(Meta Data Lock),只要在執行過程中,遇到了MDL鎖的沖突,所有情況下,都是DDL優先,將所有的使用到這個對象的事務,統統殺死,不管是讀事務,還是寫事務,被殺的事務都會報出死鎖的異常,所以這也是一個Galera Cluster中,關于DDL的聞名遐邇的坑。

解決方案:
可以使用滾動升級方式在每個節點上分別執行DDL操作,這樣就可以避開上面的問題。操作如下:

SET wsrep_OSU_method=‘RSU‘;

ALTER TABLE test ADD COLUMN user_age tinyint;

SET wsrep_OSU_method=‘TOI‘;

即先在節點上修改實例升級方式為滾動升級(Rolling Schema Upgrade),然后再執行DDL語句,最后再將實例升級方式修改回去。

Galera Cluster大坑的解決方案

標簽:執行   完成   沖突   use   一個   galera   服務   方式   tiny   

原文地址:https://blog.51cto.com/liucb/2410442

(0)
(0)
   
舉報
評論 一句話評論(0
0條  
登錄后才能評論!
? 2014 mamicode.com 版權所有 京ICP備13008772號-2
迷上了代碼!
25选5历史开奖结果百度