Este es el comando pg_rewind que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
pg_rewind: sincroniza un directorio de datos de PostgreSQL con otro directorio de datos que
bifurcado desde el primero
SINOPSIS
pg_rebobinar [opción...] {-D | --objetivo-pgdata} directorio {--source-pgdata =directorio |
--source-server =control}
DESCRIPCIÓN
pg_rewind es una herramienta para sincronizar un clúster de PostgreSQL con otra copia del mismo
clúster, después de que las líneas de tiempo de los clústeres hayan divergido. Un escenario típico es traer un
el antiguo servidor maestro vuelve a estar en línea después de la conmutación por error, como un modo de espera que sigue al nuevo maestro.
El resultado es equivalente a reemplazar el directorio de datos de destino con el de origen. Todos
Se copian los archivos, incluidos los archivos de configuración. La ventaja de pg_rewind sobre tomar un
nueva copia de seguridad base, o herramientas como rsync, es que pg_rewind no requiere leer
todos los archivos sin cambios en el clúster. Eso lo hace mucho más rápido cuando la base de datos es grande.
y solo una pequeña parte difiere entre los grupos.
pg_rewind examina los historiales de la línea de tiempo de los clústeres de origen y destino para determinar
el punto donde divergieron, y espera encontrar WAL en el pg_xlog del clúster de destino
directorio que llega hasta el punto de divergencia. En la típica conmutación por error
escenario donde el clúster de destino se cerró poco después de la divergencia, eso no es un
problema, pero si el clúster de destino se había ejecutado durante mucho tiempo después de la divergencia, el antiguo
Es posible que los archivos WAL ya no estén presentes. En ese caso, se pueden copiar manualmente desde el
Archivo WAL en el directorio pg_xlog. Recuperando archivos faltantes de un archivo WAL
automáticamente no es compatible actualmente.
Cuando el servidor de destino se inicia por primera vez después de ejecutar pg_rewind,
entrar en modo de recuperación y reproducir todos los WAL generados en el servidor de origen después del punto de
divergencia. Si parte de WAL ya no estaba disponible en el servidor de origen cuando pg_rewind
se ejecutó y, por lo tanto, la sesión pg_rewind no pudo copiarlo, debe realizarse
disponible cuando se inicia el servidor de destino. Eso se puede hacer creando un
recovery.conf archivo en el directorio de datos de destino con un adecuado restaurar_comando.
pg_rewind requiere que el servidor de destino tenga habilitada la opción wal_log_hints
en postgresql.conf o que las sumas de comprobación de datos estaban habilitadas cuando se inicializó el clúster
con initdb. Ninguno de estos está activado de forma predeterminada. full_page_writes también debe ser
activado. Ese es el valor predeterminado.
OPCIONES
pg_rewind acepta los siguientes argumentos de la línea de comandos:
-D directorio
--target-pgdata =directorio
Esta opción especifica el directorio de datos de destino que está sincronizado con el origen.
El servidor de destino debe cerrarse limpiamente antes de ejecutar pg_rewind
--source-pgdata =directorio
Especifica la ruta al directorio de datos del servidor de origen, para sincronizar el destino.
con. Cuando --fuente-pgdata se utiliza, el servidor de origen debe cerrarse limpiamente.
--source-server =control
Especifica una cadena de conexión libpq para conectarse al servidor PostgreSQL de origen
sincronizar el objetivo con. La conexión debe ser normal (no replicación)
conexión con acceso de superusuario. El servidor debe estar en funcionamiento y no debe estar
en modo de recuperación.
-n
- corrida en seco
Haga todo menos modificar el directorio de destino.
-P
--Progreso
Habilita los informes de progreso. Activar esto proporcionará un progreso aproximado
informe mientras copia datos del clúster de origen.
--depurar
Imprima una salida de depuración detallada que es principalmente útil para la depuración de desarrolladores
pg_rebobinar.
-V
--versión
Muestre la información de la versión, luego salga.
-?
--ayuda
Muestre ayuda, luego salga.
MEDIO AMBIENTE
Cuándo --fuente-servidor se usa la opción, pg_rewind también usa las variables de entorno
compatible con libpq (consulte la Sección 31.14, “Variables de entorno”, en la documentación).
NOTAS
Cómo it funciona
La idea básica es copiar todo, desde el nuevo clúster al antiguo, excepto
los bloques que sabemos que son iguales.
1. Escanee el registro WAL del clúster antiguo, comenzando desde el último punto de control antes de la
punto donde el historial de la línea de tiempo del nuevo clúster se bifurcó del clúster anterior. Para
cada registro WAL, tome nota de los bloques de datos que se tocaron. Esto produce una lista
de todos los bloques de datos que se cambiaron en el clúster antiguo, después del nuevo clúster
bifurcado.
2. Copie todos los bloques modificados del nuevo clúster al antiguo.
3. Copie todos los demás archivos, como los archivos de configuración y obstrucciones, del nuevo clúster al
clúster antiguo, todo excepto los archivos de relación.
4. Aplique la WAL del nuevo clúster, comenzando desde el punto de control creado en la conmutación por error.
(Estrictamente hablando, pg_rewind no aplica el WAL, solo crea una etiqueta de respaldo
archivo que indica que cuando se inicia PostgreSQL, comenzará a reproducirse desde ese
punto de control y aplique todo el WAL requerido).
Use pg_rewind en línea usando los servicios de onworks.net