2016-12-19 3 views
0

Percona MySQL 5.6을 사용하여 sql_slave_parallel_workers=5을 데비안 8에서 사용하기. 때때로 GTID 복제가 중단되고 이유를 모르겠습니다. GTID가 연속 된 순서로 실행되지만 상태를 볼 때깨진 MySQL GTID 복제 (잘못 정렬 된 GTID)

*************************** 1. row *************************** 
       Slave_IO_State: Waiting for master to send event 
        Master_Host: d22.local 
        Master_User: xyz 
        Master_Port: 3306 
       Connect_Retry: 60 
       Master_Log_File: mysql-bin.039232 
      Read_Master_Log_Pos: 219044 
       Relay_Log_File: mysqld-relay-bin.072392 
       Relay_Log_Pos: 90640 
     Relay_Master_Log_File: mysql-bin.036196 
      Slave_IO_Running: Yes 
      Slave_SQL_Running: No 
       Replicate_Do_DB: 
      Replicate_Ignore_DB: xyz_etl 
      Replicate_Do_Table: 
     Replicate_Ignore_Table: 
     Replicate_Wild_Do_Table: 
    Replicate_Wild_Ignore_Table: 
        Last_Errno: 1032 
        Last_Error: Could not execute Update_rows event on table xyz.sessions; Can't find record in 'sessions', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.036196, end_log_pos 78709552 
       Skip_Counter: 0 
      Exec_Master_Log_Pos: 78708927 
       Relay_Log_Space: 1337994488 
       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: 1032 
       Last_SQL_Error: Could not execute Update_rows event on table xyz.sessions; Can't find record in 'sessions', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.036196, end_log_pos 78709552 
    Replicate_Ignore_Server_Ids: 
      Master_Server_Id: 22 
        Master_UUID: 0e7b97a8-a689-11e5-8b79-901b0e8b0f53 
      Master_Info_File: /var/lib/mysql/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: 161219 20:32:20 
       Master_SSL_Crl: 
      Master_SSL_Crlpath: 
      Retrieved_Gtid_Set: 0e7b97a8-a689-11e5-8b79-901b0e8b0f53:60397-45157441 
      Executed_Gtid_Set: 0e7b97a8-a689-11e5-8b79-901b0e8b0f53:1-42679868:42679870-42679876:42679878-42679879:42679881-42679890:42679892-42679908:42679910:42679913:42679916-42679917:42679919-42679927:42679929-42679932:42679934:42679936:42679938-42679939:42679944:42679946-42679950:42679952-42679955:42679957-42679964:42679966:42679969-42679970:42679972:42679974-42679977:42679979-42679980:42679984-42679986:42679988-42679990:42679994-42679996:42679998:42680000-42680001:42680003-42680006:42680009-42680011:42680013-42680018:42680021:42680024:42680026:42680030:42680032:42680035:42680038, 
aea3618e-bacf-11e6-9506-b8ca3a67f830:1-10937274 
       Auto_Position: 1 
1 row in set (0.00 sec) 

나는 다소 혼란 스럽습니다. sql_slave_parallel_workers은 지금 0으로 설정됩니다. 그러나 위의 오류는 예상대로 42679868 대신 GTID 42679909입니다. 이것에 대한 이유는 무엇입니까. 그리고 위와 같이 손상된 복제를 해결하는 올바른 단계는 무엇입니까? 내가 이해할 수없는 것은 GTID 42679869을 사용한 트랜잭션이 이론적으로 문제없이 실행될 수 있다는 것입니다. 하지만 STOP SLAVE; START SLAVE;을 처리하면 처리되지 않습니다.

답변

0

를 응답하고 다른 사람을 돕기 위해 여기 단계 I 짓을했는지 :

  • 하나 slave_parallel_workers=0 설정은 또 다른 이후에만 Executed_Gtid_Set을 필드에주의를 지불하고 GTID 목록 중 하나에있는 모든 격차를 처리해야 포인트에 도달하면 STOP SLAVE; SET GTID_NEXT="[...]"; BEGIN; COMMIT; SET GTID_NEXT="AUTOMATIC"; START SLAVE;
  • 는 복제가 오류없이 자동으로 계속 이전 값으로 slave_parallel_workers을 설정