initdb — crear un nuevo clúster de bases de datos de PostgreSQL
initdb [opción...] [ --pgdata | -D ] directorio
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.
-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:
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).
initdb también se puede invocar mediante
pg_ctl initdb.