본문 바로가기
IT

InnoDB 파일 복원

by Oh.mogilalia 2024. 5. 6.

https://blog.bpscal.com/m/291

https://puleugo.tistory.com/167

https://puleugo.tistory.com/168

 

 

mysqldump -uroot -p --all-databases > db이름.sql
mysqldump -uroot -p -A > db이름.sql

안뇽하세요~ 오늘은 mysql 전체 백업을 하는 방법을 알아보겠습니당...
mysql을 소스 설치가 아닌 RPM으로 설치한 Redhant 7.3이 깔린 Mysql을 기준으로 설명합니당..
음...일단 이 방법은 Root 권한이 있는 분들..즉, 서버 관리를 하시는 분들에게 유용할것 같네요...
우선 두가지 방법이 있는데여..

첫번째방법, - mysql 폴더를 전체 카피 한다.

   cp -arv /var/lib/mysql /home/mogibu/mysql
    /var/lib/mysql 안에 있는 내용들을 전부다 /home/cream/public_html/mysq 로 카피를 하라는
    명령 입니다. cp 옵션에 -arv 에 대해서 설명을 하자면,
    a : 원본 파일 또는 디렉토리의 속성과 시간 등을 그대로 복사.
    r  : 디렉토리를 복사할 경우 디렉토리에 포함된 모든 파일, 디렉토리까지 복사한다.
    v : 복사되는 내용을 그대로 화면에 출력한다.
    이런 내용입니당..
    복사한 파일들을 잘 보관하신 후에 새로 설치하신 서버라던지 아니면 DB가 망가져서 다시 복구 하실때
    /var/lib/mysql 폴더 안에 있는 내용을 지우신 후에 다시 넣어주고 mysql을 재시작 하시면 됩니다.

 

InnoDB 파일 복원

-InnoDB는 MyISAM처럼 단순하고 간단하게 파일을 이용한 복구를 하기 어려운데, 이는 InnoDB의 구조 때문이다.

출처 : https://www.percona.com/blog/2010/04/26/xtradb-innodb-internals-in-drawing/

-굉장히 복잡한데, 결론적으로는 .frm, .ibd 파일만으로 복구하기 위해서는

.ibd 파일의 Tablespace ID가 ibdata1의 메타데이터에 있는 Tablespace ID과 100% 일치함을 보장할 수 있을 때만이다.

 

이 외의 경우 파일 단위 백업 복원 시 오류가 발생할 수 밖에 없는 구조를 가지고 있다.

 

-하지만 InnoDB 파일 복구를 검색해서 찾아다니는 사람의 대부분은 .frm, .ibd 파일로 복구 하다가 오류가 나는 경우일 것이다.

 

InnoDB 파일 단위 복구 중 오류 났을 때 해결법 

(출처: https://sysdocu.tistory.com/1246 )

ERROR 1932 (42S02): Table [테이블명] doesn't exist in engine

 

  1. 서비스 종료
  2. ibd, frm 파일들을 data 경로에서 다른 경로로 이동 (복사 아님)
  3. 서비스 다시 시작 후 이동한 테이블 삭제된 상태 확인
  4. 제거된 테이블 다시 생성 (생성 query)
  5. 테이블 스페이스 제거: Alter table [테이블명] discard tablespace;
  6. 이동된 테이블 파일(ibd, frm)을 다시 data 경로로 복사
  7. 테이블 스페이스 복원: alter table [테이블명] import tablespace;

하지만, 위 방법으로는 테이블 크기가 조금이라도 크면 Lost connection to MySQL server during query 에러 발생과 함께 서비스가 종료되는데,

그럴 땐 아래와 같이 한다.

 

  1. 백업된 DB와 동일한 이름의 DB(gradius) 생성
  2. 서비스 종료
  3. 백업된 gradius 데이터 파일(frm, idb) ibdata1(data 밑에 있음)을 함께 이관
  4. 서비스 시작

서비스 시작 시 DB 자동 복구가 실행된다.

'IT' 카테고리의 다른 글

M600 /var/lib/mysql  (0) 2024.05.06
odroid HC2 /var/lib/mysql  (0) 2024.05.06
mysqld.sock 에러  (0) 2024.05.06
워드프레스 이전  (0) 2024.05.06
mysql 시작,종료  (0) 2024.05.06