Loading...
MySQL 9.5 Reference Manual 9.5의 20.7.5 Message Fragmentation의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
비정상적으로 큰 메시지가 Group Replication 그룹 멤버들 사이에서 전송되면, 일부 그룹 멤버가 실패한 것으로 보고되어 그룹에서 추방될 수 있습니다. 이는 Group Replication의 그룹 통신 엔진(XCom, Paxos variant)이 사용하는 단일 스레드가 그 메시지를 처리하느라 너무 오래 점유되기 때문에, 일부 그룹 멤버가 수신자를 실패한 것으로 보고할 수 있기 때문입니다. 기본적으로 큰 메시지는 자동으로 여러 조각으로 분할되어 개별적으로 전송되며, 수신자가 이를 재조립합니다.
system variable group_replication_communication_max_message_size은 Group Replication 통신에 대한 최대 메시지 크기를 지정하며, 이 값을 초과하는 메시지는 조각으로 나뉩니다. 기본 최대 메시지 크기는 10485760 바이트(10 MiB)입니다. 허용되는 최댓값은 system variable replica_max_allowed_packet의 최대값(1 GB)과 동일합니다.
group_replication_communication_max_message_size은 applier 스레드가 허용된 최대 패킷 크기보다 큰 메시지 조각을 처리할 수 없기 때문에 반드시 replica_max_allowed_packet보다 작아야 합니다. 조각화를 끄려면 group_replication_communication_max_message_size에 0 값을 지정합니다.
대부분의 다른 Group Replication system variable과 마찬가지로, 변경 사항이 적용되려면 Group Replication plugin을 재시작해야 합니다. 예를 들면 다음과 같습니다:
1STOP GROUP_REPLICATION; 2SET GLOBAL group_replication_communication_max_message_size= 5242880; 3START GROUP_REPLICATION;
조각난 메시지의 전달은 모든 그룹 멤버가 해당 메시지의 모든 조각을 수신하고 재조립했을 때 완료된 것으로 간주됩니다. 조각난 메시지에는, 전송 도중에 새로 조인한 멤버가 조인 이전에 전송된 이전 조각을 복구할 수 있도록 하는 정보를 헤더에 포함합니다. 조인하는 멤버가 조각 복구에 실패하면, 스스로를 그룹에서 추방합니다.
그룹에서 사용 중인 Group Replication 통신 프로토콜 버전은 조각화를 허용해야 합니다. 함수 group_replication_get_communication_protocol()을 사용하여 그룹이 사용하는 통신 프로토콜을 조회할 수 있으며, 이 함수는 그룹이 지원하는 가장 오래된 MySQL Server 버전을 반환합니다. 필요하다면 group_replication_set_communication_protocol()을 사용하여 조각화를 허용할 수 있도록 통신 프로토콜 버전을 충분히 높은 값(8.0.16 이상)으로 설정하십시오. 자세한 내용은 Section 20.5.1.4, “Setting a Group's Communication Protocol Version”을 참조하십시오.
일부 멤버가 조각화를 지원하지 않아 replication 그룹이 조각화를 사용할 수 없는 경우, system variable group_replication_transaction_size_limit을 사용하여 그룹이 허용하는 트랜잭션의 최대 크기를 제한할 수 있습니다. 이 크기를 초과하는 트랜잭션은 롤백됩니다. 또한 group_replication_member_expel_timeout을 사용하여, 실패했을 것으로 의심되는 멤버가 그룹에서 추방되기 전까지의 대기 시간을(최대 1시간까지) 추가로 허용할 수 있습니다.
20.7.4 Message Compression
20.7.6 XCom Cache Management