一、binlog的寫入機制
事務(wù)的執(zhí)行過程是先把日志存入binglog cache擂红,存入的大小可以由參數(shù)binlog_cache_size 控制仪际,如果緩存不夠大,會暫存到磁盤中昵骤,事務(wù)提交的時候树碱,執(zhí)行器會把日志存入binlog中,并清空binglog cache变秦。
執(zhí)行write操作的時候速度比較快成榜,這時binlog并沒有進行持久化,只有執(zhí)行了fsync操作后才會執(zhí)行(這個時候才會占用磁盤的IOPS)蹦玫。
1.write 和 fsync 的時機怎么控制
由sync_binlog控制:
1.當sync_binlog = 0 時赎婚,只執(zhí)行write操作,不執(zhí)行fsync操作
2.當sync_binglog = 1時樱溉,每個線程執(zhí)行完write都要執(zhí)行fsync操作
3.當sync_binglog = N(N>1)挣输,執(zhí)行完N個write操作后執(zhí)行一次fsync.
通常業(yè)務(wù)中會選擇3,N在100-1000之間福贞,但是值得注意的是撩嚼,如果數(shù)據(jù)庫宕機,可能會造成N個事務(wù)的日志丟失。