잡동사니
[MariaDB] Auto_Increment를 믿지 말라?? 본문
안녕하세요. yeTi입니다.
오늘은 MariaDB의 InnoDB에서 Auto_Increment 사용시 초기화 될 수 있다는 문제에 대한 의문을 해소해보고자 합니다.
설치 환경
- OS : CentOS release 6.9 (Final)
- MariaDB : 10.2.11
근래에 웹상에서 MariaDB에서 Auto_Increment를 사용할 시 발생할 수 있는 문제점에 대해 발견했습니다.
내용인 즉슨
엔진으로 InnoDB를 사용할 경우 내부적으로 메모리상에 최대값을 저장하고 있기 때문에
재시작시 의도한 최대값이 아니라 초기값으로 사용될 수 있다는 것입니다.
이와 관련하여 최신 MariaDB Reference를 확인했고 다음과 같은 내용을 확인했습니다.
InnoDB/XtraDB
Until MariaDB 10.2.3, InnoDB and XtraDB used an auto-increment counter that is stored in memory. When the server restarts, the counter is re-initialized to the highest value used in the table, which cancels the effects of any AUTO_INCREMENT = N option in the table statements.
From MariaDB 10.2.4, this restriction has been lifted and AUTO_INCREMENT is persistent.
직역하자면 다음과 같습니다.
MariaDB의 10.2.3버전까지는 InnoDB나 XtraDB를 사용하면 auto-increment 값이 메모리에 저장됐다. 따라서 서버를 재시작하면 값이 테이블의 최대값으로 초기되고, AUTO_INCREMENT = N 옵션의 효과는 사라진다.
하지만 MariaDB의 10.2.3버전부터 AUTO_INCREMENT를 지속하도록 규제를 강화했다.
내용은 보니 10.2.3버전까지는 해당 문제가 발생했던거 같은데 그 이후로는 보완된거 같습니다.
하지만 규제를 강화한것이 트랜젝션까지 보장된건 아니라는 첨언이 있으니 참고하시면 될거같습니다.
참고 문헌
- MariaDB 홈페이지 : https://mariadb.com/kb/en/library/auto_increment/
'IT > Database' 카테고리의 다른 글
[Redis] 지속성(Persistence)에 대한 레퍼런스 한글문서, Failover (0) | 2018.12.11 |
---|---|
[MariaDB] 사용자 관리 명령어 모음 (0) | 2018.11.27 |
[MariaDB] Maxscale을 활용한 Auto-Failover 구성하기 (0) | 2018.10.24 |
[MHA] error /usr/local/share/perl5/MHA/MasterMonitor.pm, ln401 오류 분석 (0) | 2018.10.10 |
[MHA] error /usr/local/share/perl5/MHA/SSHCheck.pm, ln63 오류 해결 (0) | 2018.10.05 |