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

번호 제   목   글쓴이 날짜 조회
53 [DB] MSSQL2016 에서 서버유지관리/ 백업스케쥴 실행시 에러가 날때 제이네트워크 2019-08-22 3417
52 [DB] [mysql]MySQL 5.6 SQL STRICT 모드 변경 방법 제이네트워크 2019-08-14 4426
51 [DB] MSSQL SERVER 테이블변경시 제한시간이 만료되었습니다. 라는 에러발생시 제이네트워크 2019-01-30 5075
50 [DB] MSSQL 1씩 자동증가값 제어(ID 사양 변경 안될 경우) 제이네트워크 2019-01-30 5313
49 [DB] mysql-5.7.x 이상 버전에서 비번 변경 후 에러가 나올 때 제이네트워크 2019-01-22 5245
48 [DB] MSSQL2008 로그 줄이기 제이네트워크 2018-11-29 5686
47 [DB] mtysql 5.7 이상버전에서 root 패스워드 변경시 제이네트워크 2017-11-25 6997
46 [DB] [mysql] mysql 덤프파일 복구시 에러시 - Got a packet bigger than 'max_allowed_packet&… 제이네트워크 2017-09-14 6947
45 [DB] SQL Server Management Studio 설치 안될 때 제이네트워크 2017-02-28 10068
44 [DB] [Mysql] MYSQL-InnoDB-데이터-복구-방법 제이네트워크 2016-12-11 12128
43 [DB] [Mysql] mysql 엔진 Myisam 을 Innodb로 변경하는 방법 제이네트워크 2016-12-11 8809
42 [DB] [Mysql] mysql 기본 스토리지 엔진확인 제이네트워크 2016-12-10 7883
41 [DB] [Mysql] show processlist 계속 보기 제이네트워크 2016-12-10 8199
40 [DB] [MS-SQL 쿼리] 해당 컬럼을 NULL 값으로 변경하고자 할때 제이네트워크 2016-08-23 9073
39 [DB] [mysqldump 에러] Got errno 28 on write 발생시 제이네트워크 2016-03-29 11815
38 [DB] phpMyAdmin 4.x 버전에서 필요없는 에러메세지 없애는 방법 제이네트워크 2016-02-01 10456
37 [DB] [mysql]mysqldump 로 백업시 lock table 에러로 백업이 안되는 경우 제이네트워크 2015-09-17 11091
36 [DB] [mysql] Mysql 에러코드 중에 (Got error 134 from storage engine) 나올때 처리법 제이네트워크 2015-06-04 10863
35 [DB] [mysql-5.6.x 설치 후 에러로 실행 안될때 ][Warning] TIMESTAMP with implicit DEFAULT value … 제이네트워크 2015-05-22 17436
34 [DB] [MS-SQL SERVER 2008 로그 파일 사이즈 줄이기] 제이네트워크 2015-05-12 12434
33 [DB] [mysql] 테이블 복사하기 (데이타포함, 비포함) 제이네트워크 2015-04-28 11941
32 [DB] mysql 외부에서 접속 허용하기 (1) 제이네트워크 2015-04-08 14113
31 [DB] [MSSQL]SQL 서버 관리자가 알아야 할 11가지 유용한 팁 제이네트워크 2015-01-21 14080
30 [DB] MySQL DB Table 유실로 인한 장애시 Mysql Binary 로그를 통한 복구 (2) 제이네트워크 2015-01-21 11977
29 [DB] [mysql] 해당 컬럼 값을 1씩 증가시키기 와 mysql 자료형,제약조건,엔진 제이네트워크 2015-01-21 28083
28 [DB] [DB]mysql에서 외부 디비를 커넥션할 경우 접속 속도가 느려질때 제이네트워크 2015-01-16 15451
27 [DB] mysql에서 name server 질의 하지 않게 설정 제이네트워크 2014-01-24 12826
26 [DB] Excel to mysql (import /export) 엑셀데이타를 mysql로 입력하기 제이네트워크 2014-01-18 18125
25 [DB] [mysql]그누보드에서 접속카운트가 올라가지 않을 때 제이네트워크 2013-08-25 15650
24 [DB] [mysql] mysql 에서 캐릭터셋(characterset) 설정 확인 제이네트워크 2013-08-06 14636
23 [DB] [mysql]설치시 에러 - No curses/termcap library found 제이네트워크 2013-01-07 14411
22 [DB] [mysql] DB 에러 메세지 Unable to lock ./ibdata1, error: 11 (1) 제이네트워크 2012-11-18 37613
21 [DB] [MSSQL 쿼리] 컬럼값에서 한글, 영문 구분 쿼리 제이네트워크 2012-09-22 25840
20 [DB] [MYSQL]PHPMYADMIN 3.5버전 설치하기 제이네트워크 2012-08-31 21118
19 [DB] [mysql] mysql에서 (테이블명) is marked as crashed and should be repaired 에러시 관리자 2012-03-23 15885
18 [DB] mysql 설치후 시작에러 발생시 관리자 2011-10-13 18187
17 [DB] mysql 설치시 exec: g++: not found 에러 관리자 2011-10-11 18815
16 [DB] MySQL 설치 에러 : configure: error : No curses/termcap library found 관리자 2011-10-11 15552
15 [DB] mysql 로그를 삭제하여 시작 안될때 관리자 2011-08-16 16196
14 [DB] phpMyAdmin 3.2.5 설치 및 mcrypt 오류 관리자 2011-06-17 18164
 1  2