Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
直接备份和恢复postgresql数据文件夹_Postgresql_Docker - Fatal编程技术网

直接备份和恢复postgresql数据文件夹

直接备份和恢复postgresql数据文件夹,postgresql,docker,Postgresql,Docker,到目前为止,我一直在使用pg_dump备份我的postgresql数据,它将数据导出到一个sql文件mydb.sql,然后使用psql-U user-d db

到目前为止,我一直在使用
pg_dump
备份我的postgresql数据,它将数据导出到一个sql文件
mydb.sql
,然后使用
psql-U user-d db
从该sql文件还原

出于这样或那样的原因,在
psql
不存在的环境中,更直接地恢复数据库内容会更方便。。。特别是在主机服务器上,postgresql安装在主机上运行的docker容器中,而不是主机本身

我的计划是将
/var/lib/postgresql/data/
的内容备份到tar文件,并在需要时(例如,当创建承载postgresql容器的新服务器时)将其恢复到相同的路径。docker容器中的文件夹
/var/lib/postgresql/data/
映射到主机服务器上的一个文件夹,因此我将在主机上而不是在postgres容器中创建此备份


这是一种有效的方法吗?有什么“陷阱”吗?
/var/lib/postgresql/data/
中是否有我可以从tar文件中排除的子文件夹?我不想只备份“内务管理”信息。

您可以这样做,但如果不希望数据库损坏,您必须正确地备份


请在复制数据目录之前停止PostgreSQL,或者按照中的说明进行在线备份。

谢谢,该链接非常有帮助。看起来,
pg_basebackup
可能是最简单的方法(我可以在postgres容器中进行此操作),然后使用该容器的输出来恢复数据库。。。。虽然我不清楚如何处理文件
pg_wal.tar
,但它包含将数据库恢复到一致状态所需的事务日志文件。恢复时需要将其复制到
pg_wal/
文件夹中?当运行
pg\u basebackup
而不使用
tar
选项时,
pg\u wal/
的内容正常,可以在不进行任何进一步工作的情况下恢复?是和是。目录模式更简单。