initdb

initdb — crear un nuevo clúster de bases de datos de PostgreSQL

Synopsis

initdb [opción...] [ --pgdata | -D ] directorio

Descripción

initdb crea un nuevo clúster de bases de datos de PostgreSQL.

La creación de un clúster de bases de datos consiste en crear los directorios en los que residirán los datos del clúster, generar las tablas del catálogo compartido (tablas que pertenecen a todo el clúster en lugar de a cualquier base de datos en particular) y crear las bases de datos postgres, template1 y template0. La base de datos postgres es una base de datos por omisión destinada al uso por parte de usuarios, utilidades y aplicaciones de terceros. template1 y template0 están destinadas a ser bases de datos de origen para ser copiadas por comandos CREATE DATABASE posteriores. template0 nunca debe modificarse, pero puedes agregar objetos a template1, los cuales, por omisión, se copiarán en las bases de datos creadas posteriormente. Consulta la Section 22.3 para obtener más detalles.

Aunque initdb intentará crear el directorio de datos especificado, es posible que no tenga permiso si el directorio raíz (root) es el propietario del directorio padre del directorio de datos deseado. Para inicializar en tal configuración, crea un directorio de datos vacío como root, luego usa chown para asignar la propiedad de ese directorio a la cuenta de usuario de la base de datos, y finalmente usa su para convertirte en el usuario de la base de datos y ejecutar initdb.

initdb debe ejecutarse como el usuario que será propietario del proceso del servidor, ya que el servidor necesita tener acceso a los archivos y directorios que initdb crea. Dado que el servidor no se puede ejecutar como root, tampoco debes ejecutar initdb como root. (De hecho, se negará a hacerlo).

Por razones de seguridad, el nuevo clúster creado por initdb solo será accesible para el propietario del clúster por omisión. La opción --allow-group-access permite a cualquier usuario del mismo grupo que el propietario del clúster leer archivos en el clúster. Esto es útil para realizar copias de seguridad como un usuario sin privilegios.

initdb inicializa la configuración regional (locale) por omisión y la codificación de caracteres del clúster de bases de datos. Estas también se pueden establecer por separado para cada base de datos cuando se crea. initdb determina esos ajustes para las bases de datos de plantilla, que servirán como valor por omisión para todas las demás bases de datos.

Por omisión, initdb utiliza el proveedor de configuración regional libc (consulta la Section 23.1.4). El proveedor de configuración regional libc toma la configuración regional del entorno y determina la codificación a partir de ella.

Para elegir una configuración regional diferente para el clúster, usa la opción --locale. También hay opciones individuales --lc-* y --icu-locale (ver más abajo) para establecer valores para las categorías de configuración regional individuales. Ten en cuenta que las configuraciones inconsistentes para diferentes categorías de configuración regional pueden dar resultados sin sentido, por lo que esto debe usarse con cuidado.

Alternativamente, initdb puede usar la biblioteca ICU para proporcionar servicios de configuración regional especificando --locale-provider=icu. El servidor debe compilarse con soporte para ICU. Para elegir el ID de configuración regional de ICU específico que se aplicará, usa la opción --icu-locale. Ten en cuenta que, por razones de implementación y para admitir código heredado, initdb seguirá seleccionando e inicializando la configuración regional de libc cuando se utilice el proveedor de configuración regional ICU.

Cuando se ejecuta initdb, imprimirá la configuración regional que ha elegido. Si tienes requisitos complejos o especificaste múltiples opciones, es aconsejable comprobar que el resultado coincida con lo que se pretendía.

Se pueden encontrar más detalles sobre la configuración regional en la Section 23.1.

Para alterar la codificación por omisión, usa la opción --encoding. Se pueden encontrar más detalles en la Section 23.3.

Opciones

-A método_autenticación
--auth=método_autenticación #

Esta opción especifica el método de autenticación por omisión para los usuarios locales utilizados en pg_hba.conf (líneas host y local). Consulta la Section 20.1 para ver una descripción general de los valores válidos.

initdb rellenará previamente las entradas de pg_hba.conf utilizando el método de autenticación especificado tanto para las conexiones de no replicación como para las de replicación.

No uses trust a menos que confíes en todos los usuarios locales de tu sistema. trust es el valor por omisión para facilitar la instalación.

--auth-host=método_autenticación #

Esta option especifica el método de autenticación para los usuarios locales a través de conexiones TCP/IP utilizadas en pg_hba.conf (líneas host).

--auth-local=método_autenticación #

Esta opción especifica el método de autenticación para los usuarios locales a través de conexiones de socket de dominio Unix utilizadas en pg_hba.conf (líneas local).

-D directorio
--pgdata=directorio #

