您好,登錄后才能下訂單哦!
pt-online-schema-change工具依賴于觸發(fā)器的機(jī)制去實現(xiàn)表的無鎖DDL。那我們試想在一主一從的情況下,有個大表需要執(zhí)行DDL操作,為了驗證該操作的執(zhí)行時長,先用pt-online-schema-change工具在從庫上執(zhí)行變更。確認(rèn)沒有問題后再在主庫上執(zhí)行變更。當(dāng)然,在執(zhí)行之前是需要開啟會話級的sql_log_bin=0以避免記錄到binlog。
但是我們從官方文檔中獲知如下:
很明顯,如果主從架構(gòu)下,binlog的日志格式是row的話,依賴觸發(fā)器機(jī)制的pt-online-schema-change是會造成數(shù)據(jù)丟失的。因為增量的數(shù)據(jù)無法通過觸發(fā)器去收集。也就是說,在基于主庫的binlog為row格式的情況下,從庫的觸發(fā)器是不會起作用的。因為主庫本身通過觸發(fā)器產(chǎn)生的變更已經(jīng)寫入binlog同步到從庫。如果從庫的觸發(fā)器也生效的話,就會出現(xiàn)重復(fù)。
總結(jié):在基于主從復(fù)制架構(gòu)下,如果主庫binlog的日志格式為row情況下,pt-online-schema-change工具必須在主庫執(zhí)行才能避免主從數(shù)據(jù)不一致。如果日志格式是statement的話,則可以先在從庫執(zhí)行pt-online-schema-change再在主庫執(zhí)行。但是目前官方也建議參數(shù)binlog_format設(shè)置為row,而非statement,以避免某些情況下的主從數(shù)據(jù)不一致發(fā)生。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。