PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Co nowego w PgBouncerze 1.6

PgBouncer to lekki pooler połączeń dla PostgreSQL.

PgBouncer 1.6 został ogłoszony 1 sierpnia 2015 r. W tym poście na blogu omówimy główne nowe ulepszenia w PgBouncer.

Główne nowe funkcje PgBouncera

Załaduj skrót hasła użytkownika z bazy danych postgres

PgBouncer umożliwia teraz ładowanie hasła użytkownika z bazy danych z dwoma parametrami konfiguracyjnymi, którymi są auth_user i auth_query .

  • auth_user
    Jeśli ustawiono auth_user, każdy użytkownik niewymieniony w auth_file będzie wysyłany zapytania z pg_shadow w bazie danych przy użyciu auth_user. Hasło Auth_user zostanie pobrane z auth_file. Ten parametr można również ustawić dla bazy danych.

  • auth_query
    Ten parametr pozwala nam na napisanie zapytania SQL w celu załadowania hasła użytkownika z bazy danych. Działa pod auth_user. Zobacz domyślne zapytanie poniżej:

    SELECT usename, passwd FROM pg_shadow WHERE usename=$1

Tryb łączenia można skonfigurować zarówno dla bazy danych, jak i dla użytkownika

Dzięki tej funkcji, niezależnie od głównego trybu puli, klienci mogą teraz łączyć się z różnymi bazami danych za pomocą jednego z 3 trybów puli opisanych poniżej. Dotyczy to również użytkowników. Na przykład, jeśli tryb puli to pula sesji, określony użytkownik może być skonfigurowany do korzystania z puli transakcji. Daje nam to elastyczność na poziomie bazy danych i na poziomie użytkownika, aby zastosować bardziej odpowiednie opcje puli.

PgBouncer zapewnia 3 tryby puli połączeń:

  • Łączenie sesji
    W okresie istnienia połączenia klienta, istniejące połączenie z serwerem jest przypisywane do klienta, a po rozłączeniu się klienta, przypisane połączenie z serwerem jest umieszczane z powrotem w puli połączeń.
  • Łączenie transakcji
    W tym trybie połączenie z serwerem nie jest przypisywane do podłączonego klienta od razu, a jedynie w trakcie transakcji. Jak tylko transakcja się zakończy, połączenie jest przywracane do puli.
  • Łączenie wyciągów
    Jest to podobne do łączenia transakcji, ale jest bardziej agresywne. Backend jest przypisywany za każdym razem, gdy zostanie wysłane zapytanie z pojedynczą instrukcją. Kiedy wypowiedź się kończy, połączenie jest przywracane do puli.

Limity połączeń na bazę danych i na użytkownika:max_db_connections i max_user_connections

Dzięki tej funkcji możemy teraz kontrolować również limity połączeń na poziom bazy danych/użytkownika za pomocą dwóch nowych parametrów, którymi są max_db_connections i max_user_connections .

  • max_db_connections
    Ten parametr nie zezwala na więcej niż określone połączenia na bazę danych (niezależnie od puli – tj. użytkownika).
    Domyślna wartość tego parametru jest nieograniczona.
  • max_user_connections
    Ten parametr nie zezwala na więcej niż określone połączenia na użytkownika (niezależnie od puli – tj. użytkownika).

Dodaj polecenia DISABLE/ENABLE, aby zapobiec nowym połączeniom

Dzięki tej funkcji PgBouncer ma ENABLE/DISABLE db; komendy zapobiegające nowym połączeniom.

  • WYŁĄCZ db;
    To polecenie odrzuca wszystkie nowe połączenia klientów w podanej bazie danych.
  • WŁĄCZ db;
    To polecenie umożliwia nowe połączenia klientów po poprzednim WYŁĄCZ polecenie.

Nowy preferowany backend DNS:c-ares

c-are jest jedynym backendem DNS, który obsługuje wszystkie interesujące funkcje:/etc/hosts z odświeżaniem, wyszukiwaniem SOA, dużymi odpowiedziami (przez TCP/EDNS+UDP), IPv6. Jest to obecnie preferowany backend i prawdopodobnie będzie jedyny backend w przyszłości.

