개발자가 되고 싶은 준개발자

[mysql] fatal error 1236 from master when reading data from binary log 해결법 본문

MySQL/mysql

[mysql] fatal error 1236 from master when reading data from binary log 해결법

준개발자 2024. 5. 21. 20:34

 

에러 메시지

Got fatal error 1236 from master when reading data from binary log: 'Could not open log file'..

 

발생 원인

01번이 primary, 02번이 secondary 구조로 복제를 하고 있는 상황을 가정하자.

이 상황에서 01번에 장애가 발생하면, HA 솔루션에 의해 02번으로 Primary가 넘어가게 된다.

 

02번은 01번으로 복제 연결이 되어 있는 상황이었고, 01번은 다시 재기동을 하고 있다.

01번은 재기동을 하면서 신규 binlog 파일을 열어서 binlog를 이어서 작성한다.

하지만 02번은 이 상황을 모르고 복제해 오던 로그의 다음 포지션을 바라보고 있어서 위의 에러가 발생한 것이다.

 

해결 방법은 신규 binlog 파일의 가장 처음으로 복제 연결을 다시 해주는 것이다.

mysql은 4번 position부터 binlog를 작성한다.

02번 서버에서 01번 서버 신규 binlog 파일의 4번 position으로 master position을 변경해 주면 된다.

 

구글링 해보면 01번에서 'show master status'를 해보고, 그 position으로 변경하라는 글이 나온다.

이 글도 어느 정도는 맞지만, 그 이전에 쓰인 binlog를 잃게 된다.

따라서 데이터 유실을 최소화하려면 위의 방법이 더 좋다.


해결 방법

02번 서버에서 신규 binlog 파일의 4번 position으로 master position을 변경해 주면 된다.

mysql > stop slave;

mysql > CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.00000XX', MASTER_LOG_POS=4;

mysql> start slave;

mysql> show slave status \G