2012-05-15 3 views
1

바이너리 로그에 마스터 (업데이트/삽입/변경) 이벤트가 정확하게 기록되면?Mysql : 정확하게 이벤트가 마스터의 바이너리 로그에 기록 된 경우

1. When it started on the master server, it will be written to the bin log 
2. When it started and completed on the master, then will be logged 

특정, 나는 변경이 마스터에서 시작 단지로 인해 정상적인 조건에서 amster와 슬레이브 사이의 ALTER 대답 한 경우가있을 실 거예요 지연의 경우 동작을 알고 싶습니다.

+3

이것은 2 여야합니다. 그렇지 않으면 마스터에서 실패한 명령문이 복제됩니다. –

답변

1

비 트랜잭션 문은 즉시 바이너리 로그에 기록됩니다. MySQL 5+의 경우 트랜잭션을 지원하지 않는 스토리지 엔진에 대한 모든 명령문은 즉시 작성됩니다.

트랜잭션 내부의 비 트랜잭션 테이블에 대한 명령문을 실행해서는 안됩니다.

트랜 잭 셔널 문은 트랜잭션이 커밋 될 때 바이너리 로그에 기록됩니다. MySQL 5+의 경우 트랜잭션 테이블에 대한 모든 명령문을 의미합니다.

현재 ALTER TABLE은 암시 적 커밋을 강제 실행하므로 바이너리 로그에 즉시 기록됩니다. MySQL documentation에 따르면 :

이진 로깅은 문이 완료된 직후이지만 잠금이 해제되거나 커밋이 완료되기 전에 수행됩니다. 이렇게하면 로그가 실행 순서대로 기록됩니다.

+0

INNODB 이야기의 ALTER는 마스터에서 완료 될 때만 기록됩니다. 그게 .....? – Uday

+0

정확합니다. 명령문이 완료 될 때까지 기록되지 않습니다. –