Galera 클러스터와의 중요한 읽기 및 느린 동기화 테스트 방법
이 질문은 레플리케이션의 문제를 해결하는 방법에 관한 것이 아니라, 레플리케이션 속도가 느려서 발생하는 버그를 찾는 것을 목적으로 하고 있습니다.성능 향상을 위해 모든 쿼리를 동기화하는 것이 아니라 중요한 읽기로 식별한 쿼리만 동기화하는 것이 좋습니다.
Galera 클러스터에서 동기 관련 오류가 발생할 수 있습니다.예를 들어 웹 어플리케이션은 데이터를 쓴 후 리다이렉트하지만 다음 페이지에 오래된 상태를 표시합니다.개발 환경에서는 이러한 문제가 없습니다.서버 부하가 있는 실제 환경에서 몇 밀리초 전에 쓴 데이터를 읽으면 다른 노드가 동기화되지 않을 수 있습니다.
이 문제를 해결하기 위해 노드 핀 접속을 중요한 읽기용으로 사용하여 이전에 기술한 것과 동일한 노드에서 읽습니다.SET SESSION wsrep-sync-wait=6;
여기서 설명한 INSERT/UPDATES/DELETE의 경우 해당 동작을 줄일 수 있습니다(이제 rick-james와 같은 비트 "1"을 사용합니다).
레플리케이션 속도가 느려서 발생하는 버그를 테스트하는 방법
매우 느린 동기화를 시뮬레이션하여 응용 프로그램에서 중요한 읽기 동작을 테스트하는 것이 좋습니다.Galera 클러스터가 부하가 높은 상태에서 동작하도록 하기 위한 구성 옵션이 있습니까?Galera에는 속도를 늦추기 위한 흐름 제어 기능이 내장되어 있지만 클러스터를 강제로 흐름 제어로 만들 수 있는 신뢰할 수 있는 방법을 찾을 수 없었습니다.이 솔루션은 MySQL에만 의존할 필요가 없습니다.또한 "innodb_flush_method"와 조합된 느린 가상 볼륨도 도움이 될 수 있습니다.
(질문을 개선하도록 업데이트됨)
다음을 포함해야 합니다.1
책을 읽고 있으니까.
SET SESSION wsrep_sync_wait=1; -- or any odd number
SELECT ... ; -- this will wait if necessary
SET SESSION wsrep_sync_wait=0; -- (optional); to avoid slowing down subsequent SQL
지리적으로 분산된 클러스터를 설정합니다.원격 노드에는 클라우드 서비스를 사용할 수 있습니다.
각 노드가 다른 대륙에 있는 경우 라운드 트립 지연은 각각 100~200ms가 됩니다. COMMIT
.
언급URL : https://stackoverflow.com/questions/53477322/how-to-test-critical-reads-and-slow-synchronisation-with-a-galera-cluster
'programing' 카테고리의 다른 글
공백을 밑줄로 바꾸기 (0) | 2022.09.13 |
---|---|
-m 스위치의 용도는 무엇입니까? (0) | 2022.09.13 |
Java HTTPS 클라이언트 증명서 인증 (0) | 2022.09.13 |
XAMPP에서 phpMyAdmin을 사용하여 "구성에서 정의된 controluser에 대한 연결에 실패했습니다." (0) | 2022.09.12 |
ORDER BY와 GROUP BY를 함께 사용 (0) | 2022.09.12 |