OS

2022.02.17 16:16

MySQL binlog 를 이용하여 DB 복구 하기

  • 비아웹 오래 전 2022.02.17 16:16 인기
  • 5,507
    0

안녕하세요

서버호스팅 비아웹입니다.

 

MySQL, MariaDB 를 이용하여 서비스를 진행하시다가

운영상의 실수나 서버 장애로 인하여 DB 데이터가 손실되는 경우가 발생합니다.

 

해당 케이스에 MySQL binlog를 이용하여 복구하는 방법에 대해 안내합니다.

 


1. 테스트 환경

CentOS 7.9

MariaDB 5.5.68

 

2. mysql binlog 설정

/etc/my.cnf.d/server.cnf

[mysqld] log-bin=mysql-bin # binlog 파일명 max_binlog_size =256M # binlog 크기 expire_logs_days =7 # binlog 저장 시간

설정 후 mysql 서비스 재시작 database 폴더에 생성됨

 

3. 현재 데이터 확인

테스트용 데이터

 

4. 테이블 초기화

- 테스트 테이블에서 진행되었으며, 실 서버에서는 truncate command 아주 주의

 
5. mysql binlog 확인
# mysqlbinlog binlog파일명

- binlog 에서 update / insert / delete / replace / alter 명령어에 대해 대소문자 모두 찾아서 별도 파일에 저장

- 해당 command 에는 DB 명을 넣지 않았으며, --database=DB명 옵션을 통해 복구를 원하는 DB 선택 가능

# mysqlbinlog mysql-bin.000003| grep -i -e "^update"-e "^insert"-e "^delete"-e "^replace"-e "^alter">0105_backup.sql

 

6. 복구

a. mysql command 이용

# mysql -u계정 -p 디비명 < 복구파일명

b. source command 이용

- mysql 복구보다 속도가 빠름

mysql > source 파일경로/파일이름 ;

복구 완료

이상과 같이 장애가 생긴 테이블에 대해 복구가 완료되었습니다.

DB 장애에 대한 복구는 장애후가 아닌

장애전에 설정한 백업 설정과 로그설정에 따라 복원 가능여부가 결정됩니다.

 

감사합니다.

서버호스팅 비아웹


 

  • 공유링크 복사

    댓글목록

    등록된 댓글이 없습니다.