ProxySQL 및 MySQL 클러스터를 사용한 삽입/업데이트 후 짧은 대기 시간 문제
P粉194919082
P粉194919082 2024-03-21 21:11:42
0
1
343

우리는 ProxySQL과 함께 MySQL 클러스터를 사용하고 있으며 다음과 같이 설정되어 있습니다.

  • 서버 1은 메인 데이터베이스를 호스팅하는 메인 서버이며 유럽에 위치합니다
  • 서버 2는 로컬 사용자에게 서비스를 제공하는 아시아 서버이며 변경 사항이 발생할 때 서버 1이 업데이트하는 데이터베이스의 읽기 전용 버전을 포함합니다.

질문은 이것입니다: 서버 2의 사용자가 SQL UPDATE, UPDATE 클라이언트 SET 이름= '새 이름' WHERE id = 123을 트리거합니다. (이 업데이트는 서버 1로 전송된 다음 서버 2로 업데이트됩니다.)

동일한 코드 블록에서 레코드(SELECT name FROM 고객 WHERE id =123)를 선택하면 쿼리가 로컬 서버로 전송되고 결과는 1초 동안 코드를 일시 중지하지 않는 한 "이전 이름"이 됩니다( 시험용).

우리가 생각한 한 가지 해결책은 연결(PHP)을 변경하고 서버 1로 직접 이동하여 나머지 코드 블록을 가져오는 것이었지만, 그런 종류의 방법은 목적에 어긋나고 이상적이지 않습니다(조용히 큰 코드베이스를 업데이트해야 함).

proxySQL과 관련된 솔루션이 있나요?

P粉194919082
P粉194919082

모든 응답(1)
P粉122932466

복제 대기 시간이 긴 슬레이브 서버로 쿼리가 라우팅되는 것을 방지하려면 테이블 mysql_server 열에서 최대 복제 대기 시간 임계값을 설정할 수 있습니다. 최대 복제 지연. 참조: max_replication_lag

max_replication_lag – 0보다 크면 ProxySQL은 복제 대기 시간 및 구성된 제한을 초과하는지 여부를 정기적으로 모니터링합니다. 임계값을 초과하면 복제가 따라잡을 때까지 일시적으로 호스트를 회피합니다.

쿼리 읽기와 쓰기를 분할하는 쿼리 규칙을 만들 수도 있습니다. 참조: ProxySQL 분할 읽기/쓰기

Important: proxysql-gtid-causal-reads Mysql 버전 5.7.5 이상을 사용하는 경우 이 방법으로 문제가 주로 해결될 수 있습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