Esta opción especifica el directorio donde se debe almacenar el clúster de bases de datos. Esta es la única información requerida por initdb, pero puedes evitar escribirla configurando la variable de entorno PGDATA, lo cual puede resultar conveniente ya que el servidor de bases de datos (postgres) podrá encontrar el directorio de datos más tarde mediante la misma variable.

-E codificación
--encoding=codificación #

Selecciona la codificación de las bases de datos de plantilla. Esta también será la codificación por omisión de cualquier base de datos que crees más tarde, a menos que la cambies en ese momento. Los conjuntos de caracteres admitidos por el servidor de PostgreSQL se describen en la Section 23.3.1.

Por omisión, la codificación de la base de datos de plantilla se deriva de la configuración regional. Si se especifica --no-locale (o equivalentemente, si la configuración regional es C o POSIX), entonces el valor por omisión es UTF8 para el proveedor ICU y SQL_ASCII para el proveedor libc.

-g
--allow-group-access #

Permite a los usuarios del mismo grupo que el propietario del clúster leer todos los archivos del clúster creados por initdb. Esta opción se ignora en Windows, ya que no admite permisos de grupo al estilo POSIX.

--icu-locale=configuración_regional #

Especifica la configuración regional de ICU cuando se utiliza el proveedor ICU. El soporte de configuración regional se describe en la Section 23.1.

--icu-rules=reglas #

Especifica reglas de colación adicionales para personalizar el comportamiento de la colación por omisión. Esto solo se admite para ICU.

-k
--data-checksums #

Usa sumas de comprobación (checksums) en las páginas de datos para ayudar a detectar la corrupción por parte del sistema de E/S que de otro modo sería silenciosa. Esto está activado por omisión; usa la --no-data-checksums para desactivar las sumas de comprobación.

La activación de las sumas de comprobación puede acarrear una pequeña pérdida de rendimiento. Si se establece, se calculan las sumas de comprobación para todos los objetos, en todas las bases de datos. Todos los fallos de suma de comprobación se informarán en la vista pg_stat_database. Consulta la Section 28.2 para obtener más detalles.

--locale=configuración_regional #

Establece la configuración regional por omisión para el clúster de bases de datos. Si esta opción no se especifica, la configuración regional se hereda del entorno en el que se ejecuta initdb. El soporte de configuración regional se describe en la Section 23.1.

Si --locale-provider es builtin, se debe especificar --locale o --builtin-locale y establecerse en C, C.UTF-8 o PG_UNICODE_FAST.

--lc-collate=configuración_regional
--lc-ctype=configuración_regional
--lc-messages=configuración_regional
--lc-monetary=configuración_regional
--lc-numeric=configuración_regional
--lc-time=configuración_regional #

Al igual que --locale, pero solo establece la configuración regional en la categoría especificada.

--no-locale #

Equivalente a --locale=C.

--builtin-locale=configuración_regional #

Specifies the locale name when the builtin provider is used. Locale support is described in Section 23.1.

--locale-provider={builtin|libc|icu} #

Esta opción establece el proveedor de configuración regional para las bases de datos creadas en el nuevo clúster. Se puede cambiar en el comando CREATE DATABASE cuando se creen bases de datos posteriormente. El valor por omisión es libc (consulta la Section 23.1.4).

--no-data-checksums #

No actives las sumas de comprobación de datos.

--pwfile=nombre_archivo #

Hace que initdb lea la contraseña del superusuario bootstrap desde un archivo. Se toma la primera línea del archivo como contraseña.

-T configuración
--text-search-config=configuración #

Establece la configuración de búsqueda de texto por omisión. Consulta la default_text_search_config para obtener más información.

-U nombre_usuario
--username=nombre_usuario #

Establece el nombre de usuario del superusuario bootstrap. Por omisión, es el nombre del usuario del sistema operativo que ejecuta initdb.

-W
--pwprompt #

Hace que initdb solicite una contraseña para el superusuario bootstrap. Si no planeas utilizar la autenticación por contraseña, esto no es importante. De lo contrario, no podrás utilizar la autenticación por contraseña hasta que configures una.

-X directorio
--waldir=directorio #

Esta opción especifica el directorio donde se debe almacenar el registro de escritura anticipada (write-ahead log).

--wal-segsize=tamaño #

Establece el tamaño del segmento WAL, en megabytes. Este es el tamaño de cada archivo individual en el registro WAL. El tamaño por omisión es 16 megabytes. El valor debe ser una potencia de 2 entre 1 y 1024 (megabytes). Esta opción solo se puede establecer durante la inicialización, y no se puede cambiar más adelante.

Puede ser útil ajustar este tamaño para controlar la granularidad del envío o archivo de registros WAL. Además, en bases de datos con un alto volumen de WAL, el número de archivos WAL por directorio puede convertirse en un problema de rendimiento y gestión. Aumentar el tamaño del archivo WAL reducirá el número de archivos WAL.

