17.4.1.26 복제중인 슬레이브 오류
문이 마스터와 슬레이브 모두에 동일한 오류 (동일한 오류 코드)를 반환하면 오류 로그는 기록되지만 복제가 계속됩니다.
문이 마스터와 슬레이브로 다른 오류를 반환하면 슬레이브 SQL 쓰레드는 종료 슬레이브가 오류 로그에 메시지를 기록 데이터베이스 관리자가 그 오류에 대해 무엇을할지 결정까지 기다립니다. 여기에는 문이 마스터 또는 슬레이브에서 (양쪽 모두는 아니고) 오류를 반환하는 경우가 있습니다. 이 문제를 해결하려면 수동으로 슬레이브에 연결하여 문제의 원인을 확인하십시오. 여기에는 SHOW SLAVE STATUS
가 도움이됩니다. 그리고 문제를 해결하고 START SLAVE
를 실행하십시오. 예를 들어, 슬레이브를 다시 시작하기 전에 존재하지 않는 테이블을 만들어야 할 수도 있습니다.
이 오류 코드 확인 동작이 바람직하지 않은 경우, --slave-skip-errors
옵션에서 오류의 일부 또는 전부를 숨기기 (무시) 할 수 있습니다.
MyISAM
과 같은 비 트랜잭션 스토리지 엔진의 경우 테이블을 가난하게 업데이트하여 오류 코드를 반환 만의 문이있을 수 있습니다. 이것은 예를 들어, 하나의 행이 키 제약 조건을 위반하는 여러 행 삽입 또는 긴 업데이트 문이 일부 행을 업데이트 한 후 강제 종료 된 경우에 발생할 수 있습니다. 이것이 마스터에서 발생한 경우, 슬레이브는 문 실행을 예상하지만 동일한 오류 코드로 종료합니다. 그렇지 않으면 슬레이브 SQL 쓰레드는 이미 설명했듯이 중지합니다.
마스터 및 슬레이브로 다른 스토리지 엔진을 사용하는 테이블간에 복제하는 경우 같은 문이 한 버전 테이블에 실행하고 다른 한편으로
실행하지 않을 때 다른 오류를 반환하거나 한 버전의 테이블에서 오류가 발생하고 다른 한편으로는 발생하지 않거나 할 수있는 것에
유의하십시오. 예를 들어, MyISAM
은 외래 키 제약 조건을 무시하기 때문에 마스터에서 InnoDB
테이블에 액세스하는 INSERT
또는 UPDATE
문에서 외래 키 위반이 발생할 수 있어도, 슬레이브에서 MyISAM
버전의 같은 테이블에서 실행 된 동일한 문은 이러한 오류를 반환하지 않고 복제가 중지됩니다.