postgres – servidor de base de datos PostgreSQL

Sinopsis

postgres [option…]

Descripción

postgres es el servidor de base de datos PostgreSQL. Para que una aplicación cliente acceda a una base de datos, se conecta (a través de una red o localmente) a una postgres ejemplo. los postgres La instancia luego inicia un proceso de servidor separado para manejar la conexión.

Uno postgres La instancia siempre administra los datos de exactamente un clúster de base de datos. Un clúster de bases de datos es una colección de bases de datos que se almacena en una ubicación común del sistema de archivos (el área de datos). Más de uno postgres La instancia puede ejecutarse en un sistema a la vez, siempre que utilicen diferentes áreas de datos y diferentes puertos de comunicación (ver más abajo). Cuando postgres comienza necesita saber la ubicación del área de datos. La ubicación debe ser especificada por el -D opción o la PGDATA Variable ambiental; no hay ningún defecto. Típicamente, -D o PGDATA apunta directamente al directorio del área de datos creado por initdb. Otros posibles diseños de archivos se tratan en la Sección 19.2.

Por defecto postgres comienza en primer plano e imprime mensajes de registro en el flujo de errores estándar. En aplicaciones prácticas postgres debe iniciarse como un proceso en segundo plano, tal vez en el momento del arranque.

los postgres El comando también se puede llamar en modo de usuario único. El uso principal de este modo es durante el arranque de initdb. A veces se utiliza para depuración o recuperación ante desastres; tenga en cuenta que ejecutar un servidor de un solo usuario no es realmente adecuado para depurar el servidor, ya que no se producirá ningún bloqueo y comunicación entre procesos realistas. Cuando se invoca en el modo de usuario único desde el shell, el usuario puede ingresar consultas y los resultados se imprimirán en la pantalla, pero en una forma que es más útil para los desarrolladores que para los usuarios finales. En el modo de usuario único, el usuario de sesión se configurará como el usuario con ID 1, y se otorgarán poderes de superusuario implícitos a este usuario. En realidad, este usuario no tiene que existir, por lo que el modo de usuario único se puede utilizar para recuperarse manualmente de ciertos tipos de daños accidentales en los catálogos del sistema.

Opciones

postgres acepta los siguientes argumentos de la línea de comandos. Para una discusión detallada de las opciones, consulte Capítulo 19. Puede ahorrar escribiendo la mayoría de estas opciones configurando un archivo de configuración. Algunas opciones (seguras) también se pueden configurar desde el cliente de conexión de una manera dependiente de la aplicación para aplicar solo para esa sesión. Por ejemplo, si la variable de entorno PGOPTIONS está configurado, los clientes basados ​​en libpq pasarán esa cadena al servidor, que la interpretará como postgres opciones de la línea de comandos.

Propósito general

-B nbuffers

Establece el número de búferes compartidos que utilizarán los procesos del servidor. El valor predeterminado de este parámetro lo elige initdb automáticamente. Especificar esta opción equivale a establecer el parámetro de configuración shared_buffers.

-c name=value

Establece un parámetro de tiempo de ejecución con nombre. Los parámetros de configuración admitidos por PostgreSQL se describen en Capítulo 19. La mayoría de las otras opciones de la línea de comandos son de hecho formas cortas de dicha asignación de parámetros. -c puede aparecer varias veces para establecer varios parámetros.

-C name

Imprime el valor del parámetro de tiempo de ejecución con nombre y sale. (Ver el -c opción anterior para obtener más detalles.) Esto se puede utilizar en un servidor en ejecución, y devuelve valores de postgresql.conf, modificado por cualquier parámetro proporcionado en esta invocación. No refleja los parámetros proporcionados cuando se inició el clúster.

Esta opción está destinada a otros programas que interactúan con una instancia de servidor, como pg_ctl, para consultar valores de parámetros de configuración. En su lugar, las aplicaciones orientadas al usuario deben usar SHOW o el pg_settings vista.

