본문 바로가기
Database/MYSQL

Mysql 백업본 복구 및 Slave 추가

by 반화넬 2022. 12. 9.
반응형

안녕하세요.

복제 Slave 추가를 위해서는 대부분 점검을 통해 서버를 추가해서 동기화를 하는데요.

오늘 이야기 할부분은 서비스중에 백업하고 백업된 DB를 복구하는 방식을 이야기 해볼까 합니다. 

 

1. Myisam Slave 추가

 

Myisam의 경우 파일 엔진으로 파일을 복사하고 복구가 가능한데요. 문제점은 오토커밋이기 때문에 백업중에도 DaTa가 변경된다는거죠. 그래서 별도 백업용 Slave 서버가준비 되어 있다면 해당 서버의 복제를 일시 정지 하고 백업하고 다시 동기화를 진행하면 된답니다. 

 

서버 구성은 

1 Master , 1 Slave 이며, Slave 서버의 경우 어드민 등 서비스 투입은 안된 서버일경우 입니다.

백업시 동기화가 중단되기 때문에 실시간으로 변경되는 Data를 이용하기 위해 투입이 안되어 있어야 합니다. 

 

복제 연동 방식을 이해 하면 어떻게 되는지 알수 있습니다. 복제의 경우 송신된 바이너리 로그를 슬레브의 IO 스레드가 받아서 릴레이 로그이 기록하고 기록된 릴레이로그를 슬레브의 SQL 스레드가 엔진에 적용하게 됩니다. 아래에서 이야기 드릴 Stop Slave를 하게 될경우 슬레브의 스레드가 모두 중지 되므로 더이상 DB의 데이터는 변화 하지 않습니다.

 

 

# 단계 

1. Slave 서버에서 진행

> Stop Slave  (복제 연동 정지를 하면 해당 IO 스레드와 SQL 스레드 모두 중지됨)

> 해당 DB 서버에서 DB 전체 파일 복사 

> replay-log.info 파일 복사 (해당 파일 안에 Master 서버에서 동기화 한 마지막 포지션값이 있음)

> Start Slave (복사가 완료된이후 복제 재구동)

 

2. 백업한 DB를 이용해서 신규 서버에서 복원

> 백업 DB 복구 

> DB Myisam 이후 데몬 구동하여 정상 유무 확인

> 복제 동기화 설정 및 실행

 

RESET SLAVE;
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='마스터아이피', MASTER_USER='계정', MASTER_PASSWORD='비밀번호', MASTER_PORT=3306,MASTER_LOG_FILE = '마스터바이너리파일명',MASTER_LOG_POS = 마스터포지션값;

FLUSH PRIVILEGES;
START SLAVE;
SHOW SLAVE STATUS;

 

이후 동기화 정보를  확인하시면 됩니다. 

간단하죠. 

 

 

Innodb 의 경우는 백업시 포지션값이 존제 하기 때문에 해당 포지션값을 이용해서 복구가 더 쉽게 가능합니다.

 

감사합니다.

 

 

반응형