备份/还原Docker化的PostgreSQL数据库 [英] Backup/Restore a dockerized PostgreSQL database
本文介绍了备份/还原Docker化的PostgreSQL数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正尝试按照Docker网站上的说明备份/还原PostgreSQL数据库,但数据未恢复。
I'm trying to backup/restore a PostgreSQL database as is explained on the Docker website, but the data is not restored.
数据库使用的卷图像是:
The volumes used by the database image are:
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
,CMD为:
CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]
我创建使用以下命令的数据库容器:
I create the DB container with this command:
docker run -it --name "$DB_CONTAINER_NAME" -d "$DB_IMAGE_NAME"
然后我连接另一个容器以手动插入一些数据:
Then I connect another container to insert some data manually:
docker run -it --rm --link "$DB_CONTAINER_NAME":db "$DB_IMAGE_NAME" sh -c 'exec bash'
psql -d test -h $DB_PORT_5432_TCP_ADDR
# insert some data in the db
<CTRL-D>
<CTRL-D>
然后创建tar归档文件:
The tar archive is then created:
$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /etc/postgresql /var/log/postgresql /var/lib/postgresql
现在我删除用于db的容器并创建另一个同名,并尝试恢复之前插入的数据:
Now I remove the container used for the db and create another one, with the same name, and try to restore the data inserted before:
$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar
但是表为空,为什么不能正确还原数据?
But the tables are empty, why is the data not properly restored ?
推荐答案
备份数据库
Backup your databases
docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
还原数据库
Restore your databases
cat your_dump.sql | docker exec -i your-db-container psql -U postgres
这篇关于备份/还原Docker化的PostgreSQL数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文