-d debug-level

Establece el nivel de depuración. Cuanto mayor sea este valor, más resultados de depuración se escribirán en el registro del servidor. Los valores son de 1 a 5. También es posible pasar -d 0 para una sesión específica, lo que evitará que el nivel de registro del servidor del padre postgres proceso de propagarse a esta sesión.

-D datadir

Especifica la ubicación del sistema de archivos de los archivos de configuración de la base de datos. Consulte la Sección 19.2 para obtener más detalles.

-e

Establece el estilo de fecha predeterminado en europeo, es decir DMY orden de los campos de fecha de entrada. Esto también hace que el día se imprima antes del mes en ciertos formatos de salida de fecha. Consulte la Sección 8.5 para obtener más información.

-F

Inhabilita fsync pide un mejor rendimiento, a riesgo de que se dañen los datos en caso de una caída del sistema. Especificar esta opción equivale a deshabilitar el parámetro de configuración fsync. ¡Lea la documentación detallada antes de usar esto!

-h hostname

Especifica el nombre de host IP o la dirección en la que postgres es escuchar las conexiones TCP / IP de las aplicaciones cliente. El valor también puede ser una lista de direcciones separadas por comas, o * para especificar la escucha en todas las interfaces disponibles. Un valor vacío especifica que no se escucha en ninguna dirección IP, en cuyo caso solo se pueden usar sockets de dominio Unix para conectarse al servidor. Predeterminado para escuchar solo en localhost. Especificar esta opción equivale a establecer el parámetro de configuración listen_addresses.

-i

Permite que los clientes remotos se conecten a través de conexiones TCP / IP (dominio de Internet). Sin esta opción, solo se aceptan conexiones locales. Esta opción es equivalente a configurar listen_addresses para * en postgresql.conf o via -h.

Esta opción está obsoleta porque no permite el acceso a la funcionalidad completa de listen_addresses. Por lo general, es mejor configurar listen_addresses directamente.

-k directory

Especifica el directorio del socket de dominio Unix en el que postgres es escuchar las conexiones de las aplicaciones cliente. El valor también puede ser una lista de directorios separados por comas. Un valor vacío especifica que no se escucha en ningún socket de dominio Unix, en cuyo caso solo se pueden usar sockets TCP / IP para conectarse al servidor. El valor predeterminado es normalmente /tmp, pero eso se puede cambiar en el momento de la compilación. Especificar esta opción equivale a establecer el parámetro de configuración unix_socket_directories.

-l

Habilita conexiones seguras mediante SSL. PostgreSQL debe haberse compilado con soporte para SSL para que esta opción esté disponible. Para obtener más información sobre el uso de SSL, consulte la Sección 18.9.

-N max-connections

Establece el número máximo de conexiones de cliente que aceptará este servidor. El valor predeterminado de este parámetro lo elige initdb automáticamente. Especificar esta opción equivale a establecer el parámetro de configuración max_connections.

-o extra-options

Los argumentos de estilo de línea de comandos especificados en extra-options se pasan a todos los procesos del servidor iniciados por este postgres proceso.

Espacios dentro extra-options se consideran argumentos separados, a menos que se escapen con una barra invertida (); escribir \ para representar una barra invertida literal. También se pueden especificar varios argumentos mediante múltiples usos de -o.

El uso de esta opción está obsoleto; Todas las opciones de la línea de comandos para los procesos del servidor se pueden especificar directamente en el postgres línea de comando.

-p port

Especifica el puerto TCP / IP o la extensión del archivo de socket de dominio Unix local en el que postgres es escuchar las conexiones de las aplicaciones cliente. Predeterminado al valor de la PGPORT variable de entorno, o si PGPORT no está configurado, entonces toma el valor predeterminado establecido durante la compilación (normalmente 5432). Si especifica un puerto que no sea el puerto predeterminado, todas las aplicaciones cliente deben especificar el mismo puerto utilizando las opciones de la línea de comandos o PGPORT.

