PgBouncer je odlehčený fond připojení pro PostgreSQL.
PgBouncer 1.6 byl oznámen 1. srpna 2015. V tomto příspěvku na blogu budeme hovořit o hlavních nových vylepšeních v PgBouncer.
Hlavní nové funkce PgBouncer
Načíst hash hesla uživatele z databáze postgres
PgBouncer nyní umožňuje načíst heslo uživatele z databáze se dvěma konfiguračními parametry, které jsou auth_user a auth_query .
- auth_user
Pokud je nastaveno auth_user, každý uživatel nezadaný v auth_file bude dotazován z pg_shadow v databázi pomocí auth_user. Heslo Auth_user bude převzato ze souboru auth_file. Tento parametr lze také nastavit pro každou databázi. - auth_query
Tento parametr nám umožňuje napsat SQL dotaz pro načtení hesla uživatele z databáze. Běží pod auth_user. Viz výchozí dotaz níže:SELECT usename, passwd FROM pg_shadow WHERE usename=$1
Režim sdružování lze konfigurovat jak na databázi, tak na uživatele
Díky této funkci, nezávisle na hlavním režimu sdružování, se nyní klienti mohou připojit k různým databázím pomocí jednoho ze 3 režimů sdružování popsaných níže. To platí i pro uživatele. Pokud je například režim sdružování sdružování relací, lze pro použití sdružování transakcí nakonfigurovat konkrétního uživatele. To nám dává flexibilitu na úrovni databáze a uživatele, abychom mohli použít vhodnější možnosti sdružování.
PgBouncer nabízí 3 režimy sdružování připojení:
- Sdružování relací
Během doby trvání klientského připojení je klientovi přiřazeno existující připojení k serveru a po odpojení klienta je přiřazené připojení k serveru vráceno zpět do fondu připojení. - Sdružování transakcí
V tomto režimu není připojení k serveru přiřazeno připojenému klientovi okamžitě, ale až během transakce. Jakmile transakce skončí, připojení se vrátí zpět do fondu. - Sdružování výpisů
Je to podobné sdružování transakcí, ale je agresivnější. Při každém zadání dotazu s jedním příkazem je přiřazen backend. Po dokončení příkazu se připojení vrátí zpět do fondu.
Limity připojení na databázi a uživatele:max_db_connections a max_user_connections
Pomocí této funkce nyní můžeme ovládat také limity připojení na úrovni databáze/uživatele pomocí dvou nových parametrů, kterými jsou max_db_connections a max_user_connections .
- max_db_connections
Tento parametr nepovoluje více než specifikovaná připojení na databázi (bez ohledu na fond – tj. uživatele).
Výchozí hodnota tohoto parametru je neomezená. - max_user_connections
Tento parametr nepovoluje více než specifikovaná připojení na uživatele (bez ohledu na fond – tj. uživatele).
Přidejte příkazy DISABLE/ENABLE, abyste zabránili novým připojením
S touto funkcí má PgBouncer ENABLE/DISABLE db; příkazy, které zabrání novým připojením.
- ZAKÁZAT db;
Tento příkaz odmítne všechna nová připojení klientů k dané databázi. - ENABLE db;
Tento příkaz umožňuje nová připojení klientů po předchozím ZAKÁZAT příkaz.
Nový preferovaný server DNS:c-ares
c-ares je jediný DNS backend, který podporuje všechny zajímavé funkce:/etc/hosts s aktualizací, SOA vyhledávání, velké odpovědi (přes TCP/EDNS+UDP), IPv6. Je to nyní preferovaný backend a pravděpodobně bude jediným backend v budoucnosti.
Konfigurační soubory mají direktivu „%include FILENAME“, která umožňuje rozdělení konfigurace do několika souborů
Díky této funkci má PgBouncer podporu pro zahrnutí konfiguračních souborů do jiných konfiguračních souborů.
Jinými slovy, konfigurační soubor PgBouncer může obsahovat direktivy include, které určují další konfigurační soubor ke čtení a zpracování. To umožňuje rozdělit velký konfigurační soubor na menší a lépe spravovatelné soubory. Direktivy include vypadají takto:
%include filename
Pokud název souboru není absolutní cestou, je považován za relativní k aktuálnímu pracovnímu adresáři.
V této verzi je vydáno více funkcí. Můžete navštívit stránku protokolu změn PgBouncer nebo se podívat na seznam níže, kde najdete další vylepšení:
- Zobrazit remote_pid v ZOBRAZIT KLIENTY/SERVERY. Dostupné pro klienty, kteří se připojují přes unixové sokety a tcp i unixový soketový server. V případě tcp-serveru se pid přebírá z klíče cancel.
- Přidejte samostatný konfigurační parametr (dns_nxdomain_ttl) pro řízení negativního ukládání DNS do mezipaměti.
- Do pole název_aplikace přidejte IP adresu a port hostitele klienta. To je umožněno konfiguračním parametrem application_name_add_host, který je ve výchozím nastavení vypnutý.
Co je PgBouncer?
PgBouncer je nástroj pro správu klientských připojení k databázi PostgreSQL. Stručně řečeno, udržuje fond připojení k serveru PostgreSQL a znovu používá tato existující připojení. I když to může být užitečné pro snížení režie připojení klienta, umožňuje to také omezit maximální počet otevřených připojení k databázovému serveru. Může být také použit pro tvarování provozu, jako je přesměrování připojení k jedné nebo více databázím na různé databázové servery. Kromě toho lze PgBouncer použít pro správu zabezpečení na úrovni uživatele a dokonce i na úrovni databáze.
Podívejte se na níže uvedený diagram, který znázorňuje architekturu PgBouncer více vizuálním způsobem.
V tomto konkrétním příkladu jsou klientské aplikace připojeny k samostatným instancím PgBouncer, kde by byly místo toho připojeny přímo k databázovým serverům PostgreSQL. Databázové servery „DB Server 1“ a „DB Server 2“ mohou být nezávislé instance PostgreSQL nebo mohou být součástí clusteru s různými rolemi (např. master/replika nebo write-master/backup-master atd.).
Každá instance PgBouncer udržuje fond připojení s řadou otevřených připojení k serverům PostgreSQL. Jak je vidět z příkladu, PgBouncers umožňuje vytvářet pooly s připojeními k různým databázím a dokonce i připojení k různým databázovým serverům.
Další informace
Můžete navštívit hlavní web PgBouncer: http://pgbouncer.github.io/
Mají pěknou stránku s častými dotazy: http://pgbouncer.github.io/faq.html
Můžete se podívat do úložiště Github projektu: http://github.com/pgbouncer/pgbouncer