PostgreSQL 9.2 - 9.6 actualización con cero tiempo de inactividad

9

Tengo que actualizar de PostgreSQL 9.2 a 9.6. Los siguientes son los desafíos que enfrento:

  1. Dado que tenemos la configuración de replicación de transmisión, y PostgreSQL no admite la actualización de versión inferior a superior cuando está en modo de replicación de transmisión, cuando actualizo el maestro tengo que reconstruir los esclavos y eso lleva 3 horas. No tengo tiempo de sobra. En cualquier momento necesitamos un esclavo y un maestro disponibles. ¿Hay alguna otra forma de actualizar sin tener que reconstruir los esclavos, utilizando la replicación de transmisión?

  2. Para construir una replicación lógica, pensamos en usar slony, pero slony tiene algunas limitaciones, ya que no se replica automáticamente:

    • Cambios en objetos grandes (BLOBS)
    • Cambios realizados por los comandos DDL
    • Cambios en usuarios y roles
      ... y nuestra aplicación tiene comandos continuos de creación. Entonces no podemos usar slony.

Sugiera algo para evitar la reconstrucción de esclavos y actualizar con un tiempo de inactividad mínimo y un maestro y un esclavo listos.

Prabhat
fuente
3
Los mismos problemas que le impiden usar Slony le impedirán usar otras herramientas como Bucardo, Londiste, pglogical, etc. Tendrá que adaptar la aplicación, para que no haga las creaciones continuas. Y sí, los LOB serán un problema.
Craig Ringer el

Respuestas:

1

La actualización de una base de datos necesitará tiempo de inactividad en sus servidores. Para minimizar el tiempo de inactividad, le sugiero que instale la versión más nueva en un nuevo servidor, cree una configuración de replicación y descargue todos los datos de la instancia anterior aquí, y cambie la orientación del servidor para que la aplicación apunte al nuevo servidor para conectarse a la base de datos.

Lohit Gupta
fuente
2
Bueno, recientemente actualizamos una base de datos de 9 TB de 9.3 a 9.6, usando pg_upgrade. Tomó minutos (en maestro y esclavo combinados), mientras que tomar un basurero solo necesita más de 3 horas.
dezso
Pero tomar el basurero no necesita tiempo de inactividad.
Lohit Gupta
Absolutamente, lo que quise decir (y olvidé agregar) fue que restaurar la copia de seguridad lleva más o menos el mismo tiempo que tomarla, lo que significa algunos de nuestros tiempos de inactividad en nuestro caso.
dezso
Gracias por la sugerencia, así que lo que estaba haciendo era actualizar el maestro y reconstruir el esclavo, ¿es este el procedimiento correcto
Prabhat
1
El paso 2 no funcionará. El formato WAL no es compatible entre las versiones principales, de ahí la necesidad de hacerlo pg_upgrade.
dezso