HOME > 이용안내
이용안내
 
작성일 : 16-12-11 07:22
[DB] [Mysql] MYSQL-InnoDB-데이터-복구-방법
 글쓴이 : 제이네트워크
조회 : 31,590  
[MYSQL-InnoDB-데이터-복구-방법]

mysql의 스토리지 엔진 중(MyISAM, InnoDB) InnoDB에 관련 된 데이터 복구 방법에 대한 설명이다.
본래 InnoDB는 Mysql이 손상되어도 .frm 파일과 ibdata1파일만 존재하여도 복구가 가능하다.

이번에 설명할 내용은 ibdata1 인 데이터 파일이 손실될 경우에 복구하는 방법에 대해 설명이다.
Mysql은 정상 시작시 파일의 유무 및 다른 파일등을 검사한다.

하지만 파일이 손상되었을 경우 시작하자마자 서비스를 자체적으로 중단한다.
이에 InnoDB는 파일의 검사 등을 하지 않고 강제로 서비스를 시작하여 복구하는 모드가 따로 존재한다.

윈도우 기준으로 Mysql 설치 폴더/my.ini 이하 my.ini 파일에 innodb_force_recovery라는 명령어를 추가 시켜 주고 
서비스를 재시작 하면 강제 복구 모드로 설정된다.

#vi /etc/my.cnf

[mysqld]
innodb_force_recovery = 1

숫자는 1에서 6까지 사용 가능하며, 1이 가장 안전하고 좋은 복구 모드이고, 
1에서 복구가 안된다면 1~6까지 순차적으로 값을 바꿔가야 한다.
자세한 내용은 http://www.mysqlkorea.co.kr/sub.html?mcode=manual&scode=01&m_no=21875&cat1=14&cat2=422&cat3=442&lang=k 를 참고 하길 바란다.

위와 같이 프로그램을 시작하면 서비스가 정상적으로 시작하게 되며 그후에 dump로 파일을 백업 시킬 수 있다.
덤프 명령어는 Mysql설치폴더/bin에서 mysqldump -u계정명 -p 데이터베이스명 > 백업할파일.sql 로 하면 백업이 되고 
반대로 mysqldump -a -u계정명 -p 데이터베이스명 < 백업할파일.sql 이와 같이 하면 복원이 된다.

만약 1이 아닌 복구 모드로 실행시 파일이 전체적으로 백업되지 않았을 경우 
복구 모드에 우선순위를 높여 select 명령어로 검사후 csv파일로 저장한다.
저장 후 벌크 인서트로 파일 다시 불러옴 

복원이 완료 된 후에는 innodb_force_recovery = 1를 삭제후 프로그램 재시작을 한다.

간단히 설명하자면 파일이 손상된 경우

1. 서비스 시작 중지
2. my.ini파일에 innodb_force_recovery = 1~6 값 설정 후 저장
3. 서비스 시작
4. 서비스 시작시 정상 동작이면 6. 아니면 5.
5. 정상 동작이 아닐경우 다른 복구 모드를 선택하여 서비스 시작
6. 정상 동작일 경우 mysqldump로 파일 백업
7. 높은 우선순위로 변경하여 파일로 저장후 벌크 인서트로 다시 넣음
8. 복구 모드 삭제 후 서비스 재시작


[ innodb_force_recovery 값에 대한 설명]

1 (SRV_FORCE_IGNORE_CORRUPT) 

서버가 깨진 페이지를 발견한다고 하더라도 계속 구동하도록 만든다. 
Try to make SELECT * FROM tbl_name로 하여금 깨진 인덱스 레코드와 페이지를 건너 띄도록 만들며, 
이렇게 하면 테이블을 덤핑하는데 도움이 된다. 

2 (SRV_FORCE_NO_BACKGROUND) 

메인 쓰레드가 구동되지 못하도록 한다. 만일 퍼지 연산 (purge operation)이 진행되는 동안 크래시가 발생한다면, 
이 복구 값은 퍼지 연산이 실행되는 것을 막게 된다. 

3 (SRV_FORCE_NO_TRX_UNDO) 

복구 다음에 트랜젝션 롤백을 실행하지 않는다. 

4 (SRV_FORCE_NO_IBUF_MERGE) 

삽입 버퍼 병합 연산 (insert buffer merge operations)까지 금지한다. 만일 이 연산이 크래시의 원인이 된다면, 
그것을 실행하지 않도록 한다. 테이블 통계값을 계산하지 않도록 한다. 

5 (SRV_FORCE_NO_UNDO_LOG_SCAN) 
데이터베이스를 시작할 때 운도 로그 (undo log)를 검사하지 않는다: InnoDB는 완벽하지 않은 트랜젝션도 실행된 것으로 다루게 된다. 

6 (SRV_FORCE_NO_LOG_REDO) 
복구 연결에서 로그 롤-포워드 (roll-forward)를 실행하지 않는다

(참고)데이터베이스의 안전성을 확보하기 위해서, InnoDB는 innodb_force_recovery가 0보다 큰 값으로 설정되어 있을 때에는
 사용자가 INSERT, UPDATE, 또는 DELETE 연산을 하지 못하도록 한다. 





Cloud server Streaming service Domain Cloud Firewall

 
 

Total 377

