Loading...
MySQL 9.5 Reference Manual 9.5의 20.7.7 Responses to Failure Detection and Network Partitioning의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
20.7.7.1 Expel Timeout
20.7.7.2 Unreachable Majority Timeout
20.7.7.3 Auto-Rejoin
20.7.7.4 Exit Action
Group Replication의 실패 감지 메커니즘은 더 이상 그룹과 통신하지 않는 group member를 식별하고, 그들이 실패했을 가능성이 높다고 판단될 때 추방(expel)하도록 설계되어 있습니다. 실패 감지 메커니즘을 사용하면, 그룹이 올바르게 동작하는 member의 과반수를 포함할 가능성이 높아지고, 따라서 클라이언트의 요청이 올바르게 처리될 가능성이 커집니다.
일반적으로 모든 group member는 다른 모든 group member와 정기적으로 메시지를 교환합니다. 특정 member가 어떤 다른 member로부터 5초 동안 아무 메시지도 받지 못하면, 이 탐지 기간이 끝날 때 그 member에 대해 suspicion(의심)이 생성됩니다. suspicion이 타임아웃되면, 의심받던 member는 실패한 것으로 간주되고 그룹에서 추방됩니다. 추방된 member는 다른 member가 보는 멤버십 리스트에서 제거되지만, 자신이 그룹에서 추방되었다는 사실을 알지 못하므로, 스스로를 온라인 상태로 보고 다른 member들을 unreachable 상태로 인식합니다.
만약 그 member가 실제로는 실패하지 않았고(예를 들어, 일시적인 네트워크 문제로 인해 단지 연결이 끊겼다가), 다른 member들과 통신을 재개할 수 있게 되면, 자신이 그룹에서 추방되었다는 정보가 포함된 view를 수신하게 됩니다.
실패한 member 자체를 포함하여 group member들이 이러한 상황에 반응하는 방식은, 프로세스의 여러 지점에서 설정할 수 있습니다. 기본적으로, member가 실패한 것으로 의심되는 경우 다음과 같은 동작이 발생합니다:
MySQL 9.5에서는 suspicion이 생성될 때, suspicion이 타임아웃되어 의심받는 member가 추방 대상이 되기 전에 5초의 대기 기간이 추가됩니다.
추방된 member가 통신을 재개하고 자신이 추방되었다는 사실을 인지하면, 그룹에 다시 합류(rejoin)하기 위한 시도를 자동으로 세 번 수행합니다(각 시도 사이 간격은 5분); 이 자동 재조인(auto-rejoin) 절차가 성공하지 못하면, 그 이후에는 그룹에 재합류를 시도하지 않습니다.
추방된 member가 그룹에 재합류를 시도하지 않는 동안에는 super-read-only 모드로 전환되고, 운영자의 개입을 기다립니다.
이 섹션에 설명된 Group Replication 설정 옵션을 사용하여, 이러한 동작을 시스템 요구 사항과 우선순위에 맞게 영구적으로 또는 일시적으로 변경할 수 있습니다. 느린 네트워크나 머신, 예기치 않은 일시적 장애가 많이 발생하는 네트워크, 또는 계획된 네트워크 장애로 인해 불필요한 추방이 발생하고 있다면, 추방 타임아웃(expel timeout)과 자동 재조인(auto-rejoin) 시도 횟수를 늘리는 것을 고려하십시오.
member가 앞에서 설명한 기본 동작 중 어떤 것을 수행하는 동안에는, 쓰기 요청은 허용되지 않지만, 여전히 클라이언트와 통신하고 있는 member라면 읽기 작업은 계속 수행할 수 있으며, 시간이 지날수록 오래된 읽기(stale read)가 발생할 가능성이 점점 높아집니다. 오래된 읽기를 피하는 것이 운영자 개입을 피하는 것보다 더 높은 우선순위라면, 추방 타임아웃과 자동 재조인 시도 횟수를 줄이거나 0으로 설정하는 것을 고려하십시오.
실패하지 않은 member도 네트워크 파티션으로 인해 복제 그룹의 일부와는 연락이 끊기지만 전체와는 끊기지 않을 수 있습니다. 예를 들어, 5개의 서버(S1, S2, S3, S4, S5)로 이루어진 group에서 (S1, S2)와 (S3, S4, S5) 사이에 연결이 끊어지면 네트워크 파티션이 발생합니다. 첫 번째 그룹(S1, S2)은 그룹의 절반을 초과하는 수와는 연락할 수 없기 때문에 이제 소수파(minority)가 됩니다.
소수파 그룹의 member가 처리하는 트랜잭션은, 그룹의 다수파(majority)가 unreachable 상태이므로 그룹이 정족수(quorum)를 달성할 수 없어 모두 블록됩니다. 이 시나리오에 대한 자세한 설명은 Section 20.7.8, “Handling a Network Partition and Loss of Quorum”을 참조하십시오.
이 상황에서, 기본 동작은 소수파와 다수파에 속한 member 모두 그룹에 남아서 트랜잭션을 계속 수락하되(소수파의 member에서는 블록되지만), 운영자의 개입을 기다리는 것입니다. 이 동작 역시 설정 가능합니다.
group member가 관련 설정을 지원하지 않는 이전 MySQL Server 릴리스에 있거나, 기본값이 다른 릴리스에 있는 경우, 그들은 위에 명시된 기본 동작에 따라 자신과 다른 group member를 처리합니다. 예를 들어, group_replication_member_expel_timeout 시스템 변수를 지원하지 않는 member는 suspicion이 만료되는 즉시 다른 member를 추방하며, 이 추방은 해당 시스템 변수를 지원하고 더 긴 타임아웃을 설정해 둔 다른 member라도 그대로 받아들입니다.
20.7.6 XCom Cache Management
20.7.8 Handling a Network Partition and Loss of Quorum