主庫二進制日志格式使用STATEMENT
在MySQL 5.1之前僅存在SBR模式, 又稱之為邏輯復制.
主庫記錄CUD操作的SQL語句, 從庫會讀取并重放.
優點
生成的日志量少, 節約網絡傳輸IO
當主從的列的順序不一致時, SBR依然可以正常工作.
如對大表進行結構修改時, 可以先修改從庫, 然后再進行主從切換.
缺點
對不確定性函數無法保證主從數據的一致對于PRocedure, trigger, function有可能在主從上表現不一致(SBR BUG)主庫上要鎖定多少行, 從庫上也需要所以多少行, 所以相對于ROW復制時從庫上需要更多的行鎖主庫二進制日志格式使用ROW
優點
對不確定性函數友好, 如UUID()
減少從庫上數據庫鎖的使用
insert into t_order_cnt(timestr, total, amount)select date(order_date), count(1), sum(amout)from t_order group by date(order_date);上面的SQL在主庫執行時會對t_order進行鎖表操作, 對于STATEMENT的復制從庫上也會對同樣的表進行鎖定, 但是基于ROW的復制僅需增加t_order對應的行的數據即可.
缺點
要求主從數據庫的表的結構一致, 否則可能會中斷復制無法在從庫上激活trigger基于Docker Compose構建的MySQL MHA集群
新聞熱點
疑難解答