문제

저는 일부 데이터의 경우 동기화되지 않는 마스터-슬레이브 MySQL 바이너리 로그 복제 시스템 (phew!)을 실행하고 있습니다 (즉, 마스터가 슬레이브보다 더 많은 데이터를 보유 함).그러나 슬레이브는 사소한 MySQL 오류로 매우 자주 중지됩니다. 비활성화 할 수 있습니까?(아마도 복제 슬레이브 무시 복제 오류 또는 일부 종류에 대한 my.cnf 설정;))

이것은 때때로 슬레이브가 존재하지 않는 항목을 복제하려고 할 때 발생하는 일입니다. SHOW SLAVE STATUS \ G; 에서 간단히 확인하면 라코 디스

다음을 수행하여 즉시 수정합니다 (슬레이브가 중지 된 것을 알게되면). 라코 디스

... 최근에 이것은 다소 지루해졌습니다. 그리고 나를 위해 이것을 수행하는 일종의 PHP를 내뱉기 전에 첫 번째 오류에서 슬레이브를 죽이지 않는 my.cnf 항목이 있는지 궁금합니다..

건배

/ mp

도움이 되었습니까?

해결책

예, my.cnf에 --slave-skip-errors= xxx를 사용합니다. 여기서 xxx는 'all'또는 쉼표 구분 오류 코드 목록입니다.

다른 팁

슬레이브 중지;전역 sql_slave_skip_counter= 1 설정;슬레이브 시작;

현재 오류 만 무시하고 복제 프로세스를 계속할 수 있습니다.

먼저, 정말로 오류를 무시 하시겠습니까?오류가 발생하면 데이터가 더 이상 동기화되지 않았을 가능성이 있습니다.아마도 원하는 것은 슬레이브 데이터베이스를 삭제하고 오류가 발생하면 동기화 프로세스를 다시 시작하는 것입니다.

둘째, 존재하지 않는 항목을 복제 할 때 발생하는 오류가 아니라고 생각합니다 (어쨌든 무슨 뜻입니까?). 슬레이브 데이터베이스에 이미있는 항목을 복제하는 것 같습니다. p>

문제는 주로 깨끗한 데이터 사본에서 시작하지 않는 데서 발생한다고 생각합니다.마스터가 슬레이브에 복사 된 것 같습니다.그런 다음 복제가 꺼 졌거나 실패했습니다.그런 다음 다시 시작되었지만 노예가 놓친 것을 따라 잡을 기회를주지 않았습니다.

데이터베이스를 복제하고 슬레이브로 가져 오기에 충분한 시간 동안 쓰기 액세스를 위해 마스터를 닫을 수있는 시간이 있다면 문제가 해결 될 수 있습니다.

최신 mysqldump 명령에는 일관된 복제를 설정하는 데 도움이되는 몇 가지 옵션이 있습니다.바이너리 로그 파일과 위치를 덤프에 넣고 슬레이브에로드 될 때 자동으로 설정되는 --master-data를 확인하십시오.또한 --single-transaction는 트랜잭션 내에서 덤프를 수행하므로 일관된 덤프를 수행하는 데 쓰기 잠금이 필요하지 않습니다.

슬레이브가 복제 이외의 쓰기에 사용되지 않는 경우 고성능 MySQL의 작성자는 사용자가 슬레이브에서 실수로 데이터를 변경하는 것을 방지하기 위해 슬레이브 서버에 read_only를 추가 할 것을 권장합니다.당신은 경험했습니다.

데이터베이스를 동기화하지 않고 복제를 수행하고 있다고 생각합니다. 먼저 데이터베이스를 동기화하고 복제를 시도하면 서버가 동일한 고유 ID를 생성하고 자동 삽입 오프셋을 설정하려고합니다.

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