您好,登錄后才能下訂單哦!
有些同學在使用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語句,最后再將實例升級方式修改回去。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。