MariaDB - 릴레이 로그 읽기 실패: 릴레이 로그 이벤트 항목을 구문 분석할 수 없습니다.
슬레이브 상태를 확인할 때 다음 오류가 발생함
릴레이 로그 읽기 실패: 릴레이 로그 이벤트 항목을 구문 분석할 수 없습니다.생각할 수 있는 원인으로는 마스터의 바이너리 로그가 손상되었거나(바이너리 로그에서 'mysqlbinlog'를 실행하여 확인할 수 있음), 슬레이브의 릴레이 로그가 손상되었거나(릴레이 로그에서 'mysqlbinlog'를 실행하여 확인할 수 있음), 네트워크 문제 또는 마스터 또는 슬레이브의 MySQL 코드에 버그가 있습니다.마스터의 바이너리 로그 또는 슬레이브의 릴레이 로그를 확인하려면 이 슬레이브에 'SHOW SLAVE STATUS'를 발행하여 이름을 알 수 있습니다.
1개의 마스터노드와 2개의 슬레이브노드가 있는 Bitnami의 MariaDB를 Replication과 함께 사용하고 있습니다.이 노드 중 1개가 파손되어 위의 오류가 나타납니다.
노드가 작동을 멈춘 후 수행한 단계를 설명합니다.
- system_user 쿼리가 정지되어 있어 종료하려고 했지만 삭제되지 않았습니다.
- 슬레이브 노드를 재부팅하여 모든 쿼리를 새로 고쳤다.
- 서버 재시작 후 MySQL이 작동을 중지하고 소켓 오류를 발생시켰습니다.
여러분, 해결 좀 도와주세요.이 오류를 극복할 수 없습니다.
저는 같은 문제를 벨로우 스텝으로 해결했습니다.
현재 슬레이브 상태를 확인하려면 다음 명령을 수행합니다.
show slave status\G
다음과 같은 결과가 표시됩니다.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: provisioner-peer
Master_User: repl
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mysql-bin.000149
Read_Master_Log_Pos: 919065590
Relay_Log_File: mysql-relay-bin.000450
Relay_Log_Pos: 884188250
**Relay_Master_Log_File: mysql-bin.000149**
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1594
Last_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by run
ning 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or
slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.
Skip_Counter: 0
**Exec_Master_Log_Pos: 884187951**
Relay_Log_Space: 919067911
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 1594
Last_SQL_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by run
ning 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or
slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.
Replicate_Ignore_Server_Ids:
Master_Server_Id: 287
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 1
1 row in set (0.000 sec)
주의해야 할 중요한 값은 Relay_Master_Log_File 및 Exec_Master_Log_Pos입니다.슬레이브에서 복제를 올바르게 재시작하려면 이 서버가 필요합니다.
복제를 재시작하려면 다음 명령을 수행합니다.
STOP SLAVE;
RESET SLAVE;
CHANGE MASTER TO master_log_file='mysql-bin.000149', master_log_pos=884187951;
START SLAVE;
복제가 다시 작동하는지 확인하려면 다음 명령을 다시 실행합니다.
show slave status\G
동기화된 슬레이브를 호출하기 전에 status 명령에서 파라미터 Seconds_Behind_Master 값을 확인합니다.이 예에서는 값(7971초)을 확인했습니다.
Seconds_Behind_Master: 7971
이후 몇 분 이내에 복제가 마스터와 다시 동기화되어 복제 지연이 0초였습니다.
주의: 안전을 위해 먼저 데이터베이스를 백업합니다.
언급URL : https://stackoverflow.com/questions/65362492/mariadb-relay-log-read-failure-could-not-parse-relay-log-event-entry
'programing' 카테고리의 다른 글
스태틱 범용 메서드를 호출 (0) | 2022.09.12 |
---|---|
키별로 사전을 정렬하려면 어떻게 해야 합니까? (0) | 2022.09.12 |
다른 .py 파일에서 함수를 호출하려면 어떻게 해야 합니까? (0) | 2022.09.11 |
SQL INSERT 문에 Python dict 사용 (0) | 2022.09.11 |
변경 전 선택(드롭다운) 값을 가져오는 중 (0) | 2022.09.11 |