번호 제   목   글쓴이 날짜 조회
97 [DB] [Mysql] MYSQL-InnoDB-데이터-복구-방법 제이네트워크 2016-12-11 31591
96 [DB] SQL Server Management Studio 설치 안될 때 제이네트워크 2017-02-28 36351
95 [리눅스서버] 리눅스서버에서 한글파일명 깨질때 (파일질라나 ftp로 한글깨짐) 제이네트워크 2017-03-16 49571
94 [리눅스서버] 리눅스 서버에서 하드디스크(SSD) 스펙 확인 하는 방법 제이네트워크 2017-03-21 33945
93 [메일] [sendmail]센드메일 버전체크 하기 (리눅스서버에서) 제이네트워크 2017-04-04 30772
92 [리눅스서버] [디스크 포맷에러] /dev/sdb1 is apparently in use by the system; will not make a filesystem he… 제이네트워크 2017-04-18 33885
91 [리눅스서버] [Centos7.x 에서 vsftp접속문제] 500 OOPS:vsftpd:refusing to run with writable root inside chroo… 제이네트워크 2017-04-19 29459
90 [리눅스서버] 리눅스에서 CPU 정보 및 CPU 코어개수, 물리 CPU 수를 확인하는 방법 제이네트워크 2017-04-27 30483
89 [PHP] php7에서 opcache 사용하기 제이네트워크 2017-04-27 25029
88 [PHP] php-5.5.x 아래 버전에서 Zend Opcache 설치 제이네트워크 2017-04-27 24459
87 [리눅스서버] CENTOS7 에서 PHP-7.x 소스 설치시 mysqli , mysql , pdo-mysql 에러시 제이네트워크 2017-04-28 35125
86 [리눅스서버] Centos5.x yum install 에러시 CentOS-Base.repo 변경 제이네트워크 2017-05-01 33226
85 [기타] [에러]휴지통이 손상되었습니다. 라는 메시지와 함께 디스크접근이 안될 때 제이네트워크 2017-05-01 32747
84 [리눅스서버] CentOS 7에서 부팅시 /etc/rc.local 파일 실행 시키는 방법 제이네트워크 2017-05-16 32645
83 [리눅스서버] centos7 에서 서비스(Vsftp) 시작 명령어 관련 제이네트워크 2017-05-16 30928
82 [리눅스서버] [php soap 모듈 추가 설치] - php 확장 모듈 설치 제이네트워크 2017-05-25 42417
81 [기타] 리눅스 named(bind) 설정 점검 사이트 제이네트워크 2017-06-11 26124
80 [리눅스서버] [NFS 에러] mount.nfs: Stale NFS file handle 제이네트워크 2017-06-21 28786
79 [기타] [리눅스에러] /bin/sh^M: bad interpreter: No such file or directory 제이네트워크 2017-06-26 27242
78 [리눅스서버] 리눅스에서 파일 인코딩 확인하기 및 변환하기(iconv 명령) utf-8 ↔ euc-kr 제이네트워크 2017-06-27 31684
77 [리눅스서버] [리눅스서버]CentOS- 5.11.yum 오류날때 제이네트워크 2017-07-24 29447
76 [리눅스서버] CentOS 5.11.x 에서 php-5.1.4 소스설치시 mysqli 에러로 make 안될때 제이네트워크 2017-07-25 29998
75 [리눅스서버] [NFS에러] NFS에서 에러 메세지 Stale NFS file handle 발생하는 경우 제이네트워크 2017-07-28 33257
74 [리눅스서버] [openssl]php에 openssl 추가모듈 설치하기 제이네트워크 2017-08-30 33481
73 [리눅스서버] [zip모듈 추가설치]php 컴파일 없이 zip 모듈 추가 설치 제이네트워크 2017-08-30 31490
72 [PHP] 사이트별 allow_url_fopen허용해 주기 제이네트워크 2017-09-12 23887
71 [DB] [mysql] mysql 덤프파일 복구시 에러시 - Got a packet bigger than 'max_allowed_packet&… 제이네트워크 2017-09-14 22694
70 [리눅스서버] vsFTPd 사용시 디렉토리 목록 조회가 안될때 제이네트워크 2017-10-30 30534
69 [리눅스서버] [리눅스서버] [리눅스서버]CentOS-6.9 yum 오류날때 제이네트워크 2017-11-08 29447
68 [윈도우미디어] 익명 사용자 인증 플러그 인 오류 때문에 Windows Media 서비스 시작할 수 없습… 제이네트워크 2017-11-25 25490
67 [DB] mtysql 5.7 이상버전에서 root 패스워드 변경시 제이네트워크 2017-11-25 22944
66 [리눅스서버] swap 메모리 추가하기 제이네트워크 2017-12-07 29691
65 [메일] [다음- 스마트워크 MX 레코드 설정방법] 제이네트워크 2018-02-19 28292
64 [리눅스서버] 리눅스 apache에서 동시 접속자 수 체크 제이네트워크 2018-03-30 34801
63 [리눅스서버] named 2차 네임서버로 zone transfer 권한 문제 제이네트워크 2018-04-13 33531
62 [리눅스서버] VSFTP 에서 사용하는 port를 변경하기 제이네트워크 2018-04-26 40883
61 [기타] 윈도우7/윈도우10 winsxs 폴더 용량 줄이기 최적화 제이네트워크 2018-04-28 32765
60 [리눅스서버] CentOS7 SSH 실행방법 정리 제이네트워크 2018-06-16 34077
59 [윈도우서버] [윈도우10 원격데스크톱 오류 CredSSP 암호화 Oracle 수정 때문] 제이네트워크 2018-06-21 35189
58 [리눅스서버] [우분투서버 Ubuntu network device명 확인 및 변경] 제이네트워크 2018-06-21 35983
 1  2  3  4  5  6  7  8  9  10