GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nakonfigurovat replikaci streamování PostgreSQL 12 v CentOS 8

PostgreSQL databáze podporuje několik replikačních řešení pro vytváření vysoce dostupných, škálovatelných aplikací odolných proti chybám, z nichž jedním je Write-Ahead Log (WAL ) Lodní doprava. Toto řešení umožňuje implementaci záložního serveru pomocí odesílání protokolů na základě souborů nebo streamingové replikace, nebo kde je to možné, kombinace obou přístupů.

Při streamování replikace je záložní (replikační slave) databázový server nakonfigurován pro připojení k hlavnímu/primárnímu serveru, který streamuje WAL záznamy do pohotovostního režimu, jakmile jsou generovány, bez čekání na WAL soubor k vyplnění.

Ve výchozím nastavení je streamingová replikace asynchronní, kdy jsou data zapsána na rezervní server(y) poté, co byla transakce potvrzena na primárním serveru. To znamená, že mezi potvrzením transakce na hlavním serveru a zobrazením změn na záložním serveru je malé zpoždění. Jednou nevýhodou tohoto přístupu je, že v případě zhroucení hlavního serveru nemusí být žádné nepotvrzené transakce replikovány, což může způsobit ztrátu dat.

Tato příručka ukazuje, jak nastavit Postgresql 12 master-standby streaming replikace na CentOS 8 . Použijeme „replikační sloty ” pro pohotovostní režim jako řešení, které zabrání tomu, aby hlavní server recykloval staré WAL segmenty, než je přijme pohotovostní režim.

Všimněte si, že ve srovnání s jinými metodami si replikační sloty uchovávají pouze tolik segmentů, o kterých je známo, že jsou potřeba.

Testovací prostředí:

Tato příručka předpokládá, že jste se ke svému hlavnímu a záložnímu databázovému serveru připojili jako root prostřednictvím SSH (použijte Sudo příkaz tam, kde je to nutné, pokud jste připojeni jako normální uživatel s právy správce):

Postgresql master database server: 		10.20.20.9
Postgresql standby database server:		10.20.20.8

Oba databázové servery musí mít Postgresql 12 nainstalován, jinak viz:Jak nainstalovat PostgreSQL a pgAdmin v CentOS 8.

Poznámka :PostgreSQL 12 přichází s velkými změnami v implementaci a konfiguraci replikace, jako je nahrazení recovery.conf a konverzi recovery.conf parametry na normální konfigurační parametry PostgreSQL, což výrazně usnadňuje konfiguraci replikace clusteru.

Krok 1:Konfigurace hlavního/primárního databázového serveru PostgreSQL

1. Na hlavním serveru se přepněte na systémový účet postgres a nakonfigurujte IP adresy, na kterých bude hlavní server naslouchat připojení od klientů.

V tomto případě použijeme * znamená vše.

# su - postgres
$ psql -c "ALTER SYSTEM SET listen_addresses TO '*';"

ALTER SYSTEM SET Příkaz SQL je výkonná funkce pro změnu konfiguračních parametrů serveru přímo pomocí SQL dotazu. Konfigurace jsou uloženy v postgresql.conf.auto soubor umístěný v kořenovém adresáři datové složky (např. /var/lib/pgsql/12/data/ ) a číst dodatky k těm, které jsou uloženy v postgresql.conf . Ale konfigurace v prvním mají přednost před těmi v pozdějších a dalších souvisejících souborech.

Konfigurace IP adres na PostgreSQL Master

2. Poté pomocí createuser vytvořte replikační roli, která se bude používat pro připojení z pohotovostního serveru k hlavnímu serveru. program. V následujícím příkazu -P flag vyzve k zadání hesla pro novou roli a -e opakuje příkazy, které createuser generuje a odesílá na databázový server.

# su – postgres
$ createuser --replication -P -e replicator
$ exit

Vytvořit uživatele replikace na Pgmaster

3. Poté zadejte následující záznam na konec souboru /var/lib/pgsql/12/data/pg_hba.conf konfigurační soubor ověřování klienta s polem databáze nastaveným na replikaci, jak je znázorněno na snímku obrazovky.

host    replication     replicator      10.20.20.8/24     md5

Konfigurace ověřování replikace

4. Nyní restartujte Postgres12 pomocí následujícího příkazu systemctl aplikujte změny.

# systemctl restart postgresql-12.service

5. Dále, pokud máte firewall Pokud služba běží, musíte do konfigurace brány firewall přidat službu Postgresql, aby bylo možné povolit požadavky z pohotovostního serveru na hlavní server.

# firewall-cmd --add-service=postgresql --permanent
# firewall-cmd --reload

Krok 2:Vytvoření základní zálohy pro spuštění pohotovostního serveru

6. Dále musíte vytvořit základní zálohu hlavního serveru z pohotovostního serveru; to pomáhá zavést pohotovostní server. Musíte zastavit službu postgresql 12 na pohotovostním serveru, přepnout na uživatelský účet postgres, zálohovat datový adresář (/var/lib/pgsql/12/data/ ), pak před pořízením základní zálohy smažte vše, co je pod ním, jak je znázorněno.

