문제

나는 설정 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_workersmy.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.면 아무것도 나오는 그것은,당신을 다시 로드 슬레이브에 설치 복제 처음부터.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top