17.4.1.19 복제 및 마스터 또는 슬레이브 종료
마스터 서버를 종료하고 나중에 다시 시작하는 것이 안전합니다. 슬레이브가 마스터에 연결을 잃은 경우, 슬레이브는 즉시 다시 연결을 시도하고 그것이 실패했을 경우는 정기적으로 다시 시도합니다. 기본적으로 60 초마다 재 시도합니다. 이것은 CHANGE MASTER TO
문으로 변경할 수 있습니다. 슬레이브는 네트워크 연결 중단에도 대응할 수 있습니다. 그러나 슬레이브는 마스터에서 데이터를 slave_net_timeout
초간받지 않았다 뒤에게만 네트워크 정지를 인식합니다. 정지 시간이 짧은 경우는 slave_net_timeout
을 줄이는 것이 좋습니다. 섹션 5.1 "서버 시스템 변수" 를 참조하십시오.
마스터 측에서 예기치 않은 종료 (예를 들어, 충돌)이 발생하면 마스터 바이너리 로그 파일을 플러시되지 않았기 때문에 마스터 바이너리 로그에 노예가 읽은 최신 위치 이전의 최종 위치가 기록 될 수 있습니다 . 따라서 마스터가 복귀 할 때 슬레이브 복제되지 않을 수 있습니다. 마스터 my.cnf
파일에서 sync_binlog=1
을 설정하는 것은 마스터가 그 바이너리 로그를 플러시하는 빈도가 오르게되기 때문에이 문제를 최소화하는 데 도움이됩니다.
슬레이브을 완전히 종료하는 것은 그만두고이 추적되기 때문에 안전합니다. 그러나 슬레이브가 임시 테이블을 열지 않은 것을 고려하십시오. 섹션 17.4.1.22 "복제 및 임시 테이블" 을 참조하십시오. 예기치 않은 종료에 의해 문제가 발생할 수 있습니다 (특히 디스크 캐시가 디스크로 플러시되지 않은 상태에서 문제가 발생했을 경우).
트랜잭션은 노예 커밋하고
relay-log.info
를 업데이트합니다. 이 두 작업 사이에 충돌이 발생했을 경우, 릴레이 로그 처리는 파일이 나타내는 정보보다 먼저 가서 노예 재시작 된 후에 릴레이 로그의 마지막 트랜잭션에서 이벤트를 다시 실행합니다.유사한 문제는 노예가
relay-log.info
를 경신했다 그러나 쓰기 작업이 디스크로 플러시되기 전에 서버 호스트가 충돌하는 경우에도 발생할 수 있습니다. 이것이 발생 가능성을 최소화하려면 슬레이브my.cnf
파일에sync_relay_log_info=1
을 설정하십시오.sync_relay_log_info
의 기본값은 0이며,이 경우는 디스크에 쓰기가 적용되지 않습니다. 서버는 운영 체제에 따라 수시로 파일을 플래시합니다.
시스템의 이러한 문제에 대한 탄력성은 우수한 무정전 전원 공급이 있으면 크게 향상됩니다.