Binlog MySQL Replication은“상처의 가방”입니다. 좋은 대안이 있습니까?

StackOverflow https://stackoverflow.com/questions/272704

  •  07-07-2019
  •  | 
  •  

문제

나는 정직하게 시험을 마친 이것 왼쪽 그리고 오른쪽 그리고 여전히 거울 서버가 복제 슬레이브로 설정되어 여전히 뒤쳐진다는 것을 알게됩니다. 내 앱의 사용자 기반은 계속 성장하고 있으며 이제는 "주말에도"데이터베이스를 "재 동기화"로 유지할 수없는 지점에 도달했습니다.

어쨌든, 내 질문 : 그럴듯한 것이 있습니까? 입수 가능한, Binlog 복제의 대안? 두 개의 서버가 있으므로 유일한 옵션이 아니라면 아직로드 밸런싱을 위해 3 분의 1을 구매하는 것을 고려하지 않습니다.

건배,

/MP

도움이 되었습니까?

해결책

마스터가 병렬로 실행되고 슬레이브는 연재물로 실행됩니다. 마스터가 1 시간 안에 1.5 시간의 인서트/업데이트/실행을 처리 할 수있는 경우 노예가 뒤쳐집니다.

슬레이브의 쓰기 성능을 향상시키는 방법을 찾을 수없는 경우 (더 많은 메모리, 더 빠른 디스크, 불필요한 인덱스 제거) 응용 프로그램 아키텍처에 제한이 있습니다. 결국 당신은 마스터가 병렬로 실행할 수있는 것처럼 빨리 실시간으로 변경을 실행할 수 없다는 점에 부딪 칠 것입니다.

많은 큰 사이트가 데이터베이스를 샤워시킵니다. 마스터+슬레이브를 여러 마스터+슬레이브 클러스터로 나누는 것을 고려하십시오. 그런 다음 고객 기반을 이러한 클러스터로 나누십시오. 노예가 뒤쳐지기 시작하면 이제 다른 클러스터를 추가 할 때입니다.

저렴하지는 않지만 Binlog 복제를 실행할 수있는 방법을 찾을 수 없다면 병렬로 진술을 실행할 수있는 방법을 찾을 수 없을 것입니다.

업데이트 (2017): mysql 이제 지원합니다 평행 노예 작업자 실. 여전히 노예가 뒤쳐 질 수있는 많은 변수가 있지만, 노예는 더 이상 일련의 순서로 쓸 필요가 없습니다. 병렬 슬레이브 스레드의 커밋 순서를 보존하기 위해 선택하는 것은 언제라도 슬레이브의 정확한 상태가 중요한지 살펴 보는 중요한 옵션입니다.

다른 팁

시도해 보셨습니까? 1) set innodb_flush_log_at_trx_commit = 0 2) SET SYNC_BINLOG = 0

둘 다 서버 고장이있는 경우 작은 수준의 추가 위험으로 노예 속도를 높이는 데 도움이됩니다.

노예에 메모리를 추가하면 아마도 도움이 될 것입니다. 우리는 32 ~ 128 Megs로 갔고 더 많은 지연이 사라졌습니다. 그러나 모든 상황에서는 저렴하거나 충분하지 않을 것입니다.

세 번째 서버를 구입하면 그다지 도움이되지 않을 것입니다. 아마도 다른 지연된 슬레이브를 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top