我正在尝试备份/还原一个PostgreSQL数据库,正如Docker网站上所解释的那样,但是数据没有恢复。
数据库映像使用的卷是:
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"]我使用以下命令创建DB容器:
docker run -it --name "$DB_CONTAINER_NAME" -d "$DB_IMAGE_NAME"然后,我连接另一个容器,手动插入一些数据:
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存档:
$ 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的容器,并使用相同的名称创建另一个容器,并尝试恢复之前插入的数据:
$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar 但是表是空的,为什么没有正确地恢复数据?
发布于 2015-04-28 07:50:24
备份数据库
docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql恢复数据库
cat your_dump.sql | docker exec -i your-db-container psql -U postgres发布于 2020-08-16 10:36:31
备份数据库
生成sql:
docker exec -t your-db-container pg_dumpall -c -U your-db-user > dump_$(date +%Y-%m-%d_%H_%M_%S).sql要缩小sql的大小,可以生成一个压缩:
docker exec -t your-db-container pg_dumpall -c -U your-db-user | gzip > ./dump_$(date +"%Y-%m-%d_%H_%M_%S").gz还原数据库
cat your_dump.sql | docker exec -i your-db-container psql -U your-db-user -d your-db-name若要还原压缩sql,请执行以下操作:
gunzip < your_dump.sql.gz | docker exec -i your-db-container psql -U your-db-user -d your-db-namePD:这是对我有用的东西的汇编,也是我从这里和其他地方得到的。我开始做贡献,任何反馈都将不胜感激。
发布于 2019-02-06 03:55:32
我认为您也可以使用postgres备份容器,它将在给定的时间内备份数据库。
pgbackups:
container_name: Backup
image: prodrigestivill/postgres-backup-local
restart: always
volumes:
- ./backup:/backups
links:
- db:db
depends_on:
- db
environment:
- POSTGRES_HOST=db
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_EXTRA_OPTS=-Z9 --schema=public --blobs
- SCHEDULE=@every 0h30m00s
- BACKUP_KEEP_DAYS=7
- BACKUP_KEEP_WEEKS=4
- BACKUP_KEEP_MONTHS=6
- HEALTHCHECK_PORT=81https://stackoverflow.com/questions/24718706
复制相似问题