MySQL 8.0 → 8.4 LTS로 업그레이드 후 Group Replication 3노드 클러스터에서 split-brain이 종종 발생합니다.
네트워크 일시 단절 시 두 그룹으로 갈라지고, 양쪽이 모두 PRIMARY 상태가 됩니다. 8.0 때는 같은 환경에서 한 쪽이 자동으로 ERROR 상태로 떨어졌었는데요.
8.4의 Group Replication 설정에 뭐가 바뀐 건가요?
MySQL 8.0 → 8.4 LTS로 업그레이드 후 Group Replication 3노드 클러스터에서 split-brain이 종종 발생합니다.
네트워크 일시 단절 시 두 그룹으로 갈라지고, 양쪽이 모두 PRIMARY 상태가 됩니다. 8.0 때는 같은 환경에서 한 쪽이 자동으로 ERROR 상태로 떨어졌었는데요.
8.4의 Group Replication 설정에 뭐가 바뀐 건가요?
댓글 1
8.4에서 Group Replication 기본 동작이 의도적으로 바뀌었습니다 — 데이터 안전 우선에서 가용성 우선으로 일부 기본값이 이동했고, 이걸 그대로 두면 보고하신 split-brain이 발생합니다.
핵심 변경
설정8.0 기본8.4 기본의미group_replication_consistencyEVENTUALBEFORE_ON_PRIMARY_FAILOVER일부 일관성 강화group_replication_unreachable_majority_timeout0 (영구 대기)0 (영구 대기)변동 없음group_replication_member_expel_timeout530관용 시간 6배 증가group_replication_autorejoin_tries310재합류 시도 강화관용 시간이 늘어난 것이 split-brain 노출 시간을 길게 만든 주범입니다.
진단 — 현재 상태 확인
처방 1) 안전 기본값 복원
처방 2) 다수파에 대한 명시적 강제
3노드 환경에서 minority(1노드)가 살아남는 것을 방지하려면:
처방 3) 자동 재합류 활성화
운영 체크리스트
SET GLOBAL super_read_only=ON자동화 — application은 read-only 노드로 fallback대안 — InnoDB Cluster + MySQL Router
Group Replication 직접 운영 부담이 크면 InnoDB Cluster로 묶고 MySQL Router를 앞단에 두는 구조가 더 안정적입니다. Router가 자동으로 read/write 분리·failover를 처리합니다.
마지막 한 줄
8.4 Group Replication은 "수동 개입을 줄이는 방향"으로 기본값이 바뀐 결과 split-brain 가능성이 약간 늘었습니다. 데이터 무결성이 우선이라면 timeout 값을 5초 이하로 명시 설정하세요.