Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

[SOLUCIONADO] Reubicación de DB Postgresql el Fedora 19

Estas en el tema de Reubicación de DB Postgresql el Fedora 19 en el foro de PostgreSQL en Foros del Web. Qué tal foro. Pues saludando y felicitando a toda la comunidad por el gran trabajo que realizan. Y bueno espero me puedan auxiliar. Necesito reubicar ...
  #1 (permalink)  
Antiguo 17/10/2013, 19:33
Avatar de elaguna  
Fecha de Ingreso: octubre-2013
Mensajes: 3
Antigüedad: 7 años
Puntos: 0
Pregunta Reubicación de DB Postgresql el Fedora 19

Qué tal foro.

Pues saludando y felicitando a toda la comunidad por el gran trabajo que realizan.

Y bueno espero me puedan auxiliar. Necesito reubicar mi base de datos postgres 9.2 en Fedora 19.

La situación es que mi partición de root tiene poco espacio como para contener la DB, mi intención es reubicar el directorio "data" en mi perfil en la partición /home.

Hasta ahorita he creado un nuevo directorio en /home llamada "postgres" y he cambiado los permisos y propietario para el usuario postgres

Código:
$ sudo mkdir /home/elaguna/postgres
$ sudo chown -R postgres:postgres postgres
$ sudo chmod 777 -R postgres
Copié todo el contenido de la ubicación actual a mi nuevo directorio y verifico el contenido y permisos
Código:
$ sudo cp -r /var/lib/pgsql postgres
$ sudo ls -l postgres/pgsql

drwxrwxrwx.  2 postgres postgres 4096 oct 17 11:03 backups
drwxrwxrwx. 15 postgres postgres 4096 oct 17 11:03 data
-rwxrwxrwx.  1 postgres postgres 1575 oct 17 11:05 initdb.log
En el archivo postgresql.conf pongo la ruta de mi nueva ubicación
Código:
data_directory = '/home/elaguna/postgres/pgsql/data'
Hasta ahí se supone que todo va bien. ahora trato de reiniciar el servicio y ... nada!!!
Código:
$ sudo systemctl restart postgresql.service
Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.
Reviso el status del servicio postgresql.service
Código:
$ sudo systemctl status postgresql.service

oct 17 11:08:58 localhost.localdomain systemd[1]: Starting PostgreSQL database server...
oct 17 11:08:58 localhost.localdomain pg_ctl[9098]: FATAL:  no se pudo obtener los permisos del directorio /home/elaguna/postgres/pgsql/data  Acceso denegado
Hago otra prueba ahora con el usuario postgres tratando de crear un directorio nuevo en donde se supone que es propietario y tiene privilegios
Código:
$ su postgres -c "mkdir postgres/pgsql/test"

mkdir: no se puede crear el directorio «postgres/pgsql/test»: Permiso denegado
Supongo que el problema de no poder iniciar el servicio de postgres es debido a que no puede modificar la nueva ubicación, pero al consultar los privilegios me muestra
Código:
$ sudo ls -l postgres/pgsql

drwxrwxrwx.  2 postgres postgres 4096 oct 17 11:03 backups
drwxrwxrwx. 15 postgres postgres 4096 oct 17 11:03 data
-rwxrwxrwx.  1 postgres postgres 1575 oct 17 11:05 initdb.log
que se supone me indica que el usuario postgres puede hacer todo, pero no es así

Ahora bien, recuerdo que actualmente en Fedora se utiliza SELinux, entonces consulto:
Código:
$ sudo ls -Z postgres

drwxrwxrwx. postgres postgres unconfined_u:object_r:postgresql_db_t:s0 pgsql
Si se supone que postgres puede hacer todo en la nueva ubicación mi pregunta es: ¿Qué me está haciendo falta para cambiar la ubicación de la DB a mi nuevo directorio?

De antemano gracias por la ayuda que me puedan brindar.

Saludos
  #2 (permalink)  
Antiguo 18/10/2013, 07:28
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 11 años, 8 meses
Puntos: 360
Respuesta: Reubicación de DB Postgresql el Fedora 19

Te apoyo en el sentido en que todo lo que has hecho parece logico y en teoría esto no debería representar ningún problema.

