sql >> Base de Datos >  >> RDS >> PostgreSQL

Novedades en PgBouncer 1.6

PgBouncer es un agrupador de conexiones ligero para PostgreSQL.

PgBouncer 1.6 se anunció el 1 de agosto de 2015. En esta publicación de blog, hablaremos sobre las principales mejoras nuevas en PgBouncer.

Principales novedades de PgBouncer

Cargar hash de contraseña de usuario desde la base de datos de postgres

PgBouncer ahora permite cargar la contraseña del usuario desde la base de datos con dos parámetros de configuración que son auth_user y auth_query .

  • auth_user
    Si se establece auth_user , cualquier usuario no especificado en auth_file será consultado desde pg_shadow en la base de datos usando auth_user. La contraseña de Auth_user se tomará de auth_file. Este parámetro también se puede establecer por base de datos.

  • auth_query
    Este parámetro nos permite escribir una consulta SQL para cargar la contraseña del usuario desde la base de datos. Se ejecuta bajo auth_user. Vea la consulta predeterminada a continuación:

    SELECT usename, passwd FROM pg_shadow WHERE usename=$1

El modo de agrupación se puede configurar tanto por base de datos como por usuario

Con esta función, independientemente del modo de agrupación principal, los clientes ahora pueden conectarse a diferentes bases de datos con uno de los 3 modos de agrupación que se describen a continuación. Esto también es aplicable a los usuarios. Por ejemplo, si el modo de agrupación es la agrupación de sesiones, se puede configurar un usuario específico para utilizar la agrupación de transacciones. Esto nos brinda flexibilidad a nivel de base de datos y de usuario para aplicar opciones de agrupación más apropiadas.

PgBouncer proporciona 3 modos de agrupación de conexiones:

  • Agrupación de sesiones
    Durante la vigencia de una conexión de cliente, se asigna una conexión de servidor existente al cliente y, después de que el cliente se desconecta, la conexión de servidor asignada se vuelve a colocar en el conjunto de conexiones.
  • Grupo de transacciones
    En este modo, una conexión de servidor no se asigna a un cliente conectado inmediatamente, sino solo durante una transacción. Tan pronto como finaliza la transacción, la conexión se vuelve a colocar en el grupo.
  • Combinación de estados de cuenta
    Esto es similar a la agrupación de transacciones, pero es más agresivo. Se asigna un backend cada vez que se emite una consulta de declaración única. Cuando finaliza la declaración, la conexión se vuelve a colocar en el grupo.

Límites de conexión por base de datos y por usuario:max_db_connections y max_user_connections

Con esta función, ahora también podemos controlar los límites de conexión por base de datos/nivel de usuario con los dos nuevos parámetros, que son max_db_connections y max_user_connections .

  • máx_db_conexiones
    Este parámetro no permite más de las conexiones especificadas por base de datos (independientemente del grupo, es decir, usuario).
    El valor predeterminado de este parámetro es ilimitado.
  • max_user_connections
    Este parámetro no permite más de las conexiones especificadas por usuario (independientemente del grupo, es decir, el usuario).

Agregue comandos DISABLE/ENABLE para evitar nuevas conexiones

Con esta función, PgBouncer tiene HABILITAR/DESHABILITAR db; comandos para evitar nuevas conexiones.

  • DESHABILITAR base de datos;
    Este comando rechaza todas las nuevas conexiones de clientes en la base de datos dada.
  • HABILITAR base de datos;
    Este comando permite nuevas conexiones de clientes después de un DISABLE anterior comando.

Nuevo servidor DNS preferido:c-ares

c-ares es el único servidor de DNS que admite todas las características interesantes:/etc/hosts con actualización, búsqueda SOA, respuestas grandes (a través de TCP/EDNS+UDP), IPv6. Ahora es el backend preferido y probablemente será el único backend en el futuro.

Los archivos de configuración tienen la directiva '%include FILENAME' para permitir que la configuración se divida en varios archivos

Con esta característica, PgBouncer admite la inclusión de archivos de configuración dentro de otros archivos de configuración.

En otras palabras, el archivo de configuración de PgBouncer puede contener directivas de inclusión, que especifican otro archivo de configuración para leer y procesar. Esto permite dividir un archivo de configuración grande en archivos más pequeños y más manejables. Las directivas de inclusión se ven así:

%include filename

Si el nombre del archivo no es una ruta absoluta, se toma como relativo al directorio de trabajo actual.

Hay más funciones lanzadas en esta versión. Puede visitar la página de registro de cambios de PgBouncer o consultar la lista a continuación para ver otras mejoras:

  • Mostrar remote_pid en MOSTRAR CLIENTES/SERVIDORES. Disponible para clientes que se conectan a través de sockets unix y servidores de socket tcp y unix. En el caso de tcp-server, el pid se toma de la clave de cancelación.
  • Agregue un parámetro de configuración separado (dns_nxdomain_ttl) para controlar el almacenamiento en caché de dns negativo.
  • Agregue la dirección IP y el puerto del host del cliente a application_name. Esto está habilitado por un parámetro de configuración application_name_add_host que por defecto está en 'off'.

¿Qué es PgBouncer?

PgBouncer es una utilidad para administrar conexiones de clientes a la base de datos PostgreSQL. En pocas palabras, mantiene un grupo de conexiones con el servidor PostgreSQL y reutiliza esas conexiones existentes. Si bien esto puede ser útil para reducir la sobrecarga de la conexión del cliente, también permite limitar la cantidad máxima de conexiones abiertas al servidor de la base de datos. También se puede usar para dar forma al tráfico, como redirigir conexiones a una o más bases de datos a diferentes servidores de bases de datos. Además de estos, PgBouncer se puede usar para administrar la seguridad en el usuario e incluso en el nivel de la base de datos.

Vea el siguiente diagrama que representa la arquitectura de PgBouncer de una manera más visual.

En este ejemplo particular, las aplicaciones cliente están conectadas a instancias separadas de PgBouncer donde, en cambio, estarían conectadas directamente a servidores de bases de datos PostgreSQL. Los servidores de base de datos "DB Server 1" y "DB Server 2" pueden ser instancias independientes de PostgreSQL o pueden ser parte de un clúster con diferentes roles (por ejemplo, maestro/réplica o maestro de escritura/maestro de respaldo, etc.).

Cada instancia de PgBouncer mantiene un grupo de conexiones con varias conexiones abiertas a servidores PostgreSQL. Como se puede ver en el ejemplo, PgBouncers permite crear grupos con conexiones a diferentes bases de datos e incluso conexiones a diferentes servidores de bases de datos.

Para más información

Puede visitar el sitio web principal de PgBouncer: http://pgbouncer.github.io/

Tienen una buena página de preguntas frecuentes: http://pgbouncer.github.io/faq.html

Puede echar un vistazo al repositorio de Github del proyecto: http://github.com/pgbouncer/pgbouncer