Binlog MySQL Replication은“상처의 가방”입니다. 좋은 대안이 있습니까?
-
07-07-2019 - |
해결책
마스터가 병렬로 실행되고 슬레이브는 연재물로 실행됩니다. 마스터가 1 시간 안에 1.5 시간의 인서트/업데이트/실행을 처리 할 수있는 경우 노예가 뒤쳐집니다.
슬레이브의 쓰기 성능을 향상시키는 방법을 찾을 수없는 경우 (더 많은 메모리, 더 빠른 디스크, 불필요한 인덱스 제거) 응용 프로그램 아키텍처에 제한이 있습니다. 결국 당신은 마스터가 병렬로 실행할 수있는 것처럼 빨리 실시간으로 변경을 실행할 수 없다는 점에 부딪 칠 것입니다.
많은 큰 사이트가 데이터베이스를 샤워시킵니다. 마스터+슬레이브를 여러 마스터+슬레이브 클러스터로 나누는 것을 고려하십시오. 그런 다음 고객 기반을 이러한 클러스터로 나누십시오. 노예가 뒤쳐지기 시작하면 이제 다른 클러스터를 추가 할 때입니다.
저렴하지는 않지만 Binlog 복제를 실행할 수있는 방법을 찾을 수 없다면 병렬로 진술을 실행할 수있는 방법을 찾을 수 없을 것입니다.
업데이트 (2017): mysql 이제 지원합니다 평행 노예 작업자 실. 여전히 노예가 뒤쳐 질 수있는 많은 변수가 있지만, 노예는 더 이상 일련의 순서로 쓸 필요가 없습니다. 병렬 슬레이브 스레드의 커밋 순서를 보존하기 위해 선택하는 것은 언제라도 슬레이브의 정확한 상태가 중요한지 살펴 보는 중요한 옵션입니다.
다른 팁
시도해 보셨습니까? 1) set innodb_flush_log_at_trx_commit = 0 2) SET SYNC_BINLOG = 0
둘 다 서버 고장이있는 경우 작은 수준의 추가 위험으로 노예 속도를 높이는 데 도움이됩니다.
노예에 메모리를 추가하면 아마도 도움이 될 것입니다. 우리는 32 ~ 128 Megs로 갔고 더 많은 지연이 사라졌습니다. 그러나 모든 상황에서는 저렴하거나 충분하지 않을 것입니다.
세 번째 서버를 구입하면 그다지 도움이되지 않을 것입니다. 아마도 다른 지연된 슬레이브를 얻을 수 있습니다.