2010-09-16 28 views
20

Tomo diariamente respaldos de nuestra caja de desarrollo postgres usando: pg_dumpall -h 127.0.0.1 -U usuario -w | gzip blah.gz¿Cómo borrar todas las bases de datos en Postgres?

Dado que 9.0 es ahora un candidato de lanzamiento, me gustaría restaurar esta copia de seguridad diaria a diario en un cuadro de prueba de postgres9.0rc1, sin embargo, no estoy seguro de cómo guionizarlo repetidamente. ¿Hay algún directorio que pueda hacer nuke para hacer esto?

Respuesta

17

Puede hacer "drop cluster" y "create cluster", que borrará automáticamente todas las bases de datos. Borrar todos los datos que $ PGDATA directorio y reinicilizar el cluster usando:

initdb -D /usr/local/pgsql/data 
+1

Para ser claros, debe reemplazar '/ usr/local/pgsql/data' con el directorio' $ PGDATA'. Por ejemplo, para PostgreSQL instalado a través de Homebrew, es '/ usr/local/var/postgres'. Además, si exporta '$ PGDATA', puede ejecutar' initdb' sin argumentos. Finalmente, tenga en cuenta que eliminar su directorio '$ PGDATA' es un paso separado. 'initdb' no lo hace por ti. Ah, y la eliminación no funcionará bien si su servidor 'postgres' aún se está ejecutando. –

14

que puede utilizar:

$ pg_dropcluster 9.2 main 
$ pg_createcluster 9.2 main 
$ pg_ctlcluster 9.2 main start 
$ pg_restore -f your_dump_file 

donde 9.2 = cluster version y main = cluster name

+0

Esas no son herramientas estándar de Postgres si no me equivoco. –

+0

estos son scripts de Debian. – Russ

+1

Yo recomendaría usar la bandera '-e 'UTF-8'' para' pg_createcluster'; de lo contrario, es posible que tenga que cambiarla más adelante si quiere bases de datos UTF-8 y la configuración regional no está configurada en UTF8. – coffeemakr

0

Mover los datos de base de datos en otro lugar puede lograr lo mismo que eliminar, y puede volver a moverlo fácilmente en caso de que cambie de opinión (pero asegúrese de tener cuidado y hacer una copia de seguridad de sus datos en cualquier caso).

1) Cree un directorio en algún lugar (por ejemplo, /home/USERNAME/BACKUPDIR).

2) Como superusuario ir al directorio de datos PostgreSQL (por ejemplo, Fedora /var/lib/pgsql/)

3) Mover el data a la carpeta de copia de seguridad: mv data /home/USERNAME/BACKUPDIR

4) Entonces REINIT una nueva base de datos utilizando, por ejemplo, sudo postgresql-setup --initdb --unit postgresql

Cuestiones relacionadas