MariaDB(MySQL) ibdata 파일 손상시에 innodb 테이블 복구 방법

InnoDB 사용을 하다가 ibdata 파일 손상시에 테이블을 복구할 수 있는 방법이 있습니다.

ibd 파일이 손상됐을때는 force recovery ( https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html ) 방법으로 복구를 하는데요. ibdata 파일이 깨졌을때는 force recovery로 복구가 안될 수 있습니다.

이럴때 아래 방법으로 복구를 할 수 있습니다.

* mysqlfrm 유틸리티 설치
# wget https://repo.mysql.com//mysql57-community-release-el6-11.noarch.rpm
# rpm -ivh mysql57-community-release-el6-11.noarch.rpm
# yum install mysql-utilities

* mysqlfrm 유틸리티로 schema 확인
# mysqlfrm –basedir=/usr/local/mysql –user=root –port=13307 /data/ohnew/innovation.frm –verbose
# mysqlfrm –basedir=/usr/local/mysql –user=root –port=13307 /data/ohnew/osskorea.frm –verbose

* schema 복구하기
> create table restore.innovation …..;
> ALTER TABLE innovation DISCARD TABLESPACE;
# cp /data/ohnew/innovation.ibd /data/restore/
> ALTER TABLE innovation IMPORT TABLESPACE;
> select count(*) from restore.innovation;

 

schema 복구할때 복구할 테이터베이스에 mysqlfrm 유틸리티로 확인한 create table 이용해서 테이블 schema를 먼저 복원합니다.

생성된 table의 ibd 파일을 discard 시키고 기존에 사용하던 ibd 파일을 복사해서 덮어씁니다.

테이블 데이터 복원을 위해서 import tablespace를 하고, 테이터를 확인합니다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s