데이타를 update 후 비정상적으로 종료되면 (정전등) 다시 mysql 를 실행하며 이전에 update한 정보가 갱신되지 않고 이전데이타로 남아있습니다. 비정상적으로 종료전에 commit 명령어로 내렸는데도 이렇게 현상이 가끔 나타납니다. commit 명령이 제대로 동작하지 않는것인지 비정상적으로 종료시 mysql 버그인지 궁급합니다.
다른 db도 아마 마찮가지이겠지만 innodb도 트랜잭션 의 부하경감을 위해서 버퍼를 쓰는데 여차저차 복잡한건 제껴두고 이 버퍼를 바로 써버리도록 옵션을 조절할수 있습니다.
innodb_flush_log_at_trx_commit 이건데 이게 디폴트 1입니다. 이게 0이나 2로 설정되어있을경우에 데이터 로스가 생길수 있습니다.
또다른이유로는 OS나 디스크의 버퍼때문에 생기는 건데 mysql에서는 분명 log flush을 했는데 이걸 os가 실제로 안쓰고 버퍼에 챙겨두는거죠... 이런경우에는 단순히 데이터로스가 아니라 데이터손상이 올수도 있으니까 좀 위험하죠.