您好,登錄后才能下訂單哦!
有些同學(xué)在使用Galera Cluster之后,會(huì)發(fā)現(xiàn)有一些坑,如:
1)大表DDL操作會(huì)導(dǎo)致整個(gè)集群不可用。在DDL操作完成前集群都不可寫入任何事務(wù),導(dǎo)致服務(wù)不可用。
解決方案:
直接使用pt-online-schema工具進(jìn)行操作,可以避開這個(gè)問(wèn)題。
2)由于Galera Cluster在執(zhí)行DDL時(shí),是Total Ordered Isolation(wsrep_OSU_method=TOI)的,所以必須要保證每個(gè)節(jié)點(diǎn)都是同時(shí)執(zhí)行的,當(dāng)然對(duì)于不是DDL的,也是Total Order的,因?yàn)槊恳粋€(gè)事務(wù)都具有同一個(gè)GTID值,DDL也不例外,而DDL涉及到的是表鎖,MDL鎖(Meta Data Lock),只要在執(zhí)行過(guò)程中,遇到了MDL鎖的沖突,所有情況下,都是DDL優(yōu)先,將所有的使用到這個(gè)對(duì)象的事務(wù),統(tǒng)統(tǒng)殺死,不管是讀事務(wù),還是寫事務(wù),被殺的事務(wù)都會(huì)報(bào)出死鎖的異常,所以這也是一個(gè)Galera Cluster中,關(guān)于DDL的聞名遐邇的坑。
解決方案:
可以使用滾動(dòng)升級(jí)方式在每個(gè)節(jié)點(diǎn)上分別執(zhí)行DDL操作,這樣就可以避開上面的問(wèn)題。操作如下:
SET wsrep_OSU_method='RSU';
ALTER TABLE test ADD COLUMN user_age tinyint;
SET wsrep_OSU_method='TOI';
即先在節(jié)點(diǎn)上修改實(shí)例升級(jí)方式為滾動(dòng)升級(jí)(Rolling Schema Upgrade),然后再執(zhí)行DDL語(yǔ)句,最后再將實(shí)例升級(jí)方式修改回去。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。