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

번호 제   목   글쓴이 날짜 조회
377 [DB] Linux에서 MYSQL 데이터 디렉토리 변경하기 제이네트워크 2023-01-14 7238
376 [DB] phpmyadmin에서 'mcrypt 확장모듈을 불러올 수 없습니다' 에러 시 제이네트워크 2023-01-14 7276
375 [DB] mysql에서 innodb 설치 및 옵션 설명 제이네트워크 2023-01-14 7464
374 [DB] [MySQL] mysql error 1364 Field doesn't have a default values 해결방법 입니다. 제이네트워크 2023-01-14 7291
373 [리눅스서버] 우분투서버 apt 에러 - 미러사이트 변경 제이네트워크 2021-12-29 17203
372 [리눅스서버] 아파치 웹서버에서 mod_rewrite 모듈 추가 설치하기 제이네트워크 2021-11-03 17817
371 [메일] Centos7 sendmail설치 제이네트워크 2021-09-09 21404
370 [리눅스서버] Centos7 에서 SQLSRV / PDO_SQLSRV 모듈 추가 설치 제이네트워크 2021-08-26 19118
369 [리눅스서버] Centos7 SFTP 설정 및 Chroot 처리 방법 제이네트워크 2021-08-18 18695
368 [리눅스서버] 리눅스서버에서 아파치웹 서버 / php 버전 노출방지 제이네트워크 2021-07-19 20028
367 [메일] 아웃룩 메일 수발신할 때 (메일오류코드 2) 제이네트워크 2021-05-28 22091
366 [메일] 리눅스 쉘에서 telnet으로 메일발송테스트 하기 제이네트워크 2021-05-27 18940
365 [PHP] php에서 shmop 모듈 추가 설치하기 제이네트워크 2021-05-27 15786
364 [PHP] php_ftp 추가 모듈 설치 하기 제이네트워크 2021-05-27 14202
363 [기타] ESXi 호스트의 root 로 접근이 불가능한 이슈 제이네트워크 2021-04-08 18858
362 [메일] [Sendmail 포트변경] Sendmail에서 smtp 포트를 587포트로 변경하기 제이네트워크 2020-12-20 21155
361 [메일] [Sendmail 스팸 IP ADDRESS 체크] 제이네트워크 2020-12-20 20873
360 [DB] [mysql 디비체크] myisamchk 사용 옵션 제이네트워크 2020-12-20 18019
359 [DB] mysql 로그 최적화 하기 제이네트워크 2020-12-20 18044
358 [리눅스서버] 아파치서버에서 동시접속자 수를 알아보려고 할 때 제이네트워크 2020-12-19 24178
357 [리눅스서버] Apache서버에 mod_url 추가 설치 제이네트워크 2020-12-19 24015
356 [리눅스서버] Cronlog 설정 하는 법 제이네트워크 2020-12-19 24313
355 [메일] [sendmail] 메일발송이 안될 때 (오류 Relaying temporarily denied. Cannot resolve PTR recor… 제이네트워크 2020-07-15 22998
354 [기타] 그누보드4(EUCKR)에서 그누보드5(UTF8)로 데이타이전 하기 제이네트워크 2020-06-28 24536
353 [리눅스서버] mkfs로 포맷이 안되는 경우 (오류 dev/sdb2 is apparently in use by the system; will not mak… 제이네트워크 2020-04-02 27345
352 [리눅스서버] 우분투18.04 vi 에디터에서 글자가 깨져 보일 때 제이네트워크 2019-11-17 27466
351 [리눅스서버] 우분투18.04 에서 rc.local 파일 사용하기 제이네트워크 2019-11-17 27796
350 [리눅스서버] [아파치conf 비교]apache2.2.x 와 apache-2.4.x 의 차이점 제이네트워크 2019-10-13 30361
349 [리눅스서버] 리눅스 컴파일에러 error : Autoconf version 2.68 or higher is required on CentOS 제이네트워크 2019-10-07 32446
348 [DB] MSSQL2016 에서 서버유지관리/ 백업스케쥴 실행시 에러가 날때 제이네트워크 2019-08-22 22859
347 [PHP] php에서 세션을 늘리는 방법 제이네트워크 2019-08-22 21337
346 [DB] [mysql]MySQL 5.6 SQL STRICT 모드 변경 방법 제이네트워크 2019-08-14 26593
345 [리눅스서버] vsftpd.conf 설정내용 제이네트워크 2019-08-14 29481
344 [리눅스서버] 리눅스 메인보드 교체후 네트워크 재설정 제이네트워크 2019-07-04 31029
343 [리눅스서버] SFTP 퍼미션 조정 및 chroot 설정으로 상위폴더 접근 제한하기 제이네트워크 2019-06-30 30939
342 [리눅스서버] SFTP 접속만 가능한 계정 만들기] 제이네트워크 2019-06-30 33567
341 [리눅스서버] CentOS7.x 버전에서 최신 node.js 설치하기 제이네트워크 2019-05-23 32140
340 [윈도우서버] 윈도우 설치 중 새 시스템 파티션을 만들거나 기존 시스템 파티션을 찾을 … 제이네트워크 2019-04-24 28736
339 [PHP] 그누보드5 서버이전 후 글 작성 및 member가입 작성안되는 경우 제이네트워크 2019-04-24 23221
338 [윈도우서버] 윈도우서버 com+ / dll 등록후 세션 로그아웃시 dll 적용안될 때 제이네트워크 2019-04-11 29112
 1  2  3  4  5  6  7  8  9  10