Replikacja i skalowanie PostgreSQL

Istnieje wiele metod replikacji i skalowania baz danych PostgreSQL aby wykorzystywał wiele maszyn. Poniżej zaprezentuje niektóre z dostępnych rozwiązań. Trzeba podkreślić, że nie ma jednego uniwersalnego/najlepszego rozwiązania replikacji i/lub skalowania baz danych PostgreSQL (tak jak PostgrSQL nie jest uniwersalnym/najlepszym rozwiązaniem we wszystkich zastosowaniach, a jedynie w ich pewnym <<aczkolwiek dość szerokim>> podzbiorze.)

Funkcje replikacji wbudowane PostgreSQL

  • Hot Standby/Streaming Replication (kopia w trybie pełnej gotowości/replikacja przez strumieniowanie) jest dostępny od wersji PostgreSQL 9.0 i zapewnia asynchroniczną replikację na poziomie binarnym do jednej lub więcej instancji/serwerów ’standby’. Serwer/instancja 'standby’ może również stać się ’hot standby’ czyli może być wykorzystywana jako baza danych tylko do odczytu. To najszybszy rodzaj replikacji dostępny jako dane/dziennik WAL wysyłany natychmiast.
  • Warm Standby/Log Shipping (kopia w trybie czuwania/replikacja przez przesyłanie logów) jest rozwiązaniem HA (ang. High Availability — wysoka dostępność), która powiela klaster bazy danych do archiwum lub serwera zapasowego(można nim szybko zastąpić Master ale nie jest dostępny dla zapytań). Narzut jest bardzo mały i jest łatwy do skonfigurowania. Jest to jest proste rozwiązanie i odpowiednie, jeśli wymagane jest posiadanie ciągłej kopi zapasowej i krótki czas odtworzenia po awarii.

Porównanie wybranych mechanizów replikacji i równoważenia obciżenia dla PostgreSQL

ProgramLicencjaDojrzałośćMetoda ReplikacjiSynchronicznośćPula połączeńRównoważenie obciążeniaPartycjonowanie zapytań
PgClusterBSDNierozwijaneMaster-MasterSynchroniczneNieTakNie
Pg_pool-IBSDStabilnaStatement-Based MiddlewareSynchroniczneTakTakNie
Pg_pool-IIBSDStabilnaStatement-Based MiddlewareSynchroniczneTakTakTak
Slony-IBSDStabilnaMaster-SlaveAsynchroniczneNieNieNie
BucardoBSDStabilna2*Master, Master-SlaveAsynchroniczneNieNieNie
Londiste BSDStabilnaMaster-SlaveAsynchroniczneNieNieNie
MammothBSDNierozwijaneMaster-SlaveAsynchroniczneNieNieNie
RubyrepMITNierozwijaneMaster-Master, Master-SlaveAsynchroniczneNieNieNie

Rozwiązania Gridowe/Klastrowe

Alternatywą dla mechanizmów replikacji są odgałęzienia PostgreSQL przystosowane do pracy jako klaster — czyli do współpracy instancji zainstalowanych na kilku maszynach dla zwiększenia niezawodności i/lub wydajności. Przykładami takich systemów są:

  • Postgres-R — niestety, nierozwijany od 2011-01-23, pozostawiony w fazie eksperymentalnej, dostępy jako kod źródłowy lub łata na kod PostgreSQL
  • Postgres-XC (dokumentacja na github, wiki PostgreSQL) — dostępne wersje stabilne 1.0, 1.1, 1.2 więcj na temat Postgre-XC w tym poście. Projekt bardzo ciekawy ale trudno przewidzieć czy będzie dalej rozwijany, a jesli tak to na jakiej licencji i pod jaka nazwa (ostatnio przez jakis czas był rozwijany jako postgres-XL)

Linki do zasobów związane z replikacją PostgreSQL

Dodaj komentarz