MyQL Ver. 5.7을 마스터로 하고, MySQL Ver. 5.6.22 이하 버젼을 슬레이브로 구성하여 리플리케이션을 구성하는 경우 슬레이브 서버의 IO thread에서 에러가발 생한다.
Relay log write fialure: could not queue event from master, Error_code;1595
SHOW SLAVE STATUS 명령어를 통해 확인하면 다음과 같은 에러만 보이지만, 에러 로그 파일을 열어 보면 좀 더 자세한 정보를 확인할 수 있다.
2017-09-21 15:44:21 1168 [ERROR] Slave I/O: Found a Gtid_log_event or Previous_gtids_log_event when @@GLOBAL.GTID_MODE = OFF. Error_code: 1784
2017-09-21 15:44:21 1168 [ERROR] Slave I/O: Relay log write failure: could not queue event from master, Error_code: 1595
로그를 읽어보면 GTID_MODE가 OFF로 설정되었는데 Gtid_log_event나 Previous_gtids_log_event가 바이너리 로그에 발생하여 에러가 되었다는 것을 확인할 수 있다. 참고로, 위 에러는 마스터 서버와 슬레이브 서버가 모두 GTID_MODE 값이 OFF로 설정되어있는 상태이다. 즉, 둘다 OFF로 설정되어있음에도 불구하고 해당 이벤트가 발생하게 된것이다.
MySQL Ver. 5.7 작업 로그를 찾아보면 GTID_MODE가 OFF로 설정되었더라도, Gtid_log_event과 Previous_gtids_log_event를 내부적으로 생성하여 사용하는 것을 확인할 수 있다.
https://dev.mysql.com/worklog/task/?id=7592
중요한 부분만 확인하여 보면 다음과 같이 개발된 것을 확인할 수 있다.
Functional requirements:
FR1.When GTID_MODE = OFF, every transaction shall be preceded by an Anonymous_gtid_log_event in the binary log.
FR2.When GTID_MODE = OFF, every binary log shall start with a Previous_gtid_log_event.
FR3.Cross-version replication OLD->NEW shall not harmed by this worklog.
FR4.Cross-version replication NEW->OLD shall work as follows:
FR4.1. NEW->5.6.21 shall work if gtid_mode=ON. It will not work if gtid_mode=off.
FR4.2. NEW->5.6.22 shall work regardless of gtid_mode.
Footnote: the reason that 5.6.21 and older cannot work is BUG#74683. Once the bug is fixed, cross-version replication shall work.
즉, 위와 같이 MySQL Ver. 5.7에 바이너리 로그 관련 개발이 이루어 지면서 MySQL Ver. 5.6.22 이하 버전에서 하위 호환성 문제가 발생한 것이다.
위 문제는 MySQL Ver. 5.6.23부터 패치되어 문제가 되지 않게 되었다.
https://bugs.mysql.com/bug.php?id=74683
그래서 MySQL Ver. 5.6.22 이하의 버젼을 MySQL Ver. 5.7로 이관하기 위해 스위치를 해야 할 때에는 MySQL Ver. 5.6.22를 마이너 버전 업그레이드를 진행하고 진행해야 위 문제를 피해갈 수 있다.
'MySQL 에러 처리법' 카테고리의 다른 글
계산식의 결과값이 엉뚱하게 나오는 경우 (0) | 2019.03.13 |
---|---|
zeroDateTimeBehavior=CONVERT_TO_NULL should not apply to 00:00:00 TIME columns (0) | 2019.02.22 |
MySQL Replication 시 시간 데이터 깨짐 문제 (0) | 2019.01.29 |
14. ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes (0) | 2015.09.21 |
12. mysqldump에서 Error 2013: Lost connection to MySQL server 발생한 경우 (0) | 2015.03.24 |