집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 마스터-슬레이브 동기화 문제 분석
클러스터 라이브러리 상태 보기 슬레이브 상태 표시G
라이브러리의 원래 팁: Last_Error: 작업자에 오류가 있어서 코디네이터가 중지되었습니다. 가장 최근 실패는 다음과 같습니다. 작업자 1이 트랜잭션 '864e6992-0a34를 실행하지 못했습니다. -11e7 -a98a-7cd30ac6c9ec:148408'(마스터 로그 mysql-bin.000010, end_log_pos 920578920). 이 실패나 다른 실패에 대한 자세한 내용은 오류 로그 및/또는performance_schema.replication_applier_status_by_worker 테이블을 참조하세요.
1、 Cong을 따라가서 라이브러리 프롬프트에서 원인을 찾으세요.
select * from performance_schema.replication_applier_status_by_worker\G
명령을 입력하고
을 얻으세요. 이 트랜잭션이 r_com_patent 테이블에서 발생했다는 것을 알고 있지만 어떤 레코드인지는 알 수 없습니다.
2. 바이너리 파일을 찾으러 메인 라이브러리에 갔을 때 무슨 일이 일어났나요? 마지막으로 레코드를 찾으려면
Mysqlbinlog --no-defaults –v –v --base64-output=decode-rows /usr/local/mysql/data/master-bin.000010 | grep –A ‘10’ 920578920
명령을 입력하세요.
메인 라이브러리가 r_com_patent 테이블을 업데이트했지만 클러스터 라이브러리는 업데이트된 기록을 찾을 수 없습니다.
구체적으로, 기본 데이터베이스는 r_com_patent 테이블의 Patent_id 45 및 필드 cid를 NULL에서 3253026으로 변경합니다. 클러스터 데이터베이스 테이블 r_com_patent의 Patent_id 45를 갖는 레코드는 원래 3253026 필드 cid를 갖습니다. 복제 메커니즘으로 인해, 데이터베이스 테이블 r_com_patent에서 Patent_id가 45이고 ID가 NULL인 레코드를 찾아야 하므로 찾을 수 없습니다. . .
3.해결방법
1) 마스터에서 기록을 확인하세요.
Select * from r_com_patent where patent_id = 45;
2) 슬레이브에서 업데이트된 기록을 찾으세요. 존재하지 않아야 합니다.
Select * from r_com_patent where patent_id = 45;
3) Slave에서 손실된 데이터를 입력하거나 수정합니다.
Insert into r_com_patent values(3253026,45);
4) 슬레이브에서 오류 보고 트랜잭션을 건너뜁니다.
Stop slave; Set @@SESSION.GTID_NEXT=’ 864e6992-0a34-11e7-a98a-7cd30ac6c9ec:148408’ Begin; Commit; Set @@SESSION.GTID_NEXT = AUTOMATIC; Start slave;
이후 다시 확인해보세요
Show slave status\G
위 내용은 MySQL 마스터-슬레이브 동기화 문제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!