MariaDB/Admin
[에러] ERROR 1932 (42S02): Table [테이블명] doesn't exist in engine
알 수 없는 사용자
2017. 9. 26. 16:12
[테스트 환경]
OS : CentOS7 64bit
DB : MariaDB 10.1.12
1. 에러 내용
- Xtrabackup을 이용해서 원격지 백업을 진행한 이후에 테이블 조회 시 CASE 1, CASE 2와 같은 에러가 발생함.
- [참고] 백업 명령어
ssh $g_ms_in innobackupex --user=$g_sp_usr --password=$g_sp_pwd --stream=xbstream ./ | ssh $g_sl_in "xbstream -x -C $DB_HOME/datadir/
MariaDB [DB명]> SELECT * FROM [테이블명];
CASE 1
ERROR 1932 (42S02): Table [테이블명] doesn't exist in engine
ERROR 1814 (HY000): Tablespace has been discarded for table [테이블명]
2. 해결 방안
전제:
- 해당 테이블의 엔진은 InnoDB 이며 ibd, frm 파일이 존재함.
- 테이블의 스키마 구조를 알아야 함.
CASE 1
- 서비스 종료 후 ibd 파일, frm 파일 백업
- 서비스 시작 후 해당 테이블 drop
- 테이블 재생성
- 테이블스페이스 변경
ALTER TABLE [테이블명] DISCARD TABLESPACE ; system cp /백업경로/[테이블명].ibd [데이터베이스 데이터 디렉토리] ALTER TABLE [테이블명] IMPORT TABLESPACE ;
CASE 2
- IMPORT TABLESPACE
ALTER TABLE [테이블명] IMPORT TABLESPACE ;