# systemctl stop postgresql-12.service
# su - postgres
$ cp -R /var/lib/pgsql/12/data /var/lib/pgsql/12/data_orig
$ rm -rf /var/lib/pgsql/12/data/*

7. Poté použijte pg_basebackup nástroj k převzetí základní zálohy se správným vlastnictvím (uživatel databázového systému, tj. Postgres , v rámci Postgres uživatelský účet) a se správnými oprávněními.

V následujícím příkazu možnost:

  • -h – určuje hostitele, který je hlavním serverem.
  • -D – určuje datový adresář.
  • -U – určuje uživatele připojení.
  • -P – umožňuje hlášení o průběhu.
  • -v – umožňuje podrobný režim.
  • -R – umožňuje vytvoření konfigurace obnovy:Vytvoří standby.signal soubor a připojte nastavení připojení k postgresql.auto.conf v adresáři dat.
  • -X – používá se k zahrnutí požadovaných souborů protokolu pro zápis (soubory WAL) do zálohy. Hodnota stream znamená streamovat WAL při vytváření zálohy.
  • -C – umožňuje vytvoření replikačního slotu pojmenovaného volbou -S před spuštěním zálohování.
  • -S – určuje název replikačního slotu.
$ pg_basebackup -h 10.20.20.5 -D /var/lib/pgsql/12/data -U replicator -P -v  -R -X stream -C -S pgstandby1
$ exit

Základní záloha hlavního serveru

8. Po dokončení procesu zálohování by měl nový datový adresář na záložním serveru vypadat jako na snímku obrazovky. pohotovostní.signál se vytvoří a nastavení připojení se připojí k postgresql.auto.conf . Jeho obsah můžete vypsat pomocí příkazu ls.

# ls -l /var/lib/pgsql/12/data/

Ověřte Backup Data Directory

Replikační slave zařízení poběží v „Hot Standby ” v případě hot_standby parametr je nastaven na on (výchozí hodnota) v postgresql.conf a je zde pohotovostní.signál soubor přítomný v datovém adresáři.

9. Nyní zpět na hlavním serveru byste měli být schopni vidět replikační slot s názvem pgstandby1 když otevřete pg_replication_slots zobrazit následovně.

# su - postgres
$ psql -c "SELECT * FROM pg_replication_slots;"
$ exit

Vytvořit replikační slot

10. Chcete-li zobrazit nastavení připojení v příloze postgresql.auto.conf použijte příkaz cat.

# cat /var/lib/pgsql/12/data/postgresql.auto.conf

Zobrazit Nastavení připojení

11. Nyní zahajte normální databázové operace na záložním serveru spuštěním služby PostgreSQL následovně.

# systemctl start postgresql-12

Krok 3:Testování replikace streamování PostgreSQL

12. Po úspěšném navázání spojení mezi masterem a pohotovostním režimem se zobrazí WAL proces přijímače na pohotovostním serveru se stavem streamování, můžete to zkontrolovat pomocí pg_stat_wal_receiver zobrazit.

$ psql -c "\x" -c "SELECT * FROM pg_stat_wal_receiver;"

Zkontrolujte WAL Receiver Process

a odpovídající WAL proces odesílatele na hlavním/primárním serveru se stavem streamování a sync_state async, můžete zkontrolovat tento pohled pg_stat_replication pg_stat_replication.

$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"

Zkontrolujte WAL Sender Process v Master

Z výše uvedeného snímku obrazovky je streamovaná replikace asynchronní. V další části si ukážeme, jak volitelně povolit synchronní replikaci.

13. Nyní otestujte, zda replikace funguje správně vytvořením testovací databáze na hlavním serveru a zkontrolujte, zda existuje na záložním serveru.
[master]postgres=# VYTVOŘIT DATABÁZI tecmint;
[standby]postgres=# \l

Testování replikace streamování

Volitelné:Povolení synchronní replikace

14. Synchronní replikace nabízí možnost potvrdit transakci (nebo zapisovat data) do primární databáze a pohotovostního režimu/repliky současně. Pouze potvrzuje, že transakce je úspěšná, když byly všechny změny provedené transakcí přeneseny na jeden nebo více synchronních pohotovostních serverů.

Chcete-li povolit synchronní replikaci, synchronous_commit musí být také nastaveno na on (což je výchozí hodnota, takže není třeba nic měnit) a musíte také nastavit synchronous_standby_names parametr na neprázdnou hodnotu. U tohoto průvodce jej nastavíme na všechny.

$ psql -c "ALTER SYSTEM SET synchronous_standby_names TO  '*';"

Nastavte Sync Standby Names v Master

15. Poté znovu načtěte službu PostgreSQL 12, abyste použili nové změny.

# systemctl reload postgresql-12.service

16. Nyní, když zadáte dotaz na WAL proces odesílatele na primárním serveru ještě jednou, měl by ukazovat stav streamování a sync_state synchronizace .

$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"

Zkontrolujte WAL Sender Process v Master

Dostali jsme se na konec tohoto průvodce. Ukázali jsme, jak nastavit PostgreSQL 12 hlavní pohotovostní replikace datového proudu databáze v CentOS 8 . Také jsme se zabývali tím, jak povolit synchronní replikaci v databázovém clusteru PostgreSQL.

Existuje mnoho použití replikace a vždy si můžete vybrat řešení, které splní vaše IT prostředí a/nebo požadavky specifické pro aplikaci. Další podrobnosti najdete v části Log-Shipping Standby Servers v dokumentaci PostgreSQL 12.

Sharing is Caring…
Sdílet na FacebookuSdílet na TwitteruSdílet na LinkedinSdílet na Redditu
Cent OS
  1. Jak nakonfigurovat server DHCP na CentOS 7 / Ubuntu 18.04 / 16.04 / Debian 9

  2. Jak nainstalovat a nakonfigurovat Postgres 13 na Centos 8

  3. Jak nastavit replikaci MySQL na CentOS

  1. Jak nainstalovat PostgreSQL server na RHEL 8 / CentOS 8

  2. Jak nainstalovat a nakonfigurovat VNC na CentOS 7

  3. Jak nakonfigurovat replikaci MySQL Master-Slave na CentOS 7

  1. Jak nainstalovat a nakonfigurovat server NFS na CentOS 8

  2. Jak nainstalovat PostgreSQL na CentOS 8

  3. Jak nainstalovat a nakonfigurovat VNC na CentOS 8