PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Novità di PgBouncer 1.6

PgBouncer è un pool di connessioni leggero per PostgreSQL.

PgBouncer 1.6 è stato annunciato il 1° agosto 2015. In questo post del blog parleremo dei principali nuovi miglioramenti di PgBouncer.

Principali novità di PgBouncer

Carica hash password utente dal database postgres

PgBouncer ora consente di caricare la password dell'utente dal database con due parametri di configurazione che sono utente_auth e auth_query .

  • utente_auth
    Se auth_user è impostato, qualsiasi utente non specificato in auth_file verrà interrogato da pg_shadow nel database utilizzando auth_user. La password di auth_user sarà presa da auth_file. Questo parametro può essere impostato anche per database.

  • auth_query
    Questo parametro ci consente di scrivere una query SQL per caricare la password dell'utente dal database. Funziona sotto auth_user.Vedi la query predefinita di seguito:

    SELECT usename, passwd FROM pg_shadow WHERE usename=$1

La modalità pool può essere configurata sia per database che per utente

Con questa funzionalità, indipendentemente dalla modalità di pooling principale, i client possono ora connettersi a database diversi con una delle 3 modalità di pooling descritte di seguito. Questo vale anche per gli utenti. Ad esempio, se la modalità di pooling è il pool di sessioni, è possibile configurare un utente specifico per utilizzare il pool di transazioni. Questo ci offre flessibilità a livello di database e utente per applicare opzioni di pooling più appropriate.

PgBouncer offre 3 modalità di pool di connessioni:

  • Collegamento di sessioni
    Durante la durata di una connessione client, una connessione server esistente viene assegnata al client e dopo che il client si è disconnesso, la connessione server assegnata viene riposta nel pool di connessioni.
  • Raccolta di transazioni
    In questa modalità, una connessione al server non viene assegnata a un client connesso immediatamente, ma solo durante una transazione. Non appena la transazione è terminata, la connessione viene rimessa nel pool.
  • Raccolta di dichiarazioni
    Questo è simile al pool di transazioni, ma è più aggressivo. Un back-end viene assegnato ogni volta che viene emessa una query a istruzione singola. Al termine dell'istruzione, la connessione viene rimessa in pool.

Limiti di connessione per database e per utente:max_db_connections e max_user_connections

Con questa funzione, ora possiamo controllare anche i limiti di connessione per database/livello utente con i due nuovi parametri, che sono max_db_connections e max_user_connections .

  • max_db_connections
    Questo parametro non consente più connessioni specificate per database (indipendentemente dal pool, ad esempio utente).
    Il valore predefinito di questo parametro è illimitato.
  • max_user_connections
    Questo parametro non consente più connessioni specificate per utente (indipendentemente dal pool, ad esempio utente).

Aggiungi comandi DISABLE/ENABLE per impedire nuove connessioni

Con questa funzione PgBouncer ha ABILITA/DISABILITA db; comandi per impedire nuove connessioni.

  • DISATTIVA db;
    Questo comando rifiuta tutte le nuove connessioni client sul database specificato.
  • ABILITA db;
    Questo comando consente nuove connessioni client dopo una precedente DISABILITA comando.

Nuovo backend DNS preferito:c-ares

c-ares è l'unico backend DNS che supporta tutte le funzionalità interessanti:/etc/hosts con aggiornamento, ricerca SOA, risposte di grandi dimensioni (tramite TCP/EDNS+UDP), IPv6. Ora è il backend preferito e probabilmente sarà l' unico backend in  futuro.

I file di configurazione hanno la direttiva "%include FILENAME" per consentire la divisione della configurazione in più file

Con questa funzione, PgBouncer supporta l'inclusione di file di configurazione all'interno di altri file di configurazione.

In altre parole, il file di configurazione di PgBouncer può contenere direttive include, che specificano un altro file di configurazione da leggere ed elaborare. Ciò consente di dividere un file di configurazione di grandi dimensioni in file più piccoli e più gestibili. Le direttive include hanno il seguente aspetto:

%include filename

Se il nome del file non è un percorso assoluto, viene considerato relativo alla directory di lavoro corrente.

Ci sono più funzionalità rilasciate in questa versione. Puoi visitare la pagina del registro delle modifiche di PgBouncer o controllare l'elenco di seguito per gli altri miglioramenti:

  • Mostra remote_pid in MOSTRA CLIENT/SERVER. Disponibile per client che si connettono su socket unix e server socket sia TCP che Unix. In caso di tcp-server, il pid viene prelevato dalla chiave di annullamento.
  • Aggiungi un parametro di configurazione separato (dns_nxdomain_ttl) per controllare la cache DNS negativa.
  • Aggiungi l'indirizzo IP e la porta dell'host client a nome_applicazione. Ciò è abilitato da un parametro di configurazione nome_applicazione_add_host che per impostazione predefinita è "off".

Cos'è PgBouncer?

PgBouncer è un'utilità per la gestione delle connessioni client al database PostgreSQL. In poche parole, mantiene un pool di connessioni al server PostgreSQL e riutilizza quelle connessioni esistenti. Sebbene ciò possa essere utile per ridurre il sovraccarico di connessione del client, consente anche di limitare il numero massimo di connessioni aperte al server di database. Può anche essere utilizzato per modellare il traffico, ad esempio reindirizzando le connessioni a uno o più database su server di database diversi. Oltre a questi, PgBouncer può essere utilizzato per la gestione della sicurezza a livello di utente e anche a livello di database.

Guarda il diagramma sottostante che illustra l'architettura di PgBouncer in modo più visivo.

In questo particolare esempio, le applicazioni client sono connesse a istanze PgBouncer separate dove sarebbero invece connesse direttamente ai server di database PostgreSQL. I server di database "DB Server 1" e "DB Server 2" possono essere istanze PostgreSQL indipendenti o possono far parte di un cluster con ruoli diversi (ad esempio, master/replica o write-master/backup-master, ecc.).

Ogni istanza di PgBouncer mantiene un pool di connessioni con un numero di connessioni aperte ai server PostgreSQL. Come si può vedere dall'esempio, PgBouncers consente di creare pool con connessioni a database diversi e persino connessioni a server di database diversi.

Per ulteriori informazioni

Puoi visitare il sito Web principale di PgBouncer: http://pgbouncer.github.io/

Hanno una bella pagina delle domande frequenti: http://pgbouncer.github.io/faq.html

Puoi dare un'occhiata al repository Github del progetto: http://github.com/pgbouncer/pgbouncer