일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- OSX
- 안드로이드
- WebAuthn
- git
- 앱스토어
- css
- SwiftUI
- 앱리소스
- openssl
- Android
- Nodejs
- kmip
- MSYS2
- Xcode
- MFA
- fido
- albumbook
- 애플
- FIDO2
- SSL
- MYSQL
- 인증
- SWIFT
- otpkey
- 앨범북
- SSH
- OTP
- appres
- 2FA
- apple
- Today
- Total
인디노트
MySQL DB 의 ibdata1 파일이 날라갔을 때 복구 본문
MySQL 의 ibdata1 파일이 날라가면 DB 실행조차 안된다. ㅠㅠ
이것을 해결하려고 하루 종일 걸렸다.
방법은. 이 파일을 지우거나 혹은 예전에 백업받아두었던 DB 로 복귀를 한다.
이 ibdata1 파일과 ib_logfile0, ib_logfile1 파일을 삭제하고
MYSQL 의 cnf 파일의 innodb_force_recovery=1 를 하고 재실행하면 MySQL 은 그 상태에서
이 파일들을 새로 생성된다. 물론 이때 DB 뷰 같은것으로 테이블을 선택하면 먹통 되듯이
문제가 발생됨을 알 수 있다. 즉, 깨진 (혹은 새로 생성된) ibdata1 파일로는 DB 테이블을 구동할 수
없는 것이다.
만약 복구하려는 db 이름이 jira 라면 jira 폴더 안에 있는 frm과 ibd 파일을 백업 해 놓는다. (중요함)
우선, 위에서 언급한 3개의 파일을 삭제하고 innodb_force_recovery=1 옵션으로 DB 를 구동한다.
구동된 DB 를 연결해서 테이블의 structure 만을 sql dump 파일로 만들어 놓는다.
그런 후 DB 의 모든 테이블을 삭제한다. (위에서 frm, ibd 파일 백업 안했으면 큰일. 여기서 모두 삭제되기 때문이다.)
이제 후 export 한 sql dump 를 import 한다.
그러면 그러면 테이블 구조만 생성 db (jira) 폴더에 기본적으로 frm, ibd 파일들이 생성되어 있을 것이다.
모든 테이블 명을 이용해서 DISCARD TABLESPACE 를 수행한다.
다음 예제 같이.... show tables; 로 테이블 명 모두 꺼내고 엑셀 같은데 붙혀넣기 하여 다음 명령들을 만들어 내면 편하다.
ALTER TABLE issuetypescreenscheme DISCARD TABLESPACE;
구동 되었던 DB 를 중지하고. 모든 ibd 파일을 삭제한다.
이제 다시 DB 를 구동한다.
이제 백업 받아두었던 ibd 파일들을 db 폴더 (jira) 에 모두 복사한다.
DB 를 중지한다.
innodb_force_recovery=1 옵션을 cnf 에서 제거하고 DB 를 실행시킨다.
모든 테이블 명을 이용해서 IMPORT TABLESPACE 를 수행한다.
다음 예제 같이.... show tables; 로 테이블 명 모두 꺼내고 엑셀 같은데 붙혀넣기 하여 다음 명령들을 만들어 내면 편하다.
ALTER TABLE issuetypescreenscheme IMPORT TABLESPACE;
ALTER TABLE issuetypescreenschemeentity IMPORT TABLESPACE;
ALTER TABLE jiraaction IMPORT TABLESPACE;
ALTER TABLE jiradraftworkflows IMPORT TABLESPACE;
ALTER TABLE jiraeventtype IMPORT TABLESPACE;
ALTER TABLE jiraissue IMPORT TABLESPACE;
ALTER TABLE jiraperms IMPORT TABLESPACE;
ALTER TABLE jiraworkflows IMPORT TABLESPACE;
이 SQL 을 돌리면 DB 가 복구된다. 깨진 ibdata1 이 복구되는 것이다.
휴....
'개발 플랫폼 및 언어' 카테고리의 다른 글
OS X 열린 포트 누가 열었는지 확인하기 (0) | 2018.02.02 |
---|---|
Windows 버전별 기본 설치되는 .NET Framework 버전 (0) | 2018.02.02 |
Rebuilding or Repairing Tables or Indexes (0) | 2018.01.31 |
Linux yum 패키지 클린하고 새로 설치하기 (0) | 2018.01.31 |
리눅스 백그라운드로 실행하기 - 터미널 닫아도 유지되는 (0) | 2017.11.15 |