pg_basebackup — realiza una copia de seguridad base (base backup) de un clúster de PostgreSQL
pg_basebackup [option...]
pg_basebackup se utiliza para realizar una copia de seguridad base de un clúster de bases de datos PostgreSQL en ejecución. La copia de seguridad se toma sin afectar a otros clientes de la base de datos, y se puede usar tanto para la recuperación en el tiempo (point-in-time recovery, ver Section 25.3) como punto de partida para un servidor en espera de envío de registros (log-shipping) o de replicación en flujo (streaming-replication standby) (ver Section 26.2).
pg_basebackup puede realizar una copia de seguridad base completa o incremental de la base de datos. Cuando se utiliza para realizar una copia de seguridad completa, realiza una copia exacta de los archivos del clúster de la base de datos. Cuando se utiliza para realizar una copia de seguridad incremental, algunos archivos que habrían formado parte de una copia de seguridad completa pueden ser reemplazados con versiones incrementales de los mismos archivos, que contienen solo aquellos bloques que se han modificado desde la copia de seguridad de referencia. Una copia de seguridad incremental no se puede utilizar directamente; en su lugar, primero se debe utilizar pg_combinebackup para combinarla con las copias de seguridad anteriores de las que depende. Consulta Section 25.3.3 para obtener más información sobre las copias de seguridad incrementales, y Section 25.3.5 para conocer los pasos para recuperarse a partir de una copia de seguridad.
En cualquier modo, pg_basebackup se asegura de que el servidor entre y salga del modo de copia de seguridad automáticamente. Las copias de seguridad siempre se realizan de todo el clúster de la base de datos; no es posible realizar copias de seguridad de bases de datos individuales u objetos de la base de datos. Para copias de seguridad selectivas, se debe utilizar otra herramienta como pg_dump.
La copia de seguridad se realiza a través de una conexión normal de PostgreSQL
que utiliza el protocolo de replicación. La conexión debe realizarse
con un ID de usuario que tenga permisos de REPLICATION
(ver Section 21.2) o sea un superusuario,
y pg_hba.conf
debe permitir la conexión de replicación. El servidor también debe estar configurado
con max_wal_senders establecido en un valor lo suficientemente alto como para proporcionar al
menos un walsender para la copia de seguridad más uno para la transmisión de WAL (si se utiliza).
Pueden ejecutarse múltiples pg_basebackups al mismo tiempo, pero generalmente es
mejor desde el punto de vista del rendimiento realizar solo una copia de seguridad y copiar
el resultado.
pg_basebackup puede realizar una copia de seguridad base
no solo de un servidor primario sino también de uno en espera (standby). Para realizar una copia de seguridad de un standby,
configura el standby para que pueda aceptar conexiones de replicación (es decir, establece
max_wal_senders y hot_standby,
y configura su pg_hba.conf de manera apropiada).
También necesitarás habilitar full_page_writes en el primario.
Ten en cuenta que existen algunas limitaciones al realizar una copia de seguridad desde un standby:
El archivo de historial de copias de seguridad no se crea en el clúster de la base de datos respaldado.
pg_basebackup no puede forzar al standby
a cambiar a un nuevo archivo WAL al final de la copia de seguridad.
Cuando estás utilizando -X none, si la actividad de escritura en
el primario es baja, pg_basebackup puede
necesitar esperar mucho tiempo para que el último archivo WAL requerido para la copia de seguridad
sea cambiado y archivado. En este caso, puede ser útil ejecutar
pg_switch_wal en el primario para
provocar un cambio inmediato de archivo WAL.
Si el standby es promovido a primario durante la copia de seguridad, la copia de seguridad falla.
Todos los registros WAL requeridos para la copia de seguridad deben contener suficientes escrituras de página completa,
lo que requiere que habilites full_page_writes en el primario.
Cada vez que pg_basebackup está realizando una copia de seguridad
base, la vista pg_stat_progress_basebackup del servidor
informará del progreso de la copia de seguridad.
Consulta Section 27.4.6 para más detalles.
Las siguientes opciones de línea de comandos controlan la ubicación y el formato de la salida:
-D directory--pgdata=directoryEstablece el directorio de destino en el que escribir la salida. pg_basebackup creará este directorio (y cualquier directorio padre faltante) si no existe. Si ya existe, debe estar vacío.
Cuando la copia de seguridad está en formato tar, el directorio de destino se puede
especificar como - (guion), lo que hace que el archivo tar se
escriba en la salida estándar (stdout).
Esta opción es requerida.
-F format--format=format
Selecciona el formato para la salida. format
puede ser uno de los siguientes:
pplain
Escribe la salida como archivos planos, con la misma estructura que el
directorio de datos y los tablespaces del servidor de origen. Cuando el clúster no tiene
tablespaces adicionales, toda la base de datos se colocará en
el directorio de destino. Si el clúster contiene tablespaces
adicionales, el directorio de datos principal se colocará en el
directorio de destino, pero todos los demás tablespaces se colocarán
en la misma ruta absoluta que tienen en el servidor de origen.
(Consulta --tablespace-mapping para cambiar eso).
Este es el formato predeterminado.
ttar
Escribe la salida como archivos tar en el directorio de destino. El contenido
del directorio de datos principal se escribirá en un archivo llamado
base.tar, y cada uno de los otros tablespaces se
escribirá en un archivo tar independiente con el nombre del OID de ese tablespace.
Si el directorio de destino se especifica como -
(guion), el contenido del tar se escribirá en la
salida estándar, lo que resulta adecuado para enviarlo mediante tubería a (por ejemplo)
gzip. Esto solo está permitido si
el clúster no tiene tablespaces adicionales y no se utiliza
la transmisión de WAL.
-i old_manifest_file--incremental=old_manifest_fileRealiza una copia de seguridad incremental. Se debe proporcionar el manifiesto de copia de seguridad de la copia de seguridad de referencia, el cual se subirá al servidor, que responderá enviando la copia de seguridad incremental solicitada.
-R--write-recovery-conf
Crea un archivo
standby.signal
y añade los parámetros de conexión
al archivo postgresql.auto.conf
en el directorio de destino (o dentro del archivo de archivo base cuando
se utiliza el formato tar). Esto facilita la configuración de un servidor en espera utilizando los
resultados de la copia de seguridad.
El archivo postgresql.auto.conf registrará los parámetros de
conexión y, si se especifica, el slot de replicación
que está utilizando pg_basebackup, de modo que
la replicación en flujo y la
sincronización de slots de replicación lógica utilicen la misma
configuración más adelante. El dbname se registrará solo si se especificó
explícitamente en la cadena de conexión o en la
variable de entorno.
-t target--target=target
Instruye al servidor dónde colocar la copia de seguridad base. El destino predeterminado
es client, que especifica que la copia de seguridad debe
enviarse a la máquina donde se está ejecutando pg_basebackup.
Si en su lugar el destino se establece en
server:/alguna/ruta, la copia de seguridad se almacenará en
la máquina donde se está ejecutando el servidor, en el directorio
/alguna/ruta. Almacenar una copia de seguridad en el
servidor requiere privilegios de superusuario o tener privilegios del rol
pg_write_server_files. Si el destino se establece en
blackhole, los contenidos se descartan y no se
almacenan en ningún lugar. Esto solo debe usarse para fines de prueba, ya que no
obtendrás una copia de seguridad real.
Dado que la transmisión de WAL es implementada por
pg_basebackup y no por el servidor,
esta opción no se puede usar junto con -Xstream.
Como este es el valor predeterminado, cuando se especifica esta opción, también debes
especificar -Xfetch o -Xnone.
-T olddir=newdir--tablespace-mapping=olddir=newdir
Reubica el tablespace en el directorio olddir
a newdir durante la copia de seguridad. Para ser
efectivo, olddir debe coincidir exactamente con la
especificación de la ruta del tablespace tal como está definido en el servidor
de origen. (Pero no es un error si no hay ningún tablespace
en olddir en el servidor de origen).
Mientras tanto, newdir es un directorio en el
sistema de archivos del host receptor. Al igual que con el directorio de destino principal,
newdir no necesita existir previamente, pero si
existe debe estar vacío.
Tanto olddir
como newdir deben ser rutas absolutas. Si
alguna de las rutas necesita contener un signo de igual (=),
antepón una barra invertida. Esta opción se puede especificar varias
veces para múltiples tablespaces.
Si un tablespace se reubica de esta manera, los enlaces simbólicos dentro del directorio de datos principal se updatean para apuntar a la nueva ubicación. Así, el nuevo directorio de datos está listo para ser utilizado para una nueva instancia del servidor con todos los tablespaces en las ubicaciones actualizadas.
Actualmente, esta opción solo funciona con el formato de salida plano; se ignora si se selecciona el formato tar.
--waldir=waldir
Establece el directorio donde escribir los archivos WAL (write-ahead log).
Por defecto, los archivos WAL se colocarán en
el subdirectorio pg_wal del directorio de destino,
pero esta opción se puede usar para colocarlos en otro lugar.
waldir must be una ruta absoluta.
Al igual que con el directorio de destino principal,
waldir no necesita existir previamente, pero si
existe debe estar vacío.
Esta opción solo se puede especificar cuando
la copia de seguridad está en formato plano.
-X method--wal-method=method
Incluye los archivos WAL (write-ahead log) requeridos en la
copia de seguridad. Esto incluirá todos los registros de transacciones generados durante
la copia de seguridad. A menos que se especifique el método none,
es posible iniciar un postmaster en el directorio de
destino sin necesidad de consultar el archivo de WAL, lo que
convierte el resultado en una copia de seguridad completamente independiente.
Se admiten los siguientes métodos para recopilar los
registros de transacciones:
nnoneNo incluye los registros de transacciones en la copia de seguridad.
ffetchLos archivos de registro de transacciones se recopilan al final de la copia de seguridad. Por lo tanto, es necesario que el parámetro wal_keep_size del servidor de origen esté configurado en un valor lo suficientemente alto como para que los datos de registro requeridos no se eliminen antes del final de la copia de seguridad. Si los datos de registro requeridos se han reciclado antes de que llegue el momento de transferirlos, la copia de seguridad fallará y quedará inutilizable.
Cuando se utiliza el formato tar, los archivos de registro de transacciones se
incluirán en el archivo base.tar.
sstreamTransmite en flujo los datos del registro de transacciones mientras se realiza la copia de seguridad. Este método abrirá una segunda conexión al servidor y comenzará a transmitir el registro de transacciones en paralelo mientras se ejecuta la copia de seguridad. Por lo tanto, requerirá dos conexiones de replicación en lugar de una. Siempre que el cliente pueda mantener el ritmo de los datos del registro de transacciones, el uso de este método no requiere que se guarden registros de transacciones adicionales en el servidor de origen.
Cuando se utiliza el formato tar, los archivos de registro de transacciones se
escribirán en un archivo independiente llamado pg_wal.tar
(si el servidor es de una versión anterior a la 10, el archivo se llamará
pg_xlog.tar).
Este valor es el predeterminado.
-z--gzip
Habilita la compresión gzip de la salida del archivo tar, con el nivel de
compresión predeterminado. La compresión solo está disponible cuando se utiliza
el formato tar, y el sufijo .gz se
agregará automáticamente a todos los nombres de archivo tar.
-Z level-Z [{client|server}-]method[:detail]--compress=level--compress=[{client|server}-]method[:detail]
Solicita la compresión de la copia de seguridad. Si se incluye client o
server, especifica dónde se debe realizar la
compresión. Comprimir en el servidor reducirá el ancho de banda de transferencia,
pero aumentará el consumo de CPU del servidor. El valor predeterminado es
client, excepto cuando se utiliza --target.
En ese caso, la copia de seguridad no se envía al cliente, por lo que solo tiene
sentido la compresión en el servidor. Cuando se utiliza -Xstream,
que es el valor predeterminado, la compresión en el lado del servidor no se aplicará
al WAL. Para comprimir el WAL, utiliza la compresión en el lado del cliente o
especifica -Xfetch.
El método de compresión se puede establecer en gzip,
lz4, zstd,
none para que no haya compresión o un número entero (sin
compresión si es 0, gzip si es mayor que 0).
Opcionalmente, se puede especificar una cadena de detalle de compresión.
Si la cadena de detalle es un número entero, especifica el nivel de
compresión. De lo contrario, debe ser una lista de elementos separados por comas,
cada uno con la forma palabra clave o
palabra clave=valor.
Actualmente, las palabras clave admitidas son level,
long y workers.
La cadena de detalle no se puede utilizar cuando el método de compresión
se especifica como un entero simple.
Si no se especifica ningún nivel de compresión, se utilizará el nivel de compresión
predeterminado. Si solo se especifica un nivel sin mencionar un
algoritmo, se utilizará la compresión gzip si el
nivel es mayor que 0, y no se utilizará ninguna compresión si el nivel
es 0.
Cuando se utiliza el formato tar con gzip,
lz4 o zstd, el sufijo
.gz, .lz4 o
.zst, respectivamente, se agregará automáticamente a
todos los nombres de archivo tar. Cuando se utiliza el formato plano, no se puede
especificar la compresión en el lado del cliente, pero aún es posible solicitar
la compresión en el lado del servidor. Si se hace esto, el servidor comprimirá la
copia de seguridad para la transmisión, y el cliente la descomprimirá y la extraerá.
Cuando esta opción se utiliza en combinación con
-Xstream, pg_wal.tar se
comprimirá utilizando gzip si se selecciona la compresión gzip
en el lado del cliente, pero no se comprimirá si se selecciona cualquier otro
algoritmo de compresión, o si se selecciona la compresión en el lado del servidor.
Las siguientes opciones de línea de comandos controlan la generación de la copia de seguridad y la invocación del programa:
-c {fast|spread}--checkpoint={fast|spread}Establece el modo de punto de control a rápido (inmediato) o distribuido (spread, el valor predeterminado) (ver Section 25.3.4).
-C--create-slot
Especifica que el slot de replicación nombrado por la opción
--slot debe crearse antes de comenzar
la copia de seguridad. Se produce un error si el slot ya existe.
-l label--label=label
Establece la etiqueta para la copia de seguridad. Si no se especifica ninguna, se utilizará un valor predeterminado de
“pg_basebackup base backup”.
-n--no-clean
Por defecto, cuando pg_basebackup aborta con un
error, elimina cualquier directorio que pudiera haber creado antes de
descubrir que no puede terminar el trabajo (por ejemplo, el directorio de
destino y el directorio de registro de transacciones). Esta opción inhibe
la limpieza y, por lo tanto, es útil para la depuración.
Ten en cuenta que los directorios de los tablespaces no se limpian en ningún caso.
-N--no-sync
Por defecto, pg_basebackup esperará a que todos los archivos
se escriban de forma segura en el disco. Esta opción hace que
pg_basebackup devuelva el control sin esperar, lo que es
más rápido, pero significa que un fallo posterior del sistema operativo puede dejar
corrupta la copia de seguridad base. Generalmente, esta opción es útil para pruebas,
pero no debe utilizarse al crear una instalación de producción.
-P--progress
Habilita el informe de progreso. Activar esto ofrecerá un informe de progreso
aproximado durante la copia de seguridad. Dado que la base de datos puede cambiar durante
la copia de seguridad, esto es solo una aproximación y puede no terminar exactamente en el
100%. In particular, cuando se incluye el registro WAL en la
copia de seguridad, la cantidad total de datos no se puede estimar de antemano, y
en este caso el tamaño de destino estimado aumentará una vez que supere el
estimado total sin WAL.
-r rate--max-rate=rate
Establece la tasa máxima de transferencia a la que se recopilan los datos del
servidor de origen. Esto puede ser útil para limitar el impacto
de pg_basebackup en el servidor. Los valores
están en kilobytes por segundo. Usa un sufijo de M
para indicar megabytes por segundo. También se acepta un sufijo de k,
y no tiene ningún efecto. Los valores válidos están entre 32
kilobytes por segundo y 1024 megabytes por segundo.
Esta opción siempre afecta a la transferencia del directorio de datos. La transferencia de
archivos WAL solo se ve afectada si el método de recopilación
es fetch.
-S slotname--slot=slotname
Esta opción solo se puede utilizar junto con -X
stream. Hace que la transmisión de WAL utilice el slot de
replicación especificado. Si la copia de seguridad base está destinada a ser utilizada como un
standby de replicación en flujo utilizando un slot de replicación, el standby
debería utilizar el mismo nombre de slot de replicación que
primary_slot_name. Esto asegura que el
servidor primario no elimine ningún dato WAL necesario en el tiempo
transcurrido entre el final de la copia de seguridad base y el inicio de la replicación
en flujo en el nuevo standby.
El slot de replicación especificado debe existir a menos que
también se utilice la opción -C.
Si no se especifica esta opción y el servidor admite slots de replicación temporales (versión 10 y posteriores), se utiliza automáticamente un slot de replicación temporal para la transmisión de WAL.
--sync-method=method
Cuando se establece en fsync, que es el valor predeterminado,
pg_basebackup abrirá y sincronizará de forma recursiva
todos los archivos en el directorio de la copia de seguridad. Cuando se utiliza el formato plano, la
búsqueda de archivos seguirá los enlaces simbólicos para el directorio WAL y
cada tablespace configurado.
En Linux, se puede usar syncfs en su lugar para solicitar al
sistema operativo que sincronice todo el sistema de archivos que contiene el
directorio de copia de seguridad. Cuando se utiliza el formato plano,
pg_basebackup también sincronizará los sistemas de archivos
que contienen los archivos WAL y cada tablespace. Consulta
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.
-v--verboseHabilita el modo detallado (verbose). Mostrará algunos pasos adicionales durante el inicio y el apagado, así como el nombre exacto del archivo que se está procesando actualmente si el informe de progreso también está habilitado.
--manifest-checksums=algorithm
Especifica el algoritmo de suma de comprobación (checksum) que se debe aplicar a cada archivo
incluido en el manifiesto de la copia de seguridad. Actualmente, los algoritmos
disponibles son NONE, CRC32C,
SHA224, SHA256,
SHA384 y SHA512.
El valor predeterminado es CRC32C.
Si se selecciona NONE, el manifiesto de la copia de seguridad no
contendrá ninguna suma de comprobación. De lo contrario, contendrá una suma de comprobación
de cada archivo en la copia de seguridad utilizando el algoritmo especificado. Además,
el manifiesto siempre contendrá una suma de comprobación SHA256
de su propio contenido. Los algoritmos SHA son
significativamente más intensivos en CPU que CRC32C,
por lo que seleccionar uno de ellos puede aumentar el tiempo requerido para completar
la copia de seguridad.
El uso de una función de hash SHA proporciona un resumen criptográficamente seguro de cada archivo para los usuarios que deseen verificar que la copia de seguridad no ha sido alterada, mientras que el algoritmo CRC-32C proporciona una suma de comprobación que es mucho más rápida de calcular; es buena para detectar errores debidos a cambios accidentales pero no es resistente a modificaciones maliciosas. Ten en cuenta que, para que sea útil contra un adversario que tenga acceso a la copia de seguridad, el manifiesto de la copia de seguridad tendría que almacenarse de forma segura en otro lugar o de lo contrario verificar que no haya sido modificado desde que se realizó la copia de seguridad.
Se puede utilizar pg_verifybackup para comprobar la integridad de una copia de seguridad comparándola con el manifiesto de la copia de seguridad.
--manifest-force-encodeFuerza a que todos los nombres de archivo en el manifiesto de copia de seguridad estén codificados en hexadecimal. Si no se especifica esta opción, solo se codifican en hexadecimal los nombres de archivo que no sean UTF-8. Esta opción está pensada principalmente para probar que las herramientas que leen un archivo de manifiesto de copia de seguridad manejen correctamente este caso.
--no-estimate-size
Evita que el servidor estime la cantidad total
de datos de copia de seguridad que se transmitirán en flujo, lo que provoca que la
columna backup_total en la vista
pg_stat_progress_basebackup sea siempre
NULL.
Sin esta opción, la copia de seguridad comenzará enumerando el tamaño de toda la base de datos, y luego regresará y enviará los contenidos reales. Esto puede hacer que la copia de seguridad tarde un poco más y, en particular, tardará más tiempo antes de que se envíen los primeros datos. Esta opción es útil para evitar dicho tiempo de estimación si es demasiado largo.
Esta opción no está permitida cuando se utiliza --progress.
--no-manifestDesactiva la generación de un manifiesto de copia de seguridad. Si no se especifica esta opción, el servidor generará y enviará un manifiesto de copia de seguridad que se puede verificar utilizando pg_verifybackup. El manifiesto es una lista de todos los archivos presentes en la copia de seguridad con la excepción de los archivos WAL que puedan estar incluidos. También almacena el tamaño, la hora de la última modificación y una suma de comprobación opcional para cada archivo.
--no-slotEvita la creación de un slot de replicación temporal para la copia de seguridad.
Por defecto, si se selecciona la transmisión de registros pero no se proporciona ningún nombre de slot
con la opción -S, se crea un slot de replicación temporal
(si lo admite el servidor de origen).
El propósito principal de esta opción es permitir la realización de una copia de seguridad base cuando el servidor no tiene slots de replicación libres. Casi siempre es preferible utilizar un slot de replicación, porque evita que el servidor elimine los WAL necesarios durante la copia de seguridad.
--no-verify-checksumsDesactiva la verificación de las sumas de comprobación, si están habilitadas en el servidor del que se toma la copia de seguridad base.
Por defecto, se verifican las sumas de comprobación y los fallos en ellas darán como resultado
un estado de salida distinto de cero. Sin embargo, la copia de seguridad base no se eliminará
en tal caso, como si se hubiera utilizado la opción --no-clean. Los fallos de
verificación de sumas de comprobación también se informarán en la vista
pg_stat_database.
Las siguientes opciones de línea de comandos controlan la conexión con el servidor de origen:
-d connstr--dbname=connstrEspecifica los parámetros utilizados para conectarse al servidor, en forma de cadena de conexión; estos anularán cualquier opción de línea de comandos en conflicto.
Esta opción se llama --dbname por coherencia con otras
aplicaciones cliente, pero debido a que pg_basebackup
no se conecta a ninguna base de datos en particular en el clúster, cualquier nombre de base
de datos incluido en la cadena de conexión será ignorado por el servidor.
Sin embargo, un nombre de base de datos suministrado de esa manera anula el nombre de base
de datos predeterminado (replication) a efectos de buscar la contraseña de la conexión
de replicación en ~/.pgpass. Del mismo modo, el middleware o los proxies
utilizados para conectarse a PostgreSQL podrían utilizar el nombre a efectos
tales como el enrutamiento de conexiones. El nombre de la base de datos también puede ser utilizado
por la
sincronización de slots de replicación lógica.
-h host--host=host
Especifica el nombre de host de la máquina en la que se ejecuta el servidor.
Si el valor comienza con una barra diagonal, se utiliza como el directorio para un
socket de dominio Unix. El valor predeterminado se toma de la variable de entorno
PGHOST, si está configurada; de lo contrario, se intenta una conexión por
socket de dominio Unix.
-p port--port=port
Especifica el puerto TCP o la extensión del archivo del socket de dominio Unix local
en el que el servidor escucha las conexiones.
El valor predeterminado es la variable de entorno PGPORT, si está
configurada, o un valor predeterminado compilado.
-s interval--status-interval=intervalEspecifica el número de segundos entre los paquetes de estado enviados de vuelta al servidor de origen. Los valores más pequeños permiten un control más preciso del progreso de la copia de seguridad desde el servidor. Un valor de cero desactiva por completo las actualizaciones de estado periódicas, aunque se seguirá enviando una actualización cuando lo solicite el servidor para evitar desconexiones por tiempo de espera (timeout). El valor predeterminado es 10 segundos.
-U username--username=usernameEspecifica el nombre de usuario con el que conectarse.
-w--no-password
Evita que se solicite una contraseña. Si el servidor requiere autenticación por contraseña
y no hay una contraseña disponible por otros medios como un archivo .pgpass,
el intento de conexión fallará. Esta opción puede ser útil en trabajos por lotes y
scripts donde no hay ningún usuario presente para introducir una contraseña.
-W--passwordFuerza a pg_basebackup a solicitar una contraseña antes de conectarse al servidor de origen.
Esta opción nunca es indispensable, ya que
pg_basebackup solicitará automáticamente una
contraseña si el servidor requiere autenticación por contraseña. Sin embargo,
pg_basebackup desperdiciará un intento de conexión
para descubrir que el servidor requiere una contraseña. En algunos casos, vale
la pena escribir -W para evitar el intento de conexión adicional.
También están disponibles otras opciones:
-V--versionMuestra la versión de pg_basebackup y termina.
-?--helpMuestra ayuda sobre los argumentos de línea de comandos de pg_basebackup y termina.
Esta utilidad, al igual que la mayoría de las demás utilidades de PostgreSQL, utiliza las variables de entorno admitidas por libpq (ver Section 32.15).
La variable de entorno PG_COLOR especifica si se debe usar color
en los mensajes de diagnóstico. Los valores posibles son
always, auto y
never.
Al principio de la copia de seguridad, se debe realizar un punto de control (checkpoint) en el
servidor de origen. Esto puede llevar algún tiempo (especialmente si no se utiliza la opción
--checkpoint=fast), durante el cual
pg_basebackup parecerá estar inactivo.
La copia de seguridad incluirá todos los archivos del directorio de datos y de los tablespaces, incluidos los archivos de configuración y cualquier archivo adicional colocado en el directorio por terceros, excepto ciertos archivos temporales gestionados por PostgreSQL y archivos del sistema operativo. Pero solo se copian los archivos y directorios ordinarios, a excepción de que se conservan los enlaces simbólicos utilizados para los tablespaces. Los enlaces simbólicos que apuntan a ciertos directorios conocidos por PostgreSQL se copian como directorios vacíos. Se omiten otros enlaces simbólicos y archivos de dispositivos especiales. Consulta Section 54.4 para obtener los detalles precisos.
En el formato plano, los tablespaces se respaldarán en la misma ruta que tienen en el servidor
de origen, a menos que se utilice la opción --tablespace-mapping.
Sin esta opción, ejecutar una copia de seguridad base en formato plano en el mismo host que el
servidor no funcionará si hay tablespaces en uso, porque la copia de seguridad tendría que
escribirse en las mismas ubicaciones de directorio que los tablespaces originales.
Cuando se utiliza el formato tar, es responsabilidad del usuario desempaquetar cada archivo tar
antes de iniciar un servidor PostgreSQL que utilice los datos. Si hay tablespaces adicionales,
los archivos tar correspondientes a ellos deben desempaquetarse en las ubicaciones correctas. En este
caso, los enlaces simbólicos para esos tablespaces serán creados por el servidor de acuerdo con
el contenido del archivo tablespace_map que se incluye en el archivo
base.tar.
pg_basebackup funciona con servidores de la misma versión principal o
anterior, hasta la 9.1. Sin embargo, el modo de transmisión de WAL (-X stream)
solo funciona con la versión del servidor 9.3 y posteriores, el formato tar
(--format=tar) solo funciona con la versión del servidor 9.5 y posteriores,
y la copia de seguridad incremental (--incremental) solo funciona con la versión
del servidor 17 y posteriores.
pg_basebackup conservará los permisos de grupo para los archivos de datos si los permisos de grupo están habilitados en el clúster de origen.
Para crear una copia de seguridad base del servidor en mydbserver
y almacenarla en el directorio local /usr/local/pgsql/data:
$pg_basebackup -h mydbserver -D /usr/local/pgsql/data
Para crear una copia de seguridad del servidor local con un archivo tar comprimido para
cada tablespace, y almacenarlo en el directorio backup, mostrando un
informe de progreso durante la ejecución:
$pg_basebackup -D backup -Ft -z -P
Para crear una copia de seguridad de una base de datos local con un único tablespace y comprimir esta con bzip2:
$pg_basebackup -D - -Ft -X fetch | bzip2 > backup.tar.bz2
(Este comando fallará si hay múltiples tablespaces en la base de datos).
Para crear una copia de seguridad de una base de datos local donde el tablespace en
/opt/ts se reubica a ./backup/ts:
$pg_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts
Para crear una copia de seguridad del servidor local con un archivo tar para cada tablespace
comprimido con gzip en el nivel 9, almacenado en el
directorio backup:
$pg_basebackup -D backup -Ft --compress=gzip:9