it-swarm-eu.dev

Automatizace převzetí služeb při selhání v PostgreSQL 9.1

Jak jeden nastaví dva identické servery pro automatické převzetí služeb při selhání v PostgreSQL 9.1.

OS

Centa 5
PostgreSQL 9.1 kompilován ze zdroje
Uživatelský účet postgres existuje na obou počítačích a má ssh heslo bez klíče pro připojení k oběma počítačům.

Moje aktuální nastavení:

Konfigurace hlavního serveru:

postgresql.conf:

listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16    
wal_keep_segments = 8 
archive_mode = on    
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'  

pg_hba.conf:

 Host  replication   all   10.0.66.1/32      trust
 Host  replication   all   10.0.66.2/32      trust

Standby Server

postgresql.conf a pg_hba.conf jsou totožné s tím, co je nakonfigurováno na hlavním serveru.

recovery.conf:

 standby_mode = 'on'
 primary_conninfo = 'Host=10.0.66.1'
 trigger_file = '/opt/pgsql91/data/trigger.txt'

Díky hzRoot nyní chápu, jak přepnout server z pohotovostního režimu na master.

Pomocí následujících příkazů mohu synchronizovat nového slave s novým masterem a poté získat zálohu a spuštění replikace.

Na novém masteru (10.0.66.2)

  1. su - postgres
  2. dotkněte se trigger.txt v/opt/pgsql91/data /
  3. recovery.conf se stane recovery.done
  4. psql -c "; SELECT pg_start_backup ('backup', true)";
  5. rsync -a -v -e ssh/opt/pgsql91/data/10.0.66.1:/opt/pgsql91/data/ - vyloučit postmaster.pid
  6. psql -c "; SELECT pg_stop_backup ()";

Na novém slave (10.0.66.1)

  1. vytvořte soubor recovery.conf: cp recovery.done na recovery.conf
  2. vi recovery.conf změna ip adresa: primární_conninfo = 'Host = 10.0.66.2'
  3. začít postgresql

Takže moje otázky jsou nyní:

  1. Je to správný způsob přepínání rolí?
  2. Automatizoval tento proces někdo, pokud ano, co jste udělali?
  3. Pokud je povolena synchronní replikace, všiml jsem si, že nový hlavní server nebude provádět žádné transakce, protože čeká na odpověď slave. Neexistuje však žádný otrok, protože druhý server, starý pán, je vypnutý. Je to správné nebo musím dočasně zakázat synchronní replikaci, když je nový slave vypnutý?
18
Craig Efrein

Podívejte se repmrg :

repmgr je sada nástrojů s otevřeným zdrojovým kódem, která pomáhá správcům databází a správcům systému spravovat klastr databází PostgreSQL.

Využitím funkce Hot Standby zavedené v PostgreSQL 9 repmgr výrazně zjednodušuje proces nastavení a správy databáze s požadavky na vysokou dostupnost a škálovatelnost.

repmgr zjednodušuje správu a každodenní správu, zvyšuje produktivitu a snižuje celkové náklady clusteru PostgreSQL:

  • sledování procesu replikace; umožňuje DBA vydávat vysoké
  • operace dostupnosti, jako jsou přepínání a výpadky.

To dělá dvě věci:

  1. repmgr: příkazový program, který provádí úkoly ve vašem klastru a poté končí
  2. repmgrd: správa a monitorování démona, který sleduje klastr a může automatizovat vzdálené akce.

Pro automatické převzetí služeb při selhání provede repmgrd trik a není SPOF ve vaší síti, jako pgPool. Je však stále důležité monitorovat všechny deamony a po jejich selhání je přivést zpět.

Verze 2.0 se chystá na trh, včetně RPM.

8
Frank Heikens

do souboru recovery.conf byste měli přidat řádek, který říká postgresu k převzetí služeb při selhání z hlavního na otrok. měli byste přidat

trigger_file = '/any/file/to/trigger'

když tento soubor vytvoříte na dané cestě. uzly se změní. (soubor neobsahuje nic, je to jen spouštěč)

další informace najdete na streaming replication

na druhou stranu, možná bude možné, aby byl vytvořen automaticky pomocí některých triků, ale použití monitorovacích nástrojů a selhání nad manuálem bude lepší.

4
sftsz

Uvažoval už někdo o použití pgpool-II?

http://pgpool.projects.postgresql.org/contrib_docs/simple_sr_setting/index.html

Nastavuji replikaci pro PostgreSQL. Zdá se, že složitá část se stane, když se starý pán vrátí.

Z toho, co jsem četl, se zdá, že pgpool vypadá, že dokáže většinu z toho automatizovat. Nejsem si však jistý, zda využívá funkce replikace, které jsou již obsaženy v PostgreSQL 9.1.

0
Paulo SantAnna