[MySQL/MariaDB] .frm, .ibd 확장자 파일이 뭘까? (백업 파일)
MySQL과 MariaDB에서 보이는 주요 파일 형식인 .frm 파일과 .ibd 파일에 대해서 알아보자.
MySQL과 MariaDB 는 디스크에 여러 종류의 파일 형태를 두어 테이블 정의, 데이터, 인덱스 등을 관리한다.
- .frm 파일 : 테이블의 스키마 메타데이터(컬럼 정보, 인덱스 정의 등)를 저장한다.
- .ibd 파일 : InnoDB 스토리지 엔진에서 테이블별 테이블 스페이스를 사용할 때, 해당 테이블의 데이터와 인덱스를 저장한다.
- 옵션 : innodb_file_per_table=ON
경로를 따로 변경하지 않으면 frm, ibd 확장자는 /var/lib/mysql/<스키마명> 디렉터리에 생성된다.
1. frm 확장자 파일
각 테이블의 구조를 저장하고, MyISAM뿐 아니라 InnoDB 테이블 정의에도 사용한다.
* MySQL 8.0 부터는 내부 데이터 딕셔너리로 메타데이터를 관리하므로 .frm 파일이 더 이상 생성되지 않는다.
* MariaDB는 MySQL과 달리 현재도 .frm 파일을 사용
2. ibd 확장자 파일
InnoDB에서 innodb_file_per_table=ON 설정 시, 각 테이블별로 별도의 테이블 스페이스 파일을 만들어 데이터와 인덱스를 저장한다.
* 공유 테이블스페이스(ibdata1) 대신 파일 단위 백업,이동,복구가 용이하다.
* .frm파일과 .ibd파일이 정확히 매칭되어야만 복구가 가능하다.
3. innodb_file_per_table 설정에 따른 차이
innodb_file_per_table=ON/OFF 별 구동에 대해서 알아보자.
3-1. OFF (MySQL 8버전 이전 기본 값)
- 모든 InnoDB 테이블의 데이터, 인덱스가 ibdata1에 몰려서 저장된다.
- 개별 테이블(.ibd) 파일이 없으므로 테이블 단위 백업이 불가
3-2. ON (MySQL 8버전 이후 기본 값)
- 각 테이블별 .ibd 파일 생성 → 파일 단위 관리 및 백업 가능
- 파일이 많아져서 디스크 inode 소모
* OFF를 사용하다가 ON으로 변경 시 ALTER TABLE [테이블 명] ENGINE=InnoDB; 로 재생성을 해주면 된다.
정리
.frm 파일과 .ibd 파일은 백업 및 복구에 사용되는 파일이다.
우리가 알고있는 mysqldump는 논리적 백업에 해당하고, frm, ibd 확장자 파일을 따로 저장해두는 방법이 물리적 백업 방법이다.
상황에 따라 적절하게 백업해둬 안전하게 서버를 운영하자.