2015-05-11 18 views

risposta

9

Utilizzare il seguente comando in un terminale UNIX:

docker exec <container_name> pg_dump <schema_name> > backup 

Il seguente comando discarica inserisce solo da tutte le tabelle:

metodo
docker exec <container_name> pg_dump --column-inserts --data-only <schema_name> inserts.sql 
+2

dove si specifica l'utente e la password dell'utente? – VaTo

1

Un'altra soluzione è avviare SQL Postgre con un mountpoint per la posizione della discarica nella finestra mobile.

come docker run -v <location of the files>. Poi eseguire uno scaricatore di porto ispezionare sulla finestra mobile in esecuzione contenitore

docker inspect <image_id> 

si possono trovare "volumi" tag all'interno e una corrispondente location.Go alla posizione e si può trovare tutte le PostgreSQL/mysql files.It ha funzionato per me Lasciaci sapere se questo ha funzionato anche per te

Buona fortuna

3

Ho contenitore denominato Postgres con volume montato -v /backups:/backups

Per eseguire il backup gziped DB my_db utilizzare:

docker exec postgres pg_dump -U postgres -F t my_db | gzip >/backups/my_db-$(date +%Y-%m-%d).tar.gz 

ora ho

[email protected]:/backups$ ls 
my_db-2016-11-30.tar.gz 
+0

Sto ottenendo un 'no file o directory:/backups/my_db-2017-03-19.tar.gz', hai un'idea del perché? – drskullster

+0

Sono riuscito a risolverlo con 'docker exec -t postgres bash -c 'pg_dump -U postgres -F t my_db | gzip>/backup/my_db - $ (data +% Y-% m-% d) .tar.gz'' – drskullster

+0

Forse non hai/dir backup e/o non è montato? – Jekis

0

Sebbene la soluzione punto di montaggio sopra sembrava promettente, il seguente è l'unica soluzione che ha funzionato per me, dopo più iterazioni:

docker run -it -e PGPASSWORD=my_password postgres:alpine pg_dump -h hostname -U my_user my_db > backup.sql 

Qual è stato unico nel mio caso: ho una password sul database che deve essere passato in; necessario passare il tag (alpino); e infine la versione host degli strumenti psql era diversa dalle versioni docker.

Problemi correlati