Restaurar respaldo con postgresql para sitio en Ruby on Rails

1.- Te conectas con ssh al servidor

2.- Desde cualquier ubicación entra a la consola de postgres:

sudo su postgres -c psql

3.- Darle todos los privilegios al usuario sobre la base de datos escribiendo:

GRANT ALL PRIVILEGES ON DATABASE nombre_base_datos TO usuario_base_datos

Recuerda que esta información debe estar dentro de tu archivo database.yml

4.- Salir de la consola de postgres con \q

5.- Entrar al directorio donde está la aplicación

en mi caso home/deployer/apps/mi_aplicacion

6.- Ejecutar el siguiente comando para tirar la base de datos:

rake db:drop RAILS_ENV=production

7.- Ejecutar el siguiente comando para crear la base de datos:

rake db:create RAILS_ENV=production

8.- Ejecutar el siguiente comando para restaurar la base de datos:

 psql -U usuario_base_datos -d nombre_base_datos -f nombre_respaldo
-U => el usuario de postgresql:       el usuario de la base de datos se encuentra dentro del archivo .yml en la ruta mi_aplicacion/config/database.yml
-d => el nombre de la base de datos:  el nombre de la base de datos se encuentra dentro del archivo .yml en la ruta mi_aplicacion/config/database.yml
-f => el nombre del respaldo:         hay que escribir la ruta en donde se encuentra el dump

Súper fácil!!!

Si te llega a salir un error como:

psql: FATAL: Peer authentication failed for user "tu_usuario"

Es porque tu Postgres está configurado para solo dar permiso a usuarios reales del sistema (que puedan hacer login). Eso lo podemos cambiar modificando el archivo (con permisos de administrador):

/etc/postgresql/9.3/main/pg_hba.conf

El 9.3 puede variar, depende de tu versión de Postgres.

Y cambias la siguiente linea:

De:

# TYPE DATABASE USER ADDRESS METHOD
local  all      all          peer

A:

# TYPE DATABASE USER ADDRESS METHOD
local  all      all          md5

Después de realizar ese cambio, reiniciamos Postgres:

sudo service postgresql restart

Y con eso ya te debe dar acceso.

goedkope energie