WorkaHolic

개별 DB 복구(innoDB 기준) 본문

Server/MySQL

개별 DB 복구(innoDB 기준)

Programics 2021. 6. 2. 20:42
반응형

- 현재 DB 위치 (/var/lib/mysql/사이트명)

e.g. /var/lib/mysql/example

 

1. mysql 접속 (mysql -uroot -p) 후, 삭제 처리

mysql> ALTER TABLE DB명.테이블명 DISCARD TABLESPACE;

e.g. ALTER TABLE example.posts DISCARD TABLESPACE;

!실행시, 디렉토리내 테이블명.ibd 파일 삭제처리 + 해당 DB테이블의 데이터도 전부 삭제처리됨

결과문 : Query OK, 0 rows affected (0.01 sec)

 

- 백업 DB 위치 (/db-data/fullbackup/백업일자/사이트명)

e.g. /db-data/fullbackup/20210416/example

 

2. 해당 백업 테이블 파일(ibd) 가져오기

cp /db-data/fullbackup/백업일자/사이트명/테이블명.ibd /var/lib/mysql/사이트명/테이블명.ibd

e.g. cp /db-data/fullbackup/20210416/example/posts.ibd /var/lib/mysql/example/posts.ibd

 

3. 소유자 변경(root > mysql) 개별 

e.g. chown mysql:mysql posts.ibd

소유자 변경(root > mysql) 전체

e.g. chown -R mysql:mysql example/

!소유자를 변경하지 않으면, 접근 권한이 없어 missing 처리됨

 

4. mysql 접속 (mysql -uroot -p) 후, 로드하기

mysql> ALTER TABLE DB명.테이블명 IMPORT TABLESPACE;

e.g. ALTER TABLE example.posts IMPORT TABLESPACE;

결과문 : Query OK, 0 rows affected, 1 warning (0.08 sec)

 

5. 정상적으로 복구되었는지 DB 확인


* DISCARD 하지 않고, IMPORT하면 생기는 오류 문구 (이미 존재함)

(ERROR 1813 (HY000): Tablespace 'example/posts' exists.)

* 소유자 변경 하지 않으면 생기는 오류 문구 (접근 권한이 없어, 해당 ibd를 찾을 수 없음)

(ERROR 1812 (HY000): Tablespace is missing for table `example`.`posts`.)

 

반응형