트랜잭션 상황을 로그에 써 넣는 타이밍은 innodb_flush_log_at_trx_commit옵션으로 설정한다.
innodb_flush_log_at_trx_commit={0|1|2}
지정가능한 값은 다음과 같다.
0 log buffer내용이 1초간격으로 로그파일에 쓰여지고 flush된다. commit할 때는 아무것도 하지 않는다.
1 log buffer내용이 commit할 때에 로그 파일에 쓰여지고 flush된다.
2 log buffer내용이 commit할 때에 로그 파일에 쓰여지고 flush는 1초간격으로 이루어진다.
표준은 1로 , 안전성은 0이 가장 낮다. 만약 서버가 고장났을 경우에 1초간의 트랜잭션은 사라지기 때문이다.
물론, 1이나 2의 경우에도 급한 정전, 운영체제의 crash에 따른 영향을 100% 피할 수는 없다.
replication을 실행하고 있는 다면 다음과 같이 설정하고 가능한한 손실을 적게하는 것이 낫다.
replication을 사용하고 있는 경우 설정
[mysqld]
innodb_flush_log_at_trx_commit=1
sync_binlog=1