Pliki konfiguracyjne mają dyrektywę „%include FILENAME”, aby umożliwić podział konfiguracji na kilka plików

Dzięki tej funkcji PgBouncer obsługuje dołączanie plików konfiguracyjnych do innych plików konfiguracyjnych.

Innymi słowy, plik konfiguracyjny PgBouncer może zawierać dyrektywy, które określają inny plik konfiguracyjny do odczytu i przetwarzania. Pozwala to podzielić duży plik konfiguracyjny na mniejsze i łatwiejsze w zarządzaniu. Dyrektywy include wyglądają tak:

%include filename

Jeśli nazwa pliku nie jest ścieżką bezwzględną, jest traktowana jako względna do bieżącego katalogu roboczego.

W tej wersji dostępnych jest więcej funkcji. Możesz odwiedzić stronę dziennika zmian PgBouncer lub sprawdzić poniższą listę, aby znaleźć inne ulepszenia:

  • Pokaż zdalny_pid w POKAŻ KLIENTÓW/SERWERY. Dostępne dla klientów, którzy łączą się przez gniazda unix i zarówno tcp, jak i serwer gniazd unix. W przypadku serwera tcp-server pid jest pobierany z klucza anulowania.
  • Dodaj oddzielny parametr konfiguracyjny (dns_nxdomain_ttl) do kontrolowania negatywnego buforowania DNS.
  • Dodaj adres IP hosta klienta i port do nazwa_aplikacji. Jest to włączone przez parametr konfiguracyjny nazwa_aplikacji_add_host, który domyślnie jest wyłączony.

Co to jest PgBouncer?

PgBouncer to narzędzie do zarządzania połączeniami klientów z bazą danych PostgreSQL. Krótko mówiąc, utrzymuje pulę połączeń z serwerem PostgreSQL i ponownie wykorzystuje istniejące połączenia. Chociaż może to być przydatne do zmniejszenia obciążenia połączenia klienta, umożliwia również ograniczenie maksymalnej liczby otwartych połączeń z serwerem bazy danych. Może być również używany do kształtowania ruchu, takiego jak przekierowywanie połączeń do jednej lub więcej baz danych na różne serwery baz danych. Oprócz tego PgBouncer może być używany do zarządzania bezpieczeństwem na poziomie użytkownika, a nawet bazy danych.

Zobacz poniższy diagram, który przedstawia architekturę PgBouncer w bardziej wizualny sposób.

W tym konkretnym przykładzie aplikacje klienckie są połączone z oddzielnymi instancjami PgBouncer, gdzie zamiast tego byłyby bezpośrednio połączone z serwerami baz danych PostgreSQL. Serwery baz danych „DB Server 1” i „DB Server 2” mogą być niezależnymi instancjami PostgreSQL lub mogą być częścią klastra o różnych rolach (np. master/replica lub write-master/backup-master itp.).

Każda instancja PgBouncer utrzymuje pulę połączeń z pewną liczbą otwartych połączeń z serwerami PostgreSQL. Jak widać na przykładzie, PgBouncers umożliwia tworzenie pul z połączeniami z różnymi bazami danych, a nawet połączeniami z różnymi serwerami baz danych.

Więcej informacji

Możesz odwiedzić główną stronę internetową PgBouncer: http://pgbouncer.github.io/

Mają fajną stronę z najczęściej zadawanymi pytaniami: http://pgbouncer.github.io/faq.html

Możesz zajrzeć do repozytorium projektu na Github: http://github.com/pgbouncer/pgbouncer


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ComboBox.ValueMember i DisplayMember

  2. Napraw „BŁĄD:brak wpisu klauzuli FROM dla tabeli” w PostgreSQL podczas korzystania z UNION, EXCEPT lub INTERSECT

  3. Normalizacja Unicode w PostgreSQL 13

  4. Jak ocenić wyrażenie w instrukcji select w Postgres

  5. Błędy w ewolucjach na Heroku