我正在尝试使用pg_restore恢复PostgreSQL docker容器中的数据库,这将从docker文件中调用。我将收到以下错误"错误:取消autovacuum任务 背景:自动分析表' tablename'" 。
DockerFile:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="popup">
<div class="name">Child Popup</div>
</div>
<div id="parant">
<div class="name">Parant Popup</div>
<button id="popup-btn">POPUP</button>
</div>
initialize.sh
FROM postgres:9.3
ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD Abcd1234
ENV POSTGRES_DB Clarion1
COPY DB.backup /var/lib/postgresql/backup/DB.backup
COPY initialize.sh /docker-entrypoint-initdb.d/initialize.sh
日志:
#!/bin/bash
set -e
set -x
echo "******PostgreSQL initialisation******"
pg_restore -C -d DB /var/lib/postgresql/backup/DB.backup
但是,如果我尝试从主机中的命令提示符从同一个备份文件恢复数据库,它可以正常工作。
答案 0 :(得分:3)
我不认为备份恢复可以在初始化阶段完成。启动容器,然后上传数据库。
docker run -d --name mydb mypgimage
docker exec mydb sh -c "pg_restore -C -d DB /var/lib/postgresql/backup/DB.backup"
答案 1 :(得分:2)
这是一种从主机上文件还原的方法:
docker exec -i container_name pg_restore -U postgres_user -v -d database_name < /dir_backup_outside_container/file_name.tar