-s

Imprima información de tiempo y otras estadísticas al final de cada comando. Esto es útil para realizar evaluaciones comparativas o para ajustar el número de búferes.

-Swork-mem

Especifica la cantidad base de memoria que utilizarán las clases y las tablas hash antes de recurrir a archivos de disco temporales. Ver la descripción del work_mem parámetro de configuración en la Sección 19.4.1.

-V--version

Imprima la versión de postgres y salga.

--name=value

Establece un parámetro de tiempo de ejecución con nombre; una forma más corta de -c.

--describe-config

Esta opción descarga las variables de configuración internas del servidor, las descripciones y los valores predeterminados en formato delimitado por tabuladores. COPY formato. Está diseñado principalmente para ser utilizado por herramientas de administración.

-?--help

Muestre ayuda sobre los argumentos de la línea de comandos de postgres y salga.

Opciones semi-internas

Las opciones descritas aquí se utilizan principalmente con fines de depuración y, en algunos casos, para ayudar con la recuperación de bases de datos gravemente dañadas. No debería haber ninguna razón para usarlos en una configuración de base de datos de producción. Se enumeran aquí solo para que los utilicen los desarrolladores de sistemas PostgreSQL. Además, estas opciones pueden cambiar o eliminarse en una versión futura sin previo aviso.

-f s

Prohíbe el uso de métodos particulares de exploración y unión: s y i deshabilitar las exploraciones secuenciales e indexadas respectivamente, o, b y t deshabilitar los escaneos de solo índice, los escaneos de índice de mapa de bits y los escaneos TID respectivamente, mientras n, m, y h deshabilite las combinaciones de bucle anidado, fusión y hash, respectivamente.

Ni las exploraciones secuenciales ni las uniones de bucle anidado se pueden desactivar por completo; los -fs y -fn Las opciones simplemente desalientan al optimizador de usar esos tipos de planes si tiene alguna otra alternativa.

-n

Esta opción es para depurar problemas que hacen que un proceso de servidor falle de forma anormal. La estrategia común en esta situación es notificar a todos los demás procesos del servidor que deben terminar y luego reinicializar la memoria compartida y los semáforos. Esto se debe a que un proceso de servidor erróneo podría haber dañado algún estado compartido antes de finalizar. Esta opción especifica que postgres no reinicializará las estructuras de datos compartidas. Un programador de sistemas con conocimientos puede utilizar un depurador para examinar la memoria compartida y el estado del semáforo.

-O

Permite modificar la estructura de las tablas del sistema. Esto es usado por initdb.

-P

Ignore los índices del sistema al leer las tablas del sistema, pero aún así actualice los índices al modificar las tablas. Esto es útil cuando se recupera de índices del sistema dañados.

-tpa[rser] | pl[anner] | e[xecutor]

Imprima estadísticas de tiempo para cada consulta relacionada con cada uno de los principales módulos del sistema. Esta opción no se puede utilizar junto con el -s opción.

-T

Esta opción es para depurar problemas que hacen que un proceso de servidor falle de forma anormal. La estrategia habitual en esta situación es notificar a todos los demás procesos del servidor que deben terminar y luego reinicializar la memoria compartida y los semáforos. Esto se debe a que un proceso de servidor erróneo podría haber dañado algún estado compartido antes de finalizar. Esta opción especifica que postgres detendrá todos los demás procesos del servidor enviando la señal SIGSTOP, pero no hará que terminen. Esto permite a los programadores del sistema recopilar manualmente volcados de memoria de todos los procesos del servidor.

-vprotocol

Especifica el número de versión del protocolo frontend / backend que se utilizará para una sesión en particular. Esta opción es solo para uso interno.

-Wseconds

Se produce un retraso de esta cantidad de segundos cuando se inicia un nuevo proceso de servidor, después de realizar el procedimiento de autenticación. Esto está destinado a brindar la oportunidad de conectarse al proceso del servidor con un depurador.

Opciones para el modo de usuario único

