2020년 10월 23일 금요일

SQL_SLAVE_SKIP_COUNTER로 Replication에러가 해소안되는 경우에 대하여

MySQL Replication 에러가 발생했을 때 SQL_SLAVE_SKIP_COUNTER로 해결안되는 경우에 대하여 알아보자.
보통 SQL Statement 레벨의 에러는 SQL_SLAVE_SKIP_COUNTER로 문제 없지만 하드웨어 또는 OS상의 문제로 에러가 발생한 경우는 다르다.

에러내용
# Slave 서버가 알 수 없는 원인으로 OS가 재기동 되었다.
# MySQL 접속 후 확인 한 결과
admin@localhost:(none) >show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: x.x.x.x
                  Master_User: replication_user
                  Master_Port: 9999
                Connect_Retry: 60
              Master_Log_File: binary_log.010733
          Read_Master_Log_Pos: 305382657
               Relay_Log_File: relay_log.022962
                Relay_Log_Pos: 81579694
        Relay_Master_Log_File: binary_log.010732
             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 running '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: 81579530
              Relay_Log_Space: 842450765
              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 running '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: 4359
                  Master_UUID: vnsjidq-238qwkdj2f-asjzxcniw-euwjds
             Master_Info_File: /mysql/log/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State:
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp: 201019 19:08:37
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
1 row in set (0.00 sec)
SHOW SLAVE STATUS 해석
Master_Log_File: I/O thread가 처리하고 있는 마스터의 바이너리 로그 파일명
Read_Master_Log_Pos: I/O thread가 읽어들인 마스터의 바이너리 로그 포지션
Relay_Log_File: SQL thread가 처리하고 있는 슬레이브의 릴레리 로그 파일명
Relay_Log_Pos: SQL thread가 실행 완료한 슬레이브의 릴레리 로그 포지션
Relay_Master_Log_File: SQL thread가 마지막으로 실행한 쿼리가 기록되어 있는 마스터의 바이너리 로그 파일명
Exec_Master_Log_Pos: SQL thread가 마지막으로 실행한 쿼리의 마스터 바이너리 로그 포지션
대처 방법 1)
admin@localhost:(none) >SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
admin@localhost:(none) >START SLAVE;

# 에러 내용이 해소되지 않았고 Relay log position 또한 변함 없었다.
대처 방법 2)
# Master DB의 binlog position을 재설정 한 후, 복제 시작
# mysqlbinlog를 이용하여 마스터의 Relay_Master_Log_File 바이너리 로그 파일을 확인
# Exec_Master_Log_Pos 다음 포지션으로 CHANGE MASTER 실행
admin@localhost:(none) >CHANGE MASTER TO MASTER_LOG_FILE='binary_log.010732', MASTER_LO
G_POS=81579770;
admin@localhost:(none) >START SLAVE;
# 에러가 해소되고 복제가 순차적으로 이루어졌다.

댓글 없음:

댓글 쓰기

결혼이민비자 신청방법(F-6-1 국민의 배우자)

 제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...