También están disponibles otras opciones, de uso menos común:

-c nombre=valor
--set nombre=valor #

Fuerza a establecer el parámetro del servidor nombre en valor durante initdb, e instala también esa configuración en el archivo postgresql.conf generado, para que se aplique durante las futuras ejecuciones del servidor. Esta opción se puede proporcionar más de una vez para establecer varios parámetros. Es principalmente útil cuando el entorno es tal que el servidor no se iniciaría en absoluto utilizando los parámetros por omisión.

-d
--debug #

Muestra la salida de depuración del backend de bootstrap y algunos otros mensajes de menor interés para el público en general. El backend de bootstrap es el programa que utiliza initdb para crear las tablas de catálogo. Esta opción genera una cantidad tremenda de salida extremadamente aburrida.

--discard-caches #

Ejecuta el backend de bootstrap con la opción debug_discard_caches=1. Esto lleva mucho tiempo y solo es útil para depuración profunda.

-L directorio #

Especifica dónde debe encontrar initdb sus archivos de entrada para inicializar el clúster de bases de datos. Esto normalmente no es necesario. Se te indicará si necesitas especificar su ubicación explícitamente.

-n
--no-clean #

Por omisión, cuando initdb determina que un error impidió la creación completa del clúster de bases de datos, elimina cualquier archivo que haya creado antes de descubrir que no puede terminar el trabajo. Esta opción inhibe la limpieza y, por lo tanto, es útil para la depuración.

-N
--no-sync #

Por omisión, initdb esperará a que todos los archivos se escriban de forma segura en el disco. Esta opción hace que initdb retorne sin esperar, lo cual es más rápido, pero significa que una caída posterior del sistema operativo puede dejar corrupto el directorio de datos. Generalmente, esta opción es útil para pruebas, pero no debe utilizarse al crear una instalación de producción.

--no-sync-data-files #

Por omisión, initdb escribe de forma segura todos los archivos de la base de datos en el disco. Esta opción indica a initdb que omita la sincronización de todos los archivos en los directorios de bases de datos individuales, los directorios de bases de datos mismos y los directorios de tablespaces, es decir, todo en el subdirectorio base y cualquier otro directorio de tablespace. Otros archivos, como los de pg_wal y pg_xact, se seguirán sincronizando a menos que también se especifique la opción --no-sync.

Ten en cuenta que si se utiliza --no-sync-data-files en conjunto con --sync-method=syncfs, algunos o todos los archivos y directorios antes mencionados se sincronizarán porque syncfs procesa sistemas de archivos enteros.

Esta opción está destinada principalmente al uso interno de herramientas que aseguran por separado que los archivos omitidos se sincronicen en el disco.

--no-instructions #

Por omisión, initdb escribirá instrucciones sobre cómo iniciar el clúster al final de su salida. Esta opción hace que se omitan esas instrucciones. Esto está destinado principalmente al uso de herramientas que envuelven a initdb en un comportamiento específico de la plataforma, donde es probable que esas instrucciones sean incorrectas.

-s
--show #

Muestra la configuración interna y sale, sin hacer nada más. Esto se puede utilizar para depurar la instalación de initdb.

--sync-method=método #

Cuando se establece en fsync, que es el valor por omisión, initdb abrirá y sincronizará de forma recursiva todos los archivos en el directorio de datos. La búsqueda de archivos seguirá los enlaces simbólicos para el directorio WAL y cada tablespace configurado.

En Linux, se puede usar en su lugar syncfs para pedir al sistema operativo que sincronice los sistemas de archivos completos que contienen el directorio de datos, los archivos WAL y cada tablespace. Consulta la recovery_init_sync_method para obtener información sobre las advertencias que debes tener en cuenta al usar syncfs.

Esta opción no tiene efecto cuando se utiliza --no-sync.

-S
--sync-only #

Escribe de forma segura todos los archivos de la base de datos en el disco y sale. Esto no realiza ninguna de las operaciones normales de initdb. Generalmente, esta opción es útil para garantizar una recuperación confiable después de cambiar fsync de off a on.

Otras opciones:

-V
--version #

Muestra la versión de initdb y sale.

-?
--help #

Muestra la ayuda sobre los argumentos de línea de comandos de initdb y sale.

Entorno

PGDATA #

Especifica el directorio donde se almacenará el clúster de bases de datos; se puede cambiar mediante la opción -D.

PG_COLOR #

Especifica si se debe usar color en los mensajes de diagnóstico. Los valores posibles son always, auto y never.

TZ #

Especifica la zona horaria por omisión del clúster de bases de datos creado. El valor debe ser un nombre de zona horaria completo (consulta la Section 8.5.3).

Notas

initdb también se puede invocar mediante pg_ctl initdb.

Véase también

pg_ctl, postgres, Section 20.1