sync-binlog = 1
innodb_flush_log_at_trx_commit = 1
sync-binlog=0: 關閉通過MySQL服務器將二進制日志刷入磁盤,MySQL服務器依賴于操作系統(tǒng)每秒將二進制日志刷新到磁盤。這個設置提供了最好的性能,但是當碰到斷電或系統(tǒng)崩潰的時候,可能會造成服務器提交的事務沒有被同步到二進制日志中。
sync-binlog=1: 開啟在事務提交前將二進制日志刷入磁盤。這是最安全的設置,但是這對磁盤讀寫會造成負面影響。當碰到斷電或系統(tǒng)崩潰的時候,丟失的事務只是進入準備狀態(tài),這個操作允許自動恢復程序去回滾這些事務,保證了沒有事務會從二進制日志中丟失。
sync-binlog=N: 每向二進制日志文件寫入N條SQL或N個事務后,則把二進制日志文件的數(shù)據(jù)刷新到磁盤上;
innodb_flush_log_at_trx_commit=0: log buffer將每秒一次地寫入log file中,并且log file的flush(刷到磁盤)操作同時進行。該模式下在事務提交的時候,不會主動觸發(fā)寫入磁盤的操作。
innodb_flush_log_at_trx_commit=1: 完全遵從ACID,每次事務提交時MySQL都會把log buffer的數(shù)據(jù)寫入log file,并且flush(刷到磁盤)中去。
innodb_flush_log_at_trx_commit=2: 每次事務提交時MySQL都會把log buffer的數(shù)據(jù)寫入log file,但是flush(刷到磁盤)操作并不會同時進行。該模式下,MySQL會每秒執(zhí)行一次 flush(刷到磁盤)操作。
innodb-log-files-in-group = 5 #redo log 組數(shù)
innodb-log-files-size = 128M #redo log 大小
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT r.trx_id
SHOW PROCESSLIST;
SHOW ENGINE INNODB STATUS;