我有一个Postgresql数据转储文件。当docker运行postgresql容器时,如何以恢复到位的方式将该备份恢复到仅数据容器中?
答案 0 :(得分:1)
由于Stackoverflow惩罚了简洁的答案,我重复写的内容there:
答案 1 :(得分:0)
最简单的方法是在主机上的单独文件夹中创建一个空的postgresql数据库,然后启动PostgreSQL守护程序,然后导入数据,然后将其简单地挂载到容器中。使用下面的脚本,您可以在/tmp/postgres-mem
文件夹中创建数据库,然后将数据导入其中。
#!/bin/bash
export PGDIR=/tmp/postgres-mem
pg_ctl -D "$PGDIR" stop
rm -vfr "$PGDIR"
mkdir "$PGDIR"
pg_ctl init -D "$PGDIR"
pg_ctl -D "$PGDIR" start -o "-h localhost -c fsync=off -c synchronous_commit=off -c full_page_writes=off -c log_destination='stderr' -c logging_collector=on -c log_directory='pg_log' -c log_filename='postgresql-%Y-%m-%d_%H%M%S.log' -c log_statement='all' -k /tmp/postgres-mem"
sleep 3
psql -h localhost -c 'create user cooluser with superuser' template1
psql -h localhost -c 'create database "whatever"' template1
然后
psql -U cooluser whatever < your_dump_file.sql
然后将/ tmp / postgres-mem的内容复制到数据容器中
但您可能需要考虑this approach。