2011-09-26 4 views
2

postgresql 데이터베이스 서버간에로드 밸런싱 (데이터베이스 처리로드 분산)을 구현하는 방법을 이해하기 위해 많은 시간을 보냈습니다.postgresql을위한로드 밸런싱/배포

나는 초당 약 100 건의 트랜잭션을 끌어들이는 postgresql 시스템을 가지고 있는데, 이것은 증가 할 것 같다. 제 케이스에는 많은 업데이트 + 인서트 + 선택이 있습니다. 그래서 나를위한 솔루션은 모든 삽입/업데이트 및 읽기를 수용해야합니다.

  • skype에서 db 도구 (http://www.slideshare.net/adorepump/database-tools-by-skype)를 통해 제안 된대로 plproxy를 사용할 계획입니다.
  • 지금 나는 또한 포스트 그레스 9.0 "의 PostgreSQL 스트리밍 복제 + 핫 대기 모드가"으로 간주 될 수 있다는 것을 듣고 있어요
위의 시나리오에 대한 구현하는 어떤 간단한 (또는 복잡한) 솔루션이있는 경우

누군가가 나에게 제안 할 수 있습니까?

답변

2

데이터베이스가 100GB보다 작 으면 먼저 한 컴퓨터에서 할 수있는 것을 최대화해야합니다.

당신은해야 할 것 :

  • 큰 배터리 백업 캐시와 좋은 스토리지 컨트롤러를;
  • RAID10에 빠른 디스크 묶음;
  • WAL 용 RAID10에있는 또 다른 디스크 묶음;
  • 데이터가있는 것보다 RAM이 더 많습니다.
  • 가능한 많은 프로세서 코어.

이 컴퓨터 한 대에 1000s의 tps를 수행 할 수 있습니다.

충분하지 않으면 스트리밍 복제가 포함 된 보조 대기 서버를 추가하려고합니다. 장시간 실행되는 읽기 전용 보고서 쿼리, 백업 등을 실행하는 데 사용하면 마스터 서버가 이러한 작업을 수행하지 않아도됩니다.

충분하지 않은 경우에만 스트리밍 복제 핫 대기 서버를 추가하여 읽기 전용 쿼리의로드 균형을 조정해야합니다. 이것은 복잡 할 것입니다. 비동기이기 때문에 마스터 확인과 대기 변경 사이의 지연이 있습니다. 클라이언트 응용 프로그램에서 처리해야합니다. 설치가 훨씬 더 복잡해집니다.

+0

고마워요.하지만 저에게 1000TPS의 수준을 넘어서게 될 것이 분명합니다. 위에서 언급 한대로 스카이프 솔루션을 무시해야합니까? 또한 "같은 수의 삽입 + 업데이트와 함께 읽음"을 이해해야합니다. – Muthu

+0

읽기에 약간 오래된 데이터가 표시 될 수 있습니까? 예 : 몇 초입니까? 가장 바쁜 테이블을 위해 샤딩이나 클러스터를 사용해야하는 것이 아니라면 - plproxy가 도움이 될지 모르나 확실히 쉽지도 싸지도 않을 것입니다 (그리고 100k $는 저렴합니다). 컨설턴트를 고용하십시오 (http://www.postgresql.org/support/professional_support_northamerica). – Tometzky