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 如何备份Postgres 8中的所有内容,包括索引?_Postgresql_Backup - Fatal编程技术网

Postgresql 如何备份Postgres 8中的所有内容,包括索引?

Postgresql 如何备份Postgres 8中的所有内容,包括索引?,postgresql,backup,Postgresql,Backup,当我在postgres 8中进行备份时,它只备份模式和数据,而不备份索引。我该怎么做呢?听起来像是在使用pg_dump实用程序进行备份。这样可以保存从头开始重新创建数据库所需的信息。您不需要将信息转储到索引中就可以工作。您已经有了模式,并且模式包括索引定义。如果加载此备份,将从数据中重建索引,与最初创建索引的方式相同:添加新行时生成索引 如果您想对磁盘上的数据库块进行物理备份(其中包括索引),则需要执行以下操作。这是一个复杂得多的过程,但生成的备份将立即可用。pg_dump样式的备份可能需要相当

当我在postgres 8中进行备份时,它只备份模式和数据,而不备份索引。我该怎么做呢?

听起来像是在使用pg_dump实用程序进行备份。这样可以保存从头开始重新创建数据库所需的信息。您不需要将信息转储到索引中就可以工作。您已经有了模式,并且模式包括索引定义。如果加载此备份,将从数据中重建索引,与最初创建索引的方式相同:添加新行时生成索引


如果您想对磁盘上的数据库块进行物理备份(其中包括索引),则需要执行以下操作。这是一个复杂得多的过程,但生成的备份将立即可用。pg_dump样式的备份可能需要相当长的时间才能恢复。

如果我理解正确,您希望转储索引以及原始表数据

pg_dump将在转储结束时输出createindex语句,这将在新数据库中重新创建索引


您可以按照Greg Smith的建议进行PITR备份,也可以停止数据库并复制二进制文件。

您当前如何创建备份以及使用的Postgres的确切版本?一般来说,pg_dump也应该备份您的索引。我正在使用GUI管理员进行备份,我右键单击数据库并选择postgres 8.1中的“备份”,这看起来像是一个微妙的问题(因为@Mike编写的索引包含在pg_dump的备份中,而且没有类似于
--省略索引
的开关),因此,我们需要更多/完整的细节(操作系统,PostgreSQL的次要版本,pgAdmin版本,备份格式:COMPRESS,TAR,PLAIN)和一些可复制的DDL,如果可能的话;我忘了提到,如果可以关闭服务器,只需复制数据库所在的整个目录树,就可以对数据库进行完整备份。您需要小心使用符号链接,如果您创建了自己的表空间,就会有符号链接——在其他一些情况下,我不会详细介绍。注意,在转储中包含索引(不仅仅是它们的定义)可能会有助于加快恢复速度。如果您有一个包含大量索引的数据仓库应用程序,那么恢复可能需要更长的时间,因为它必须重新生成所有索引。