>  기사  >  데이터 베이스  >  MySQL 마스터-슬레이브 동기화 문제 분석

MySQL 마스터-슬레이브 동기화 문제 분석

PHP中文网
PHP中文网원래의
2018-05-10 17:14:372212검색

클러스터 라이브러리 상태 보기 슬레이브 상태 표시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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.