mysql5.6gtid 복제 노예 붙어(잠금 시스템)?
-
29-09-2020 - |
문제
나는 설정 5.6gtid 기반으로 복제(에 5.6.26)그것은 작동하는 듯했을 때,그것은 복제 내 무작위 검사 db 내가 만들어 옆에 정상적인 데이터입니다.그러나 어떤 시점에서 뭔가가 일어난 때문에 내가 보는 모든 것이:
mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: System lock Master_Host: xxxxxxxxxxxxxxxxxx Master_User: xxxxxxxxxxxxxxxx Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysqld-bin.000141 Read_Master_Log_Pos: 169293671 Relay_Log_File: mysqld-relay-bin.000003 Relay_Log_Pos: 16861206 Relay_Master_Log_File: mysqld-bin.000141 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 16860994 Relay_Log_Space: 169298584 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: 55203 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 7846a847-62c7-11e5-91a6-e06995de432e Master_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: System lock Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: 7846a847-62c7-11e5-91a6-e06995de432e:4757140-5030085 Executed_Gtid_Set: 7846a847-62c7-11e5-91a6-e06995de432e:1-4783274 Auto_Position: 1
지금은 원래"Slave_SQL_Running_State"고 말했다"읽 이벤트 릴레이에서 로그인"또는 그러한 것은 지금에 변경된 시스템을 잠금뿐만 아니라(IO 상태를 항상했다).
그것은 보인다 Seconds_Behind_Master
이 꾸준히 증가하고 있다는 것입 및 로그 릴레이 급속도로 성장하 크기로 파일시스템에서는 동안, Executed_gtid_set
않는 것을 변경하지만,여전히 뭔가 잘못된 것 같기 때문에 그것은 단지 뒤에 많....
여기에 processlist:
mysql> show processlist; +------+-------------+-----------+------+---------+-------+---------------------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+-------------+-----------+------+---------+-------+---------------------------------------+------------------+ | 1877 | root | localhost | NULL | Sleep | 6076 | | NULL | | 1878 | root | localhost | NULL | Query | 0 | init | show processlist | | 1886 | system user | | NULL | Connect | 783 | System lock | NULL | | 1887 | system user | | NULL | Connect | 0 | System lock | NULL | | 1888 | system user | | NULL | Connect | 783 | Waiting for an event from Coordinator | NULL | | 1889 | system user | | NULL | Connect | 55455 | System lock | NULL | +------+-------------+-----------+------+---------+-------+---------------------------------------+------------------+
나는 중지하려고 노예와 그것을 다시 시작하지만 그것은 도움이됩니다.
누군가가 어떤 아이디어를 할 수 있게 만들려고 이 작업을까요?은 많이 주시면 감사하겠습니다.
감사
해결책
이후 나는 더 이상 2 system user
항목에서 processlist,나는 당신을 사용하여 멀티 스레드에 복제(slave_parallel_workers > 1).
처럼 보이는 버그
On Oct29,2014,이었으로 표현 David Moss
감사합니다.이 문제에 덮여 있었 버그 17326020 고 다음에 추가되었 MySQL5.6.21 및 5.7.5 변경 로그:
When I/O 스레드에 다시 연결하는 마스터를 사용하여 GTIDs 고 멀티 스레드 노예 중에 트랜잭션이 실패 을 중단,트랜잭션을 떠나 부분적인 트랜잭션에서 릴레이 로그 검색과 같은 트랜잭션을 다시합니다.이 발생 을 수행할 때의 회전 로그 릴레이.이 때 다시 연결, 서버를 검사하기 전에 회전하는 로그에서 이러한 경우,그리고 대기하는 처음에 대한 어떤 진행하는 트랜잭션을 완료합니다.
따라서 새로운 아무것도 추가됩 이 버그와 나는 그것을 닫으로 고정됩니다.
Dec10,2014 년이 되었으로 표현 Laurynas Biveinis
문제:
MTS,GTIDs 및 자동차 위치를 사용할 때,작업자가 적용 부분적인 트랜잭션 왼쪽에 relaylog 여 IO 스레드 연결,그것은 기다릴 것이 XID 로그 이벤트를 커미 트랜잭션이 있습니다.
불행하게도,SQL 스레드 코디네이터를 도달 할 것이 마스터의 회전에 이벤트는 다음 relaylog 파일을 기다릴 것입니다에 대한 모든 노동자 의 작업에 적용하기 전에 회전합니다.
분석:
전체적으로 거래가 다시 검색하여 IO 실 후 다시 연결 슬레이브해야 합 rollback 부분에 트랜잭션면 를 몰래 이 회전에서 마스터입니다.
이 버그 보고서 같은 문제는 이미 고 BUG#17326020 고 보고된 문제는 더 이상 재현되지 않음.그래서,이 헝겊 조각은 단지 를 추가하는 새로운 테스트를 경우입니다.
제안
실행 FLUSH BINARY LOGS;
마스터
면 운동 트리거 응답에서 스레드 SQL.
하지 않는 경우,추진하고 제거 slave_parallel_workers 서 my.cnf
고 다시 시작 mysql.
을 시작한 이후에 MySQL 고 마스터와 슬레이브 및어 error 1236
, 즉,당신은 당신을 설정하려고 시도하는 복제에서는 불가능한 위치.의 컨텍스트에서 GTID 및 오류 메시지가 당신을 가지고,이진하는 데 필요한 로그를 완전히 식별하기 위해 설정된 쿼리에 GTID 설정이 더 이상 존재하지 않,
시 SHOW SLAVE STATUS\G
Retrieved_Gtid_Set: 7846a847-62c7-11e5-91a6-e06995de432e:4757140-5030085
Executed_Gtid_Set: 7846a847-62c7-11e5-91a6-e06995de432e:1-4783274
에서 이 마지막 GTID 실행 7846a847-62c7-11e5-91a6-e06995de432e:4783274
이것이 의미하는 바이너리 로그가 있거나 7846a847-62c7-11e5-91a6-e06995de432e:4783275
더 이상 존재하지 않습니다.
나는 볼 수 있습니다 이 일어나고 있는 경우에 당신은 중단 복제에 노예,왼쪽 복제 해제에 대해 충분히 마을 회전 바이너리 로그(via expire_logs_days)슬레이브는 여전히 볼 필요한 다음,설정에 복제입니다.
에서 당신의 특별한 경우에는,일을 하려고 mysqlbinlog 덤프 이진 로그 mysqld-bin.000141
.면 아무것도 나오는 그것은,당신을 다시 로드 슬레이브에 설치 복제 처음부터.