Base de datos PostrageSQL: actualización de un clúster de PostgreSQL

18.6. Actualización de un clúster de PostgreSQL

En esta sección se explica cómo actualizar los datos de su base de datos de una distribución PostgreSQL a una distribución más nueva.

El número de versión actual de PostgreSQL consta de un número de versión principal y un número de versión secundario. Por ejemplo, en el número de versión 10.1, 10 es el número de versión principal y 1 es el número de versión secundaria, lo que significa que esta será la primera versión secundaria de la versión principal 10. Para las versiones anteriores a la versión 10.0 de PostgreSQL, el número de versión consta de tres números, como 9.5.3. En estos casos, la versión principal consta de los primeros dos grupos de dígitos del número de versión (por ejemplo, 9.5) y la versión secundaria es el tercer número, por ejemplo 3, lo que significa que será la tercera versión secundaria de la versión principal 9.5.

Las versiones menores nunca cambian el formato de almacenamiento interno y siempre son compatibles hacia adelante y hacia atrás con las versiones menores en el mismo número de versión principal. Por ejemplo, la versión 10.1 es compatible con la versión 10.0 y la versión 10.6. Del mismo modo, por ejemplo, 9.5.3 es compatible con 9.5.0, 9.5.1 y 9.5.6. Para actualizar entre versiones compatibles, simplemente necesita reemplazar el archivo ejecutable cuando el servidor se apaga y reiniciar el servidor. El directorio de datos sigue siendo el mismo: las actualizaciones menores son tan simples como eso.

Para la versión principal de PostgreSQL, el formato de almacenamiento de datos interno a menudo se cambia, lo que complica la actualización. El método tradicional de mover datos a una nueva versión principal es volcarlos y volverlos a cargar en la base de datos, pero esto puede ser lento. Una forma más rápida es pg_upgrade. Como se explica a continuación, el método de replicación también se puede utilizar para actualizaciones.

La nueva versión principal también suele introducir alguna incompatibilidad visible para el usuario, por lo que puede requerir cambios en la programación de la aplicación. Todos los cambios visibles para el usuario se enumeran en las notas de la versión (Apéndice E); preste especial atención a la sección marcada "Migración". Si está actualizando en varias versiones principales, asegúrese de leer las notas de la versión de cada versión intermedia.

Los usuarios cuidadosos querrán probar su aplicación cliente en la nueva versión antes de cambiar completamente. Por lo tanto, suele ser una buena idea crear una instalación coexistente de las versiones antigua y nueva. Al probar una actualización importante de PostgreSQL, considere las siguientes categorías de cambios posibles:

Administración
Las funciones de los administradores para monitorear y controlar el servidor a menudo se cambian y se agregan en cada versión principal.

SQL
generalmente incluye nuevas funciones de comando SQL y ningún cambio de comportamiento, a menos que se mencione específicamente en las notas de la versión.

La API de la biblioteca
generalmente agrega nuevas funciones a bibliotecas como libpq, a menos que se mencione específicamente en las notas de la versión.

Catálogo del
sistema Los cambios en el catálogo del sistema generalmente solo afectan a las herramientas de administración de la base de datos.

API de lenguaje C del servidor
Esto implica cambios en la API de la función back-end, que está escrita en el lenguaje de programación C. Estos cambios afectan el código que hace referencia a las funciones internas del servidor.

18.6.1. Actualización de datos mediante pg_dumpall

Un método de actualización es volcar los datos de una versión principal de PostgreSQL y volver a cargarlos en otra versión principal; para hacer esto, debe usar una herramienta de respaldo lógica como pg_dumpall, el método de respaldo a nivel del sistema de archivos no funcionará. Útil (esto también le impide usar un directorio de datos con una versión incompatible de PostgreSQL, por lo que intentar iniciar una versión de servidor incorrecta en un directorio de datos no causará mucho daño).

Le recomendamos que utilice los programas pg_dump y pg_dumpall de versiones más recientes de PostgreSQL, para que pueda aprovechar las posibles mejoras en estos programas. El programa de volcado publicado actualmente puede leer los datos en cualquier servidor con la versión 7.0 y superior.