Las siguientes opciones solo se aplican al modo de usuario único (consulte Modo de usuario único a continuación).

--single

Selecciona el modo de usuario único. Este debe ser el primer argumento en la línea de comando.

database

Especifica el nombre de la base de datos a la que se accede. Este debe ser el último argumento en la línea de comando. Si se omite, toma el nombre de usuario de forma predeterminada.

-E

Haga eco de todos los comandos en la salida estándar antes de ejecutarlos.

-j

Utilice punto y coma seguido de dos nuevas líneas, en lugar de solo una nueva línea, como terminador de entrada de comando.

-rfilename

Enviar toda la salida del registro del servidor a filename. Esta opción solo se acepta cuando se proporciona como una opción de línea de comandos.

Medio ambiente

PGCLIENTENCODING

Codificación de caracteres predeterminada utilizada por los clientes. (Los clientes pueden anular esto individualmente). Este valor también se puede establecer en el archivo de configuración.

PGDATA

Ubicación del directorio de datos predeterminado

PGDATESTYLE

Valor predeterminado del parámetro de tiempo de ejecución DateStyle. (El uso de esta variable de entorno está en desuso).

PGPORT

Número de puerto predeterminado (preferiblemente establecido en el archivo de configuración)

Diagnósticos

Un mensaje de error que menciona semget o shmget probablemente indica que necesita configurar su kernel para proporcionar la memoria compartida y los semáforos adecuados. Para obtener más información, consulte la Sección 18.4. Es posible que pueda posponer la reconfiguración de su kernel disminuyendo shared_buffers para reducir el consumo de memoria compartida de PostgreSQL y / o reduciendo max_connections para reducir el consumo de semáforos.

Un mensaje de falla que sugiera que otro servidor ya se está ejecutando debe revisarse cuidadosamente, por ejemplo, usando el comando

$ ps ax | grep postgres

o

$ ps -ef | grep postgres

dependiendo de su sistema. Si está seguro de que no se está ejecutando ningún servidor en conflicto, puede eliminar el archivo de bloqueo mencionado en el mensaje e intentarlo de nuevo.

Un mensaje de error que indique la imposibilidad de conectarse a un puerto podría indicar que ese puerto ya está siendo utilizado por algún proceso que no es PostgreSQL. También puede recibir este error si cancela postgres e inmediatamente reinícielo usando el mismo puerto; en este caso, simplemente debe esperar unos segundos hasta que el sistema operativo cierre el puerto antes de volver a intentarlo. Finalmente, puede obtener este error si especifica un número de puerto que su sistema operativo considera reservado. Por ejemplo, muchas versiones de Unix consideran que los números de puerto inferiores a 1024 son de confianza y solo permitir que el superusuario de Unix acceda a ellos.

Notas

El comando de utilidad pg_ctl se puede utilizar para iniciar y apagar el postgres servidor de forma segura y cómoda.

Si es posible, no usar SIGKILL para matar al principal postgres servidor. Hacerlo evitará postgres de liberar los recursos del sistema (por ejemplo, memoria compartida y semáforos) que contiene antes de terminar. Esto puede causar problemas para iniciar una nueva postgres correr.

Para terminar el postgres servidor normalmente, las señales SIGTERM, SIGINT, o SIGQUIT puede ser usado. El primero esperará a que todos los clientes terminen antes de salir, el segundo desconectará forzosamente a todos los clientes y el tercero se cerrará inmediatamente sin un apagado adecuado, lo que dará como resultado una ejecución de recuperación durante el reinicio.

los SIGHUP Signal recargará los archivos de configuración del servidor. También es posible enviar SIGHUP a un proceso de servidor individual, pero eso generalmente no es sensato.

Para cancelar una consulta en ejecución, envíe el SIGINT señal al proceso que ejecuta ese comando. Para finalizar un proceso de backend de forma limpia, envíe SIGTERM a ese proceso. Ver también pg_cancel_backend y pg_terminate_backend en la Sección 9.27.2 para los equivalentes de estas dos acciones que se pueden llamar por SQL.

