MySQL 복제 시 리레이 로그 손상 시뮬레이션 방법

MySQL의 복제 기능에서 리레이 로그(Relay Log)는 주요 구성 요소로, 복제 작업 중 발생하는 오류의 원인이 될 수 있습니다. 본 문서에서는 리레이 로그를 의도적으로 손상시키는 과정을 설명하며, 이를 통해 복제 시스템의 회복 메커니즘을 이해하는 데 목적이 있습니다.

전체 절차 개요

단계 설명 실행 내용
1 복제 환경 확인 마스터-슬레이브 구조가 올바르게 설정되었는지 검증
2 리레이 로그 생성 마스터에 데이터 삽입하여 슬레이브에서 리레이 로그 자동 생성 유도
3 리레이 로그 직접 수정 파일 시스템에서 리레이 로그 파일을 열고 일부 내용을 변경하여 손상 유발
4 복제 상태 점검 오류 발생 여부 확인을 위해 상태 정보 조회
5 복제 재시작 및 복구 문제 해결 후 복제 재개

세부 단계 안내

1. 복제 환경 정상성 확인

먼저 슬레이브 서버의 복제 상태를 점검합니다.

SHOW SLAVE STATUS\G

출력 결과에서 Slave_IO_RunningSlave_SQL_Running이 모두 Yes인지 확인해야 합니다.

2. 리레이 로그 생성

마스터 서버에 데이터를 삽입하면 슬레이브는 해당 이벤트를 수신하고 리레이 로그를 생성합니다.

USE target_db;
INSERT INTO sample_table (field_a, field_b) VALUES ('test_value', 'data_001');

3. 리레이 로그 파일 직접 조작

리레이 로그 파일의 실제 위치를 확인합니다.

SHOW VARIABLES LIKE 'relay_log';

출력된 경로(예: /var/lib/mysql/relay-bin.000001)로 이동하여 텍스트 에디터로 열어 일부 내용을 무작위로 수정하거나 삭제합니다.

sudo nano /var/lib/mysql/relay-bin.000001

예: 특정 이벤트의 시작 마크를 잘못된 값으로 변경하거나 바이너리 포맷을 깨뜨리는 방식으로 손상 유도.

4. 복제 상태 모니터링

손상 후 복제 상태를 다시 확인합니다.

SHOW SLAVE STATUS\G

특히 Last_Error 필드에 다음과 같은 오류 메시지가 나타날 수 있습니다:

Error reading packet from server: Invalid relay log format

5. 복제 복구 절차 실행

오류 발생 후 복제를 재시작하기 위해 다음 명령어를 순차적으로 실행합니다.

STOP SLAVE;
RESET SLAVE;
START SLAVE;

이 과정은 슬레이브의 복제 상태를 초기화하고, 마스터로부터 새로운 트랜잭션을 재수신하도록 합니다.

결론

리레이 로그의 손상은 복제 시스템의 신뢰성을 저해할 수 있으며, 생산 환경에서는 절대 금지됩니다. 본 실험은 교육 목적에만 사용되어야 하며, 반드시 격리된 개발 환경에서 수행해야 합니다. 이러한 시나리오를 이해함으로써 장애 대응 능력과 복제 복구 전략을 보다 효과적으로 설계할 수 있습니다.

태그: MySQL Replication relay log Database Recovery Master-Slave

8월 9일 09:59에 게시됨