sql >> Databáze >  >> RDS >> PostgreSQL

Co je nového v PgBouncer 1.6

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


  1. Dvě zvláštnosti rozdělení

  2. Běžné úkoly Postgres na CentOS 7

  3. V odkazované tabulce nejsou žádné primární nebo kandidátské klíče, které by odpovídaly seznamu odkazujících sloupců v cizím klíči

  4. Odebrat odsazení při odesílání výsledků dotazu v e-mailu ze serveru SQL (T-SQL)