los postgres usos del servidor SIGQUIT para decirle a los procesos del servidor subordinado que finalicen sin una limpieza normal. Esta señal no debe ser utilizado por los usuarios. Tampoco es prudente enviar SIGKILL a un proceso de servidor – el principal postgres El proceso interpretará esto como un bloqueo y obligará a todos los procesos hermanos a cerrarse como parte de su procedimiento estándar de recuperación de fallos.

Insectos

los -- las opciones no funcionarán en FreeBSD o OpenBSD. Usar -c en lugar de. Este es un error en los sistemas operativos afectados; una versión futura de PostgreSQL proporcionará una solución alternativa si esto no se soluciona.

Modo de usuario único

Para iniciar un servidor en modo de usuario único, use un comando como

postgres --single -D /usr/local/pgsql/data other-options my_database

Proporcione la ruta correcta al directorio de la base de datos con -Do asegúrese de que la variable de entorno PGDATA Está establecido. También especifique el nombre de la base de datos en particular en la que desea trabajar.

Normalmente, el servidor de modo de usuario único trata la nueva línea como el terminador de entrada de comandos; no hay inteligencia sobre el punto y coma, como en psql. Para continuar un comando en varias líneas, debe escribir una barra invertida justo antes de cada nueva línea, excepto la última. La barra invertida y la nueva línea adyacente se eliminan del comando de entrada. Tenga en cuenta que esto sucederá incluso cuando se encuentre dentro de una cadena literal o comentario.

Pero si usa el -j cambio de línea de comando, una sola nueva línea no termina la entrada de comando; en cambio, lo hace la secuencia punto y coma-nueva línea-nueva línea. Es decir, escriba un punto y coma seguido inmediatamente de una línea completamente vacía. La barra invertida-nueva línea no se trata especialmente en este modo. Nuevamente, no hay inteligencia acerca de que tal secuencia aparezca dentro de una cadena literal o comentario.

En cualquier modo de entrada, si escribe un punto y coma que no es justo antes o parte de un terminador de entrada de comando, se considera un separador de comando. Cuando escribe un terminador de entrada de comando, las múltiples declaraciones que ha ingresado se ejecutarán como una sola transacción.

Para salir de la sesión, escriba EOF (Control+D, generalmente). Si ha ingresado algún texto desde el último terminador de entrada de comando, entonces EOF se tomará como un terminador de entrada de comando y se necesitará otro EOF para salir.

Tenga en cuenta que el servidor de modo de usuario único no proporciona funciones sofisticadas de edición de línea (sin historial de comandos, por ejemplo). El modo de usuario único tampoco realiza ningún procesamiento en segundo plano, como puntos de control automáticos o replicación.

Ejemplos de

Para comenzar postgres en segundo plano usando valores predeterminados, escriba:

$ nohup postgres >logfile 2>&1 

Para comenzar postgres con un puerto específico, por ejemplo, 1234:

$ postgres -p 1234

Para conectarse a este servidor usando psql, especifique este puerto con la opción -p:

$ psql -p 1234

o establezca la variable de entorno PGPORT:

$ export PGPORT=1234
$ psql

Los parámetros de tiempo de ejecución con nombre se pueden establecer en cualquiera de estos estilos:

$ postgres -c work_mem=1234
$ postgres --work-mem=1234

Cualquiera de las formas anula cualquier configuración que pueda existir para work_mem en postgresql.conf. Tenga en cuenta que los guiones bajos en los nombres de los parámetros se pueden escribir como guiones bajos o guiones en la línea de comando. A excepción de los experimentos a corto plazo, probablemente sea una mejor práctica editar la configuración en postgresql.conf que confiar en un conmutador de línea de comandos para establecer un parámetro.

Ver también

initdb, pg_ctl

Anterior Hasta próximo
pg_waldump Hogar administrador de correos