Replikace v databázovém systému PostgreSQL je proces, při kterém se data automaticky kopírují z jednoho serveru (tzv. primárního nebo master serveru) na jeden nebo více dalších serverů (tzv. sekundárních nebo slave serverů). Tento mechanismus je klíčový pro zajištění vysoké dostupnosti, zálohy dat a rozložení čtenářské zátěže mezi servery. PostgreSQL podporuje několik metod replikace, včetně logické replikace a streamové replikace.
Základní kroky nastavení streamové replikace
Streamová replikace v PostgreSQL posílá změny (WAL - Write-Ahead Logging) z primárního serveru na sekundární server v reálném čase. Pro její nastavení je třeba provést několik kroků:
1. Příprava primárního serveru
-
Konfigurace PostgreSQL.conf: Otevřete konfigurační soubor postgresql.conf
na primárním serveru a nastavte:
wal_level
na replica
nebo logical
.
max_wal_senders
na počet sekundárních serverů plus několik pro zálohování a další účely.
wal_keep_segments
na hodnotu, která určuje, kolik WAL souborů si systém má ponechat pro potřeby replikace.
archive_mode
na on
a archive_command
na příkaz pro archivaci WAL souborů (pokud je třeba WAL archivaci).
-
Konfigurace pg_hba.conf: Do souboru pg_hba.conf
na primárním serveru přidejte pravidla, která umožní sekundárním serverům připojit se pro replikaci. Pravidlo může vypadat například takto:
host replication all sekundarni_server_ip/32 md5
2. Inicializace sekundárního serveru
-
Před spuštěním sekundárního serveru je třeba na něm inicializovat datový adresář pomocí nástroje pg_basebackup
spuštěného na primárním serveru. Příkaz může vypadat takto:
pg_basebackup -h primarni_server_ip -D /var/lib/postgresql/data -U replikace_uzivatel -P -v -X stream
Konfigurace sekundárního serveru: Na sekundárním serveru vytvořte soubor standby.signal
v hlavním datovém adresáři, který signalizuje, že má server fungovat v režimu replikace. Nastavte také primary_conninfo
v souboru postgresql.auto.conf
nebo recovery.conf
(závisí na verzi PostgreSQL), kde uvedete údaje pro připojení k primárnímu serveru, například:
primary_conninfo = 'host=primarni_server_ip port=5432 user=replikace_uzivatel password=heslo'
Spuštění a monitoring replikace
- Po konfiguraci obou serverů spusťte sekundární server. Replikace by měla začít automaticky.
- Monitorování stavu replikace lze provádět pomocí příkazů
psql
na primárním serveru, například příkazem select * from pg_stat_replication;
.
Nastavení replikace v PostgreSQL vyžaduje pečlivou přípravu a konfiguraci obou, primárního a sekundárního serveru. Důležité je dbát na správné nastavení konfiguračních souborů a zabezpečení komunikace mezi servery. Po úspěšném nastavení replikace získáte systém, který je odolnější proti výpadkům a poskytuje lepší dostupnost dat.