MySQL宕機可能導致2種丟資料的場景

2021-09-21 00:01:06 字數 552 閱讀 6955

1、引擎層提交了,但binlog沒寫入,備庫丟事務

2、引擎層沒有prepare,但binlog寫入,主庫丟事務

即使我們將引數設定成innodb_flush_log_at_trx_commit =1sync_binlog = 1,也還會面臨這樣一種情況:主庫crash時還有binlog沒傳遞到備庫,如果我們直接提公升備庫為主庫,同樣會導致主備不一致,老主庫必須根據新主庫重做,才能恢復到一致的狀態。針對這種場景,我們可以通過開啟semisync的方式來解決,一種可行的方案描述如下:

設定雙1強持久化配置;

我們將semisync的超時時間設到極大值,同時使用semisync after_sync模式,即使用者執行緒在寫入binlog後,引擎層提交前等待備庫ack;

基於步驟1的配置,我們可以保證在主庫crash時,所有老主庫比備庫多出來的事務都處於prepare狀態;

將老主庫的最後乙個binlog進行截斷,截斷的位點即為步驟3記錄的位點;

啟動老主庫,那些已經傳遞到備庫的事務都會提交掉,未傳遞到備庫的binlog都會回滾掉。

c 有多少種可能導致寫檔案失敗?

1.路徑中有非法字元 path.getinvalidpathchars 2.檔名中有非法字元 path.getinvalidfilenamechars 3.檔案建立時,資料夾唯讀。4.檔案建立時,資料夾許可權不足,如需要管理員許可權。5.檔案建立時,資料夾不存在。7.相對路徑,最好轉換為絕對路徑。8...

避雷 六種職場著裝可能導致你面試失敗

儀容,簡單講是指人體不需要著裝的部位,主要是面部,廣義上還包括頭髮 手部 包括手指甲 以及穿著某些服裝而顯露出的腿部。儀容除了能給面試官造成直接而敏感的 第一印象 外,在接下來的整個面試過程中,美好的儀容也能令溝通更為順利,增進雙方了解程度。打造最穩妥儀容關鍵要遵循兩原則,兩適宜。兩原則為 簡單大方...

mysql導致索引失效的10種情況

索引失效的情況 1.全值匹配我最愛 建立的符合索引盡量和where的條件個數和順序都保持一致 2.最佳最字首法則,帶頭大哥不能死,中間兄弟不能斷。如果索引了多列,要遵守最左字首法則。指的是查詢從索引的最左前列開始並且不跳過索引中的列 3.不在索引列上做任何操作 計算 函式 自動or手動 型別轉換 會...