pg_recvlogical — controla los flujos de decodificación lógica de PostgreSQL
pg_recvlogical [option...]
pg_recvlogical controla las ranuras (slots) de replicación
de decodificación lógica y transmite en flujo datos desde dichas ranuras de replicación.
Crea una conexión en modo replicación, por lo que está sujeto a las mismas restricciones que pg_receivewal, además de las de replicación lógica (véase Chapter 47).
pg_recvlogical no tiene un equivalente a los modos peek
y get de la interfaz SQL de decodificación lógica. Envía confirmaciones de
reproducción de datos de manera perezosa (lazily) a medida que los recibe y al terminar
de forma limpia. Para examinar los datos pendientes en una ranura sin consumirlos, utiliza
pg_logical_slot_peek_changes.
En ausencia de errores fatales, pg_recvlogical se ejecutará hasta que sea terminado por la señal SIGINT (Control+C) o la señal SIGTERM.
Cuando pg_recvlogical recibe
una señal SIGHUP, cierra el archivo de salida actual
y abre uno nuevo utilizando el nombre de archivo especificado por
la opción --file. Esto permite rotar
el archivo de salida renombrando primero el archivo actual y luego enviando
una señal SIGHUP a
pg_recvlogical.
Se debe especificar al menos una de las siguientes opciones para seleccionar una acción:
--create-slot
Crea una nueva ranura (slot) de replicación lógica con el nombre especificado por
--slot, utilizando el plugin de salida especificado por
--plugin, para la base de datos especificada
por --dbname.
Las opciones --slot y --dbname son obligatorias
para esta acción.
Las opciones --enable-two-phase y --enable-failover
se pueden especificar con --create-slot.
--drop-slot
Elimina la ranura (slot) de replicación con el nombre especificado
por --slot, luego termina.
La opción --slot es obligatoria para esta acción.
--start
Comienza a transmitir en flujo los cambios desde la ranura (slot) de replicación lógica especificada
por --slot, continuando hasta que sea terminado por una
señal. Si la transmisión de cambios del lado del servidor finaliza con un apagado
o desconexión del servidor, reintenta en un bucle a menos que
se especifique --no-loop.
Las opciones --slot, --dbname y
--file son obligatorias para esta acción.
El formato del flujo está determinado por el plugin de salida especificado cuando se creó la ranura.
La conexión debe realizarse a la misma base de datos utilizada para crear la ranura.
Se pueden especificar juntas las opciones --create-slot y --start.
--drop-slot no se puede combinar con otra acción.
Las siguientes opciones de línea de comandos controlan la ubicación y el formato de la salida y otros comportamientos de replicación:
-E lsn--endpos=lsn
En el modo --start, detiene automáticamente la replicación
y termina con un estado de salida normal 0 cuando la recepción alcanza el
LSN especificado. Si se especifica cuando no se está en el modo --start,
se produce un error.
Si hay un registro con un LSN exactamente igual a lsn,
el registro se enviará a la salida.
La opción --endpos no tiene en cuenta los límites de las transacciones
y puede truncar la salida a mitad de una transacción. Cualquier transacción parcialmente
enviada a la salida no se consumirá y se volverá a reproducir cuando se lea de nuevo de la ranura.
Los mensajes individuales nunca se truncan.
--enable-failover
Permite que la ranura (slot) se sincronice con los servidores en espera (standbys). Esta opción solo
se puede especificar con --create-slot.
-f filename--file=filename
Escribe los datos de transacción recibidos y decodificados en este
archivo. Utiliza - para la salida estándar (stdout).
Este parámetro es obligatorio para --start.
-F interval_seconds--fsync-interval=interval_seconds
Especifica con qué frecuencia pg_recvlogical debe
realizar llamadas fsync() para asegurar que el archivo de salida se
vuelque de forma segura al disco.
El servidor solicitará ocasionalmente al cliente que realice un volcado y reporte la posición de volcado al servidor. Esta configuración es adicional a eso, para realizar volcados con mayor frecuencia.
Especificar un intervalo de 0 desactiva por completo
la realización de llamadas fsync(), aunque se siga
reportando el progreso al servidor. En este caso, se podrían perder datos en
caso de una caída del sistema.
-I lsn--startpos=lsn
En el modo --start, inicia la replicación desde el LSN proporcionado.
Para obtener detalles sobre el efecto de esto, consulta la documentación
en Chapter 47
y Section 54.4. Se ignora en otros modos.
--if-not-exists
No genera un error cuando se especifica --create-slot
y ya existe una ranura con el nombre especificado.
-n--no-loopCuando se pierde la conexión con el servidor, no reintenta en un bucle, sino que simplemente termina.
-o name[=value]--option=name[=value]
Pasa la opción name al plugin de salida con,
si se especifica, el valor de opción value. Las
opciones que existen y sus efectos dependen del plugin de salida utilizado.
-P plugin--plugin=pluginAl crear una ranura, utiliza el plugin de salida de decodificación lógica especificado. Véase Chapter 47. Esta opción no tiene efecto si la ranura ya existe.
-s interval_seconds--status-interval=interval_secondsEsta opción tiene el mismo efecto que la opción del mismo nombre en pg_receivewal. Véase la descripción allí.
-S slot_name--slot=slot_name
En el modo --start, utiliza la ranura de replicación lógica existente llamada
slot_name. En el modo --create-slot,
crea la ranura con este nombre. En el modo --drop-slot,
elimina la ranura con este nombre.
Este parámetro es obligatorio para cualquiera de las acciones.
-t--enable-two-phase--two-phase (obsoleto)
Activa la decodificación de transacciones preparadas. Esta opción solo se puede especificar con
--create-slot.
-v--verboseActiva el modo detallado.
Las siguientes opciones de línea de comandos controlan los parámetros de conexión a la base de datos.
-d dbname--dbname=dbname
La base de datos a la que conectarse. Consulta la descripción
de las acciones para ver qué significa esto en detalle.
El dbname puede ser una cadena de conexión. Si es así, los
parámetros de la cadena de conexión anularán cualquier opción de línea
de comandos en conflicto.
Este parámetro es obligatorio para --create-slot
y --start.
-h hostname-or-ip--host=hostname-or-ip
Especifica el nombre de host de la máquina en la que se está
ejecutando el servidor. Si el valor comienza con una barra diagonal,
se utiliza como el directorio para el socket de dominio Unix. El
valor predeterminado se toma de la variable de entorno PGHOST,
si está establecida; 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 de socket de
dominio Unix local en el que el servidor está escuchando conexiones.
El valor por defecto es el de la variable de entorno PGPORT,
si está establecida, o un valor predeterminado en tiempo de compilación.
-U user--username=userNombre de usuario con el que conectarse. Por defecto es el nombre de usuario del sistema operativo actual.
-w--no-password
Nunca solicita 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
tareas por lotes (batch) y scripts donde no hay ningún usuario
presente para introducir una contraseña.
-W--passwordFuerza a pg_recvlogical a solicitar una contraseña antes de conectarse a una base de datos.
Esta opción nunca es imprescindible, ya que
pg_recvlogical solicitará automáticamente una
contraseña si el servidor exige autenticación por contraseña.
Sin embargo, pg_recvlogical 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 las siguientes opciones adicionales:
-V--versionMuestra la versión de pg_recvlogical y termina.
-?--helpMuestra la ayuda sobre los argumentos de línea de comandos de pg_recvlogical y termina.
pg_recvlogical terminará con el estado 0 cuando sea finalizado por la señal SIGINT o SIGTERM. (Esa es la forma normal de terminarlo. Por lo tanto, no es un error). Para errores fatales u otras señales, el estado de salida será distinto de cero.
Esta utilidad, al igual que la mayoría de las otras utilidades de PostgreSQL, utiliza las variables de entorno admitidas por libpq (véase 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.
pg_recvlogical conservará los permisos de grupo en los archivos WAL recibidos si los permisos de grupo están habilitados en el clúster de origen.
Véase un ejemplo en Section 47.1.