Te recomiendo crear un nuevo tablespace. En la creaciòn te pide un directorio donde crearlo. (aca debes darle la ubicaciòn donde tienes bastante espacio) Crear una base de datos que utilice dicho tablespace y restaurar una copia de tu base de datos en la nueva.

Te dejo algunos enlaces que te pueden ayudar en tu tarea.

http://www.postgresql.org/docs/9.1/i...ablespace.html
http://carlosyr.blogspot.com/2013/02...ostgresql.html

Nos cuentas como te va.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 18/10/2013, 23:22
Avatar de elaguna  
Fecha de Ingreso: octubre-2013
Mensajes: 3
Antigüedad: 7 años
Puntos: 0
Respuesta: Reubicación de DB Postgresql el Fedora 19

Gracias huesos52 por la atención.

Hice lo siguiente: creé un nuevo directorio para hacer pruebas en mi perfil y le cambio los permisos para e usuario postgres
Código:
$ sudo mkdir /home/elaguna/postgres/test
$ sudo chown postgres:postgres /home/elaguna/postgres/test
$ sudo chmod 700 /home/elaguna/postgres/test
Ahora dentro de postgres trato de crear un nuevo TABLESPACE dentro de mi directorio de prueba
Código:
# CREATE TABLESPACE sansen2 LOCATION '/home/elaguna/postgres/test';
ERROR:  no se pudo definir los permisos del directorio «/home/elaguna/postgres/test»: Permiso denegado
Me parece que todo esto tiene que ver con SELinux que no le permite hacer nada al usuario postgres dentro de mi /home/elaguna.

Si es así ojalá y alguien me pudiera dar una luz, porque la verdad ya no sé qué más mover.

Gracias de antemano
  #4 (permalink)  
Antiguo 19/10/2013, 15:15
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 11 años, 8 meses
Puntos: 360
Respuesta: Reubicación de DB Postgresql el Fedora 19

Depronto la opcion -R en el directorio de postgres.

sudo chown -R postgres:postgres /home/elaguna/postgres/test

Esto hace que sea recursivo para todos los directorios.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 02/08/2014, 12:41
Avatar de elaguna  
Fecha de Ingreso: octubre-2013
Mensajes: 3
Antigüedad: 7 años
Puntos: 0
Respuesta: Reubicación de DB Postgresql el Fedora 19

Qué tal.

Posiblemente este tema ya lo hayan podido resolver de otras maneras pero, por si a alguien le sirve, esto es lo que finalmente hice.

Todo lo anterior es correcto, el problema es con los permisos de selinux para permitirle a postgres buscar en otros directorios.


Después de darle muchas vueltas me encontré con esta solución que es mas sencilla (disculpas por no poner el enlace con etiquetas, pero el editor previsualiza bien, pero publica como quiere, atención moderadores )

http://wiki.postgresql.org/wiki/Move_PGDATA_Fedora_17

el orden para todo lo que yo hice fue:


1. Instalar postgres de forma normal y levantar el servicio hasta el punto de poder iniciar la base de datos como siempre.

2. Detener el servicio de postgres
Código:
sudo service postgresql stop
3. A partir de este punto les recomiendo continuar como root.

Seguir las instrucciones del enlace que les indiqué

Si notan, en las instrucciones está esto
Código:
ln -s /usr/share/selinux/devel/Makefile
Posiblemente se encuentren, igual que yo, conque esa ruta no existe en sus equipos, por lo tanto tampoco podrán hacer el make que viene indicado, esto es porque no tenemos instalado selinux-policy-devel que es lo que nos permitirá indicarle a SELinux permisos a nivel de directorios y no únicamente por servicio.

Para instalarlo me bastó simplemente con:
Código:
yum install selinux-policy-devel
Pero en caso de no encontrarlo en los repositorios, siempre tenemos la opción rpmfind

http://rpmfind.net/linux/rpm2html/search.php?query=%2Fusr%2Fshare%2Fselinux%2Fdevel% 2FMakefile

basta con buscar nuestra distribución e instalar.


Ahora ya podemos ejecutar las últimas dos instrucciones.

4. Salimos de nuestro usuario root y como viles mortales iniciamos nuestro servicio
Código:
sudo service postgresql start
Y pues es todo, espero les sirva.

Saludos.

Última edición por elaguna; 02/08/2014 a las 13:12

Etiquetas: fedora, postgres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:47.