Saltar al contenido

Cómo mover un directorio de datos PostgreSQL a un nuevo lugar en Ubuntu 18.04

marzo 4, 2020

 

Introducción

bases de datos crecen con el tiempo, a veces superando el espacio en su sistema de archivos original. Cuando se encuentren en la misma partición que el resto del sistema operativo, esto también puede conducir potencialmente a la contención de E / S.

RAID, almacenamiento de bloques de la red y otros dispositivos pueden ofrecer redundancia y mejorar la escalabilidad, junto con otras características deseables. Si va a añadir más espacio, evaluando formas de optimizar el rendimiento, o en busca de aprovechar otras características de almacenamiento, este tutorial le guiará a través de la reubicación del directorio de datos PostgreSQL.

Requisitos previos

Para completar esta guía, necesitará:

  • Un servidor de Ubuntu 18.04 con un usuario no root con privilegios sudo. Se puede obtener más información sobre cómo configurar un usuario con privilegios de estos en nuestra configuración inicial del servidor con Ubuntu 18.04 guía.
  • PostgreSQL instalado en su servidor. Si aún no lo ha configurado la operación, la forma de instalar y uso de PostgreSQL en Ubuntu 18.04 guía puede ayudarle.

Una Ubuntu 18.04 servidor con un usuario no root con privilegios sudo. Se puede obtener más información sobre cómo configurar un usuario con privilegios de estos en nuestra configuración inicial del servidor con Ubuntu 18.04 guía.

PostgreSQL instalado en su servidor. Si aún no lo ha configurado la operación, la forma de instalar y uso de PostgreSQL en Ubuntu 18.04 guía puede ayudarle.

En este ejemplo, nos estamos moviendo los datos a un almacenamiento de bloques dispositivo montado en / mnt / volume_nyc1_01. Si está utilizando el bloque de almacenamiento digitalocean, esta guía puede ayudarle a montar su volumen antes de continuar con este tutorial.

Independientemente de lo que el almacenamiento subyacente que utiliza, sin embargo, los siguientes pasos pueden ayudarle a mover el directorio de datos a una nueva ubicación.

Paso 1 – Traslado de la PostgreSQL datos Directorio

Antes de empezar con el movimiento del directorio de datos PostgreSQL, vamos a verificar la ubicación actual iniciando una sesión interactiva de PostgreSQL. En el siguiente comando, psql es el comando para entrar en el monitor interactivo y -u postgres indica a sudo para ejecutar psql como del sistema de usuario postgres :

sudo -u postgres psql

  • sudo -u postgres psql

vez que tenga el PostgreSQL pronta abierto, utilice el siguiente comando para mostrar el directorio de datos actual:

SHOW data_directory;

  • mOSTRAR data_directory;

Output data_directory
------------------------------
/var/lib/postgresql/10/main
(1 row)

confirma esta salida que PostgreSQL está configurado para utilizar el directorio de datos predeterminado / var / lib / postgresql / 10 / principal, por lo que es el directorio tenemos que avanzar. Una vez que haya confirmado el directorio del sistema, escriba q y presione ENTRAR para cerrar el símbolo del sistema PostgreSQL.

Para garantizar la integridad de los datos, deja de PostgreSQL antes de que realmente haga cambios en el directorio de datos:

sudo systemctl stop postgresql

  • sudo parada systemctl PostgreSQL

systemctl no muestra el resultado de todos los comandos de gestión de servicios. Para comprobar que ha detenido correctamente el servicio, use el siguiente comando:

sudo systemctl status postgresql

  • sudo PostgreSQL estado systemctl

La última línea de la salida debe decirle que PostgreSQL se ha detenido:

Output. . .
Jul 12 15:22:44 ubuntu-512mb-nyc1-01 systemd[1]: Stopped PostgreSQL RDBMS.

Ahora que el servidor PostgreSQL se apagará, copiaremos el directorio de base de datos existente a la nueva ubicación con rsync. Utilizando el indicador -a conserva los permisos y otras propiedades del directorio, mientras que -v proporciona verbosa de salida para que pueda seguir el progreso. Vamos a empezar el rsync desde el directorio de PostgreSQL con el fin de imitar la estructura de directorios original en la nueva ubicación. Mediante la creación de ese directorio PostgreSQL en el directorio de punto de montaje y la retención de la propiedad por parte del usuario de PostgreSQL, podemos evitar problemas de permisos para futuras actualizaciones.

