por nube instancia datos crear consola conectar con aws postgresql ubuntu permissions amazon-ec2

instancia - postgresql en la nube



¿Cómo puedo mover datos postgresql a otro directorio en Ubuntu sobre Amazon EC2? (3)

Detener el servidor.

Copie el datadir conservando los permisos: use cp -aRv .

Entonces (lo más fácil, ya que evita la necesidad de modificar initscripts) simplemente mueva el datadir viejo a un lado y enlace simbólico la ruta anterior a la nueva ubicación.

Hemos estado ejecutando postgresql 8.4 por bastante tiempo. Al igual que con cualquier base de datos, estamos llegando lentamente a nuestro umbral de espacio. Agregué otro disco EBS de 8 GB y lo monté en nuestra instancia y lo configuré para que funcione correctamente en un directorio llamado / files

Dentro de / archivos, creé manualmente

Corrígeme si me equivoco, pero creo que todos los datos postgresql se almacenan en /var/lib/postgresql/8.4/main

Hice una copia de seguridad de la base de datos y ejecuté sudo /etc/init.d/postgresql stop. Esto detiene el servidor postgresql. Traté de copiar y pegar el contenido de /var/lib/postgresql/8.4/main en el directorio / files pero resultó ser un MESS ENORME. debido a permisos de archivos Tuve que entrar y modificar el contenido de esa carpeta solo para poder copiarlos y pegarlos. Algunos archivos no se copiaron completamente debido a los permisos de raíz. Modifiqué el parámetro data_directory en postgresql.conf para apuntar al directorio de archivos

data_directory = ''/files/postgresql/main''

y ejecuté sudo /etc/init.d/postgresql restart y el servidor no pudo iniciarse. De nuevo, probablemente debido a problemas de permisos. Amazon EC2 solo le permite acceder al servicio como ubuntu de manera predeterminada. Solo puede acceder a la raíz desde el terminal, lo que hace que todo sea mucho más complicado.

¿Hay una manera paso a paso mucho más limpia y más eficiente de hacer esto?


Gracias por la respuesta aceptada. En lugar del enlace simbólico, también puede usar un enlace de montaje . De esta forma es independiente del sistema de archivos. Si desea utilizar un disco duro dedicado para la base de datos, también puede montarlo normalmente . al directorio de datos.

Hice lo último. Estos son mis pasos si alguien necesita una referencia. Ejecuté esto como una secuencia de comandos en muchas instancias de AWS.

# stop postgres server sudo service postgresql stop # create new filesystem in empty hard drive sudo mkfs.ext4 /dev/xvdb # mount it mkdir /tmp/pg sudo mount /dev/xvdb /tmp/pg/ # copy the entire postgres home dir content sudo cp -a /var/lib/postgresql/. /tmp/pg # mount it to the correct directory sudo umount /tmp/pg sudo mount /dev/xvdb /var/lib/postgresql/ # see if it is mounted mount | grep postgres # add the mount point to fstab echo "/dev/xvdb /var/lib/postgresql ext4 rw 0 0" | sudo tee -a /etc/fstab # when database is in use, observe that the correct disk is being used watch -d grep xvd /proc/diskstats


Una clarificación. Es el AMI particular que usó y que establece ubuntu como el usuario predeterminado, esto puede no aplicarse a otras AMI.

Básicamente, si está intentando mover datos manualmente, es probable que deba hacerlo como usuario root, y luego asegúrese de que esté disponible para el usuario con el que se ejecuta postgres.

También tiene la opción de tomar una instantánea del volumen y aumentar el tamaño del volumen creado a partir de la instantánea. Luego puede reemplazar el volumen en su instancia con el nuevo volumen (probablemente tendrá que cambiar el tamaño de la partición para aprovechar todo el espacio).