innodb_flush_log_at_trx_commit=0으로 설정해도 안전합니까?

innodb_flush_log_at_trx_commit=0으로 설정해도 안전합니까?

RAID 컨트롤러에 배터리 지원 쓰기 캐시가 있는 서버(Dell PE2950)가 있습니다.

raid0 볼륨에 데이터 파일이 저장된 mysql 서버에서 innodb_flush_log_at_trx_commit=0을 설정하는 것이 안전합니까?

볼륨이 raid1/5/10이라면 다른 대답이 있을까요?

감사해요!

답변1

데이터 손실이 걱정된다면 안전하지 않습니다. 매뉴얼에 따르면 트랜잭션이 커밋되었지만 아직 디스크에 기록되지 않고 메모리에만 기록될 수 있습니다. 이는 mysqld 충돌이나 운영 체제 충돌 또는 정전으로 인해 트랜잭션이 손실될 수 있음을 의미합니다.

일부 시스템에서는 트랜잭션이 완전히 손실되거나 완전히 유지되는 한 트랜잭션을 잃어도 괜찮을 수 있습니다. 이 경우 이 설정을 끌 수 있습니다.

배터리 지원 RAID 컨트롤러의 관련성은 컨트롤러의 안전한 쓰기 캐싱입니다. 컨트롤러가 쓰기를 캐시했지만 배터리 없이 전원이 꺼지면 쓰기 캐시의 데이터가 손실됩니다. 그러나 MySQL은 이미 이것이 디스크에 안전하게 있을 것이라고 예상하고 있습니다. 따라서 배터리를 사용하면 RAID 컨트롤러에서 쓰기 캐싱을 안전하게 사용할 수 있습니다. 일반적으로 컨트롤러에는 배터리 잔량이 너무 낮은 경우 자동으로 쓰기 캐싱을 비활성화하는 설정이 있습니다.

RAID 레벨은 직접적인 관련이 없습니다. 데이터가 디스크에 있으면 디스크에 있는 것입니다. 힘을 잃어도 안전할 것입니다. RAID 수준이 중요한 곳은 디스크가 죽는 경우입니다. 이는 완전히 다른 오류 모드입니다. RAID0의 경우 모든 데이터가 즉시 손실됩니다. RAID5의 경우 큰 성능 저하를 계속할 수 있습니다. RAID1/10을 사용하면 성능 저하가 매우 적더라도 계속할 수 있습니다.

그러나 RAID를 백업으로 착각하지 마십시오. 데이터베이스 서버에는 수십 가지 오류 모드가 있으며 RAID는 그 중 디스크 오류 하나만 처리합니다. 파일 시스템이 충돌할 수 있고, 실수로 데이터를 삭제할 수 있으며, 모호한 MySQL 버그로 인해 데이터 파일이 손상될 수 있습니다. 따라서 중요한 데이터는 mysqldump. MySQL이 중지되지 않는 한 데이터 파일은 일관성이 없을 수 있으므로 복사하지 마십시오.

답변2

안전하고 성능을 높이려면 innodb_flush_log_at_trx_commit=1 및 RAID 10이 있어야 합니다.

건배

관련 정보