Nota: Asegúrese de que no hay barra final en el directorio, que se puede añadir si se utiliza la implementación del tabulador. Si no incluye una barra diagonal, rsync volcar el contenido del directorio en el punto en lugar de copiar el directorio mismo montaje.

El directorio de la versión, 10, no es estrictamente necesario, ya que hemos definido la ubicación de manera explícita en el archivo postgresql.conf, pero siguiendo la convención proyecto sin duda no le hará daño, sobre todo si hay una necesidad en el futuro para ejecutar múltiples versiones de PostgreSQL:

sudo rsync -av /var/lib/postgresql /mnt/volume_nyc1_01

  • sudo rsync -av / var / lib / postgresql / mnt / volume_nyc1_01

una vez que se complete la copia, vamos a cambiar el nombre de la carpeta actual con una extensión .bak y mantenerlo hasta que hayamos confirmó que la medida se ha realizado correctamente. Esto ayudará a evitar confusiones que podrían surgir de tener directorios con nombres similares en la nueva y la antigua ubicación:

sudo mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.bak

  • sudo mv / var / lib / postgresql / 10 / main / var / lib / postgresql / 10 / main bak

Ahora estamos listos para configurar PostgreSQL para acceder al directorio de datos en su nueva ubicación.

Paso 2 – Apuntando a la nueva ubicación de datos

Por defecto, el data_directory se establece en / var / lib / postgresql / 10 / principal en el archivo /etc/postgresql/10/main/postgresql.conf. Editar este archivo para reflejar el nuevo directorio de datos:

sudo nano /etc/postgresql/10/main/postgresql.conf

  • sudo nano /etc/postgresql/10/main/postgresql.conf

busque la línea que comienza con data_directory y cambiar el camino que sigue para reflejar la nueva ubicación. En el contexto de este tutorial, la directiva actualizada se vería así:

. . .
data_directory = '/mnt/volume_nyc1_01/postgresql/10/main'
. . .

Guardar y cerrar el archivo presionando CTRL + X, Y, a continuación, ENTER. Esto es todo lo que necesita hacer para configurar PostgreSQL para usar la nueva ubicación del directorio de datos. Todo lo que queda en este momento es para iniciar el servicio de PostgreSQL de nuevo y comprobar que está hecho apuntando al directorio de datos correcta.

Paso 3 – Reinicio de PostgreSQL

Después de cambiar la directiva-directorio de datos en el archivo postgresql.conf, seguir adelante e iniciar el servidor PostgreSQL usando systemctl:

sudo systemctl start postgresql

  • sudo PostgreSQL inicio systemctl

para confirmar que el servidor PostgreSQL iniciado correctamente, comprobar su estado usando de nuevo systemctl:

sudo systemctl status postgresql

  • sudo PostgreSQL estado systemctl

Si el servicio se inició correctamente, verá la siguiente línea al final de la salida de este comando:

Output. . .
Jul 12 15:45:01 ubuntu-512mb-nyc1-01[1]: Started PostgreSQL RDBMS.
. . .

por último, para asegurarse que el directorio de datos nuevo es de hecho en uso, abra el símbolo del sistema PostgreSQL.

sudo -u postgres psql

  • sudo -u postgres psql

Compruebe el valor para el directorio de datos de nuevo:

SHOW data_directory;

  • MOSTRAR data_directory;

Output data_directory
-----------------------------------------
/mnt/volume_nyc1_01/postgresql/10/main
(1 row)

Esto confirma que PostgreSQL está utilizando la nueva ubicación del directorio de datos. Después de esto, tome un momento para asegurarse de que usted es capaz de acceder a su base de datos, así como interactuar con los datos dentro. Una vez que haya verificado la integridad de los datos existentes, se puede quitar el directorio de datos de copia de seguridad:

sudo rm -Rf /var/lib/postgresql/10/main.bak

  • sudo rm -rf /var/lib/postgresql/10/main.bak

Con eso, se ha movido con éxito su directorio de datos PostgreSQL a una nueva ubicación.

Conclusión:

Si ha seguido a lo largo, la base de datos debe estar funcionando con su directorio de datos en la nueva ubicación y que ha completado un paso importante para ser capaz de escalar su almacenamiento. También puede ser que desee echar un vistazo a 5 configuraciones comunes del servidor para la aplicación web para obtener ideas sobre cómo crear una infraestructura de servidor para ayudarle a escalar y optimizar las aplicaciones web.