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

Hvad er nyt i PgBouncer 1.6

PgBouncer er en letvægtsforbindelsespooler til PostgreSQL.

PgBouncer 1.6 blev annonceret den 1. august 2015. I dette blogindlæg vil vi tale om de store nye forbedringer i PgBouncer.

Vigtigste nye funktioner i PgBouncer

Indlæs hash for brugeradgangskode fra postgres database

PgBouncer tillader nu indlæsning af brugerens adgangskode fra databasen med to konfigurationsparametre, som er auth_user og auth_query .

  • auth_user
    Hvis auth_user er indstillet, vil enhver bruger, der ikke er angivet i auth_file, blive forespurgt fra pg_shadow i databasen ved hjælp af auth_user. Auth_users adgangskode vil blive taget fra auth_file. Denne parameter kan også indstilles pr. database.

  • auth_query
    Denne parameter giver os mulighed for at skrive en SQL-forespørgsel for at indlæse brugerens adgangskode fra databasen. Den kører under auth_user. Se standardforespørgslen nedenfor:

    SELECT usename, passwd FROM pg_shadow WHERE usename=$1

Pooling-tilstand kan konfigureres både pr. database og pr. bruger

Med denne funktion, uafhængig af hovedpoolingtilstanden, kan klienter nu oprette forbindelse til forskellige databaser med en af ​​de 3 poolingtilstande beskrevet nedenfor. Dette gælder også for brugere. Hvis f.eks. poolingtilstanden er sessionspooling, kan en specifik bruger konfigureres til at bruge transaktionspooling. Dette giver os fleksibilitet på databaseniveau og brugerniveau til at anvende mere passende poolingmuligheder.

PgBouncer giver 3 forbindelsespooling-tilstande:

  • Session pooling
    I løbet af en klientforbindelses levetid tildeles en eksisterende serverforbindelse til klienten, og efter klienten afbrydes, sættes den tildelte serverforbindelse tilbage til forbindelsespuljen.
  • Transaktionspooling
    I denne tilstand tildeles en serverforbindelse ikke til en tilsluttet klient med det samme, men kun under en transaktion. Så snart transaktionen er overstået, sættes forbindelsen tilbage i puljen.
  • Pulning af erklæringer
    Dette ligner transaktionspooling, men er mere aggressivt. En backend tildeles, når der udstedes en enkelt-sætningsforespørgsel. Når erklæringen er slut, sættes forbindelsen tilbage i poolen.

Grænser pr. database og pr. bruger forbindelse:max_db_connections og max_user_connections

Med denne funktion kan vi nu også kontrollere forbindelsesgrænser pr. database/brugerniveau med de to nye parametre, som er max_db_connections og max_user_connections .

  • max_db_connections
    Denne parameter tillader ikke mere end de angivne forbindelser pr. database (uanset pool – dvs. bruger).
    Standardværdien for denne parameter er ubegrænset.
  • max_user_connections
    Denne parameter tillader ikke mere end de angivne forbindelser pr. bruger (uanset pool – dvs. bruger).

Tilføj DISABLE/ENABLE-kommandoer for at forhindre nye forbindelser

Med denne funktion har PgBouncer AKTIVER/DEAKTIVER db; kommandoer for at forhindre nye forbindelser.

  • DEAKTIVER db;
    Denne kommando afviser alle nye klientforbindelser på den givne database.
  • AKTIVER db;
    Denne kommando tillader nye klientforbindelser efter en tidligere DEAKTIVER kommando.

Ny foretrukken DNS-backend:c-ares

c-ares er den eneste DNS-backend, der understøtter alle interessante funktioner:/etc/hosts med opdatering, SOA-opslag, store svar (via TCP/EDNS+UDP), IPv6. Det er den foretrukne backend nu, og vil sandsynligvis være den eneste backend i  fremtiden.

Konfigurationsfiler har '%include FILENAME'-direktivet for at tillade, at konfigurationen kan opdeles i flere filer

Med denne funktion har PgBouncer understøttelse af inklusion af konfigurationsfiler i andre konfigurationsfiler.

Med andre ord kan PgBouncer-konfigurationsfilen indeholde inkluderede direktiver, som specificerer en anden konfigurationsfil, der skal læses og behandles. Dette gør det muligt at opdele en stor konfigurationsfil til mindre og mere håndterbare filer. Inkluderingsdirektiverne ser således ud:

%include filename

Hvis filnavnet ikke er en absolut sti, tages det i forhold til den aktuelle arbejdsmappe.

Der er flere funktioner frigivet i denne version. Du kan besøge PgBouncer changelog-siden eller tjekke listen nedenfor for de andre forbedringer:

  • Vis remote_pid i SHOW CLIENTS/SERVERS. Tilgængelig for klienter, der forbinder via unix-sockets og både tcp- og unix-socket-server. I tilfælde af tcp-server tages pid'en fra annulleringsnøglen.
  • Tilføj separat konfigurationsparameter (dns_nxdomain_ttl) til styring af negativ dns-cache.
  • Tilføj klientens værts IP-adresse og port til applikationsnavn. Dette aktiveres af en konfigurationsparameter application_name_add_host, som som standard er 'off'.

Hvad er PgBouncer?

PgBouncer er et værktøj til at administrere klientforbindelser til PostgreSQL-databasen. I en nøddeskal vedligeholder den en forbindelsespulje til PostgreSQL-serveren og genbruger de eksisterende forbindelser. Selvom dette kan være nyttigt til at reducere klientforbindelsesomkostningerne, gør det også muligt at begrænse det maksimale antal åbne forbindelser til databaseserveren. Det kan også bruges til trafikformning som at omdirigere forbindelser til en eller flere databaser til forskellige databaseservere. Ud over disse kan PgBouncer bruges til at administrere sikkerhed på bruger- og endda på databaseniveau.

Se diagrammet nedenfor, som afbilder PgBouncer-arkitekturen på en mere visuel måde.

I dette særlige eksempel er klientapplikationer forbundet til separate PgBouncer-instanser, hvor de i stedet ville være forbundet til PostgreSQL-databaseservere direkte. Databaseservere "DB Server 1" og "DB Server 2" kan være uafhængige PostgreSQL-instanser, eller de kan være en del af en klynge med forskellige roller (f.eks. master/replika eller write-master/backup-master osv.).

Hver PgBouncer-instans vedligeholder en forbindelsespulje med et antal åbne forbindelser til PostgreSQL-servere. Som det kan ses af eksemplet, tillader PgBouncers oprettelse af puljer med forbindelser til forskellige databaser og endda forbindelser til forskellige databaseservere.

For mere information

Du kan besøge PgBouncers hovedwebsted: http://pgbouncer.github.io/

De har en fin side med ofte stillede spørgsmål: http://pgbouncer.github.io/faq.html

Du kan tage et kig på projektets Github-lager: http://github.com/pgbouncer/pgbouncer


  1. Skrivning til MySQL-database med pandaer ved hjælp af SQLAlchemy, to_sql

  2. SET operatører i SQL

  3. LD_DEBUG miljøvariablen

  4. Automatisk dataindsamling:Databasefiler og logiske drev i MS SQL Server