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

CASE 2
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 ;