Tengo que actualizar de PostgreSQL 9.2 a 9.6. Los siguientes son los desafíos que enfrento:
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?
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.
fuente
Respuestas:
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.
fuente
pg_upgrade
. Tomó minutos (en maestro y esclavo combinados), mientras que tomar un basurero solo necesita más de 3 horas.pg_upgrade
.