Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

技术提示:如何备份和还原 Postgres 数据库?

卡兰·辛格

2013年6月19日

电子邮件

1 min read

技术提示:如何备份和还原 Postgres 数据库?

卡兰·辛格

2013年6月19日

电子邮件

1 min read

技术提示:如何备份和还原 Postgres 数据库?

这是一份‘操作指南’文档,仅提供示例命令,实际操作方式完全依赖于执行者和特定的使用案例。

首先,免责声明。本文提供了关于如何备份Postgres数据库表的一般指南。所提供的示例不涉及任何特定的表或数据库。如果您尝试备份特定的表,您还应该备份引用原始表的表。由于Postgres是关系型数据库,表之间始终存在引用。




这是一份“如何”文档,仅提供示例命令,实际操作完全取决于执行的人和具体用例。始终保持您尝试备份的数据的完整性。备份整个数据库始终是安全的选择,但在备份特定表时需要小心。

SQL-dump/pg_dump:

SQL-dump 方法的想法是生成一个包含 SQL 命令的文本文件,当将其反馈给服务器时,将在转储时以相同状态重新创建数据库。PostgreSQL 提供了用于此目的的实用程序程序 pg_dump。




pg_dump 是一个有效且全面的工具,用于备份 Postgres 数据库并使用备份恢复 Postgres 数据库。然而,它不仅限于数据库。我们可以使用 pg_dump 备份表,然后用它来恢复单个表。使用 pg_dump,您可以备份本地数据库并在远程数据库上恢复它。

如何备份Postgres数据库:

备份 Postgres 表:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

上述命令是从 Postgres 数据库备份特定表的一个示例。使用上述命令,我们正在将数据库 'pe' 中 schema 'maincontrol' 中的表 'orgs' 备份到 ms_table.sql 文件。要备份特定表,请在 pg_dump 命令中使用 –table TABLENAME 选项。如果在不同的 schema 中有相同的表名,则使用 –schema SCHEMANAME 选项。

  1. 备份特定的 Postgres 数据库:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    这是备份特定 Postgres 数据库的一个示例。使用上述命令,我们正在将 Message Central 数据库 'pe' 备份到文件 pe_dump.sql 中。备份文件包含数据库 'pe' 中所有表的 create table、alter table 和 copy 命令。

  2. 备份所有 Postgres 数据库:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    您可以使用 pg_dumpall 命令备份所有数据库。上述命令将在运行于特定服务器上的 Postgres 实例上创建所有数据库的转储。要列出已备份的所有数据库,请使用命令 grep "^[\]connect" all.sql。

备份 Postgres 表:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

上述命令是从 Postgres 数据库备份特定表的一个示例。使用上述命令,我们正在将数据库 'pe' 中 schema 'maincontrol' 中的表 'orgs' 备份到 ms_table.sql 文件。要备份特定表,请在 pg_dump 命令中使用 –table TABLENAME 选项。如果在不同的 schema 中有相同的表名,则使用 –schema SCHEMANAME 选项。

  1. 备份特定的 Postgres 数据库:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    这是备份特定 Postgres 数据库的一个示例。使用上述命令,我们正在将 Message Central 数据库 'pe' 备份到文件 pe_dump.sql 中。备份文件包含数据库 'pe' 中所有表的 create table、alter table 和 copy 命令。

  2. 备份所有 Postgres 数据库:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    您可以使用 pg_dumpall 命令备份所有数据库。上述命令将在运行于特定服务器上的 Postgres 实例上创建所有数据库的转储。要列出已备份的所有数据库,请使用命令 grep "^[\]connect" all.sql。

备份 Postgres 表:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

上述命令是从 Postgres 数据库备份特定表的一个示例。使用上述命令,我们正在将数据库 'pe' 中 schema 'maincontrol' 中的表 'orgs' 备份到 ms_table.sql 文件。要备份特定表,请在 pg_dump 命令中使用 –table TABLENAME 选项。如果在不同的 schema 中有相同的表名,则使用 –schema SCHEMANAME 选项。

  1. 备份特定的 Postgres 数据库:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    这是备份特定 Postgres 数据库的一个示例。使用上述命令,我们正在将 Message Central 数据库 'pe' 备份到文件 pe_dump.sql 中。备份文件包含数据库 'pe' 中所有表的 create table、alter table 和 copy 命令。

  2. 备份所有 Postgres 数据库:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    您可以使用 pg_dumpall 命令备份所有数据库。上述命令将在运行于特定服务器上的 Postgres 实例上创建所有数据库的转储。要列出已备份的所有数据库,请使用命令 grep "^[\]connect" all.sql。

如何恢复 Postgres 数据库

  1. 恢复 Postgres 表:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    上述命令会将备份在 ms_table.sql 文件中的表安装到 ‘pe’ 数据库中。确保此表尚不存在,否则您将看到大量‘已存在’的错误。此命令创建表并将所有数据导出到新创建的表中。

  2. 恢复 Postgres 数据库:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    类似于恢复表,我们可以使用上述命令恢复完整的数据库。在这里,我们使用文件 pe_dump.sql 来恢复 ‘pe’ 数据库,该文件是在备份数据库时在上述备份部分中创建的。

  3. 恢复所有数据库:

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    使用上述命令恢复所有数据库。‘all_dump.sql’ 是使用 pg_dumpall 创建的文件。上述命令将给我们所有的 Postgres 数据库保持与从原始数据库服务器进行转储时的状态完全一致。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

R

Reach

G

Grow

M

Manage

A

Automate

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。