Estas instrucciones asumen que su instalación existente está en el directorio / usr / local / pgsql y el área de datos está ahí /usr/local/pgsql/data. Sustituya su ruta de forma apropiada.

  1. Si está creando una copia de seguridad, asegúrese de que su base de datos no se esté actualizando. Esto no afectará la integridad de la copia de seguridad, pero, por supuesto, esos cambios no se incluirán en la copia de seguridad. Si es necesario, edite /usr/local/pgsql/data/pg_hba.conflos permisos en el archivo (o un método equivalente) para no permitir que nadie más que usted use la base de datos. Consulte el Capítulo 20 para obtener información adicional sobre el control de acceso.

Para hacer una copia de seguridad de la instalación de su base de datos, escriba:

pg_dumpall > outputfile

Para hacer una copia de seguridad, puede usar el comando pg_dumpall de la versión que está ejecutando, consulte la Sección 25.1.2 para obtener más detalles. Sin embargo, para obtener los mejores resultados, intente usar el comando pg_dumpall de PostgreSQL 11.2, porque esta versión contiene correcciones de errores y mejoras a la versión anterior. Aunque esta sugerencia puede parecer extraña porque aún no ha instalado la nueva versión, es aconsejable seguir esta sugerencia si planea instalar la nueva versión en paralelo. En este caso, puede completar la instalación normalmente y transferir los datos más tarde. Esto también reducirá el tiempo de inactividad.

  1. Apague el servidor antiguo:
pg_ctl stop

En sistemas que inician PostgreSQL automáticamente, puede haber un archivo de inicio que logrará lo mismo. Por ejemplo, en un sistema Red Hat Linux, descubriremos que esto también funciona: /etc/rc.d/init.d/postgresql stopconsulte el Capítulo 18 para obtener detalles sobre cómo iniciar y detener el servidor.

  1. Si realiza la restauración desde una copia de seguridad, cambie el nombre o elimine el directorio de instalación anterior (si no es para una versión específica). Es una buena idea cambiar el nombre del directorio, no eliminarlo, porque si se encuentra con un problema y necesita volver a él, todavía existe. Recuerde que este directorio puede consumir una cantidad considerable de espacio en disco. Para cambiar el nombre del directorio, use un comando similar: mv /usr/local/pgsql /usr/local/pgsql.old(tenga en cuenta que el directorio se mueve como una sola unidad para que la ruta relativa no se modifique).
  2. Instale la nueva versión de PostgreSQL en la Sección 16.4
  3. Si es necesario, cree un nuevo clúster de base de datos. Recuerde que debe ejecutar estos comandos al iniciar sesión en una cuenta de usuario de base de datos especial (si está actualizando, ya tiene esta cuenta)./usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  4. Restaure su pg_hba.conf anterior y cualquier modificación de postgresql.conf.
  5. Para iniciar el servidor de la base de datos, utilice también una cuenta de usuario de base de datos especial:/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  6. Finalmente, use el nuevo psql para restaurar sus datos desde la copia de seguridad: /usr/local/pgsql/bin/psql -d postgres -f outputfileinstale el nuevo servidor en un directorio diferente y ejecute los servidores antiguo y nuevo en diferentes puertos en paralelo para lograr el menor tiempo de inactividad. Entonces puedes usarlo así: pg_dumpall -p 5432 | psql -d postgres -p 5433para transferir tus datos.

18.6.2. Actualización de datos mediante pg_upgrade

El módulo pg_upgrade permite que una instalación se actualice "en el lugar" de una versión principal de PostgreSQL a otra versión principal. La actualización se puede realizar en unos minutos, especialmente cuando se usa el modo –link. Requiere pasos similares a pg_dumpall anterior, como iniciar / detener el servidor y ejecutar initdb. La documentación de pg_upgrade describe los pasos necesarios.

18.6.3. Actualizar datos copiando

También puede utilizar la versión actualizada de la replicación lógica de PostgreSQL para crear un servidor de respaldo. La replicación lógica admite la replicación entre diferentes versiones principales de PostgreSQL. El servidor de respaldo puede estar en la misma computadora o en una computadora diferente.

Una vez que esté sincronizado con el servidor principal (que ejecuta la versión anterior de PostgreSQL), puede cambiar el host y usar el servidor de respaldo como host, y luego cerrar la instancia de base de datos anterior. Tal interruptor hace que el tiempo de inactividad de una actualización sea de solo unos segundos. Este método de actualización puede utilizar herramientas de replicación lógica integradas y sistemas de replicación lógica externos como pglogical, Slony, Londiste y Bucardo.

Supongo que te gusta

Origin blog.csdn.net/weixin_42528266/article/details/108593598
Recomendado
Clasificación