技术开发 频道

Windows下EnterpriseDB备份和恢复攻略

  【IT168 专稿】本文将为读者详细介绍如何利用pg_dump和pg_restore为EnterpriseDB数据库保驾护航。阅读本文后,您就能够对您的数据库进行周期性的备份,并在需要的时候进行恢复。

备份和恢复准备

  这里介绍的方法适用于Microsoft Windows环境下的Postgres Plus Standard Server或Postgres Plus Advanced Server数据库。在此,我们假设您已经下载并安装了Postgres Plus Standard Server或Postgres Plus Advanced Server。通过本文,您将了解下列内容:

  ·辨别不同的备份格式;
  ·选择各种的备份和恢复选项;
  ·生成纯文本式的备份,并用其进行恢复操作;
  ·为备份和恢复创建一个定制的归档。

  实际上,用来备份和恢复Postgres Plus数据库的方法和选项有很多,但是本文介绍的是使用Postgres Plus实用程序pg_dump和pg_restore来进行数据库的备份和恢复。这两个程序用于命令行,所以可以通过脚本的形式使用他们。

  一、备份文件格式

  pg_dump生成的备份文件共三种格式,如下所示:

  ·纯文本格式:纯文本脚本文件存放的是一些结构化查询语言语句和命令,可以供psql命令行终端程序用以重建数据库对象并载入表数据。使用psql程序可以通过纯文本备份文件来进行数据库的恢复操作。

  ·定制的归档格式:一个二进制文件可以用来从备份文件中恢复全部或者指定的数据库对象。使用pg_restore程序,可以利用定制的编档格式备份文件来恢复数据库。

  ·Tar归档格式:利用tar归档文件,我们可以从备份文件中恢复全部数据库对象或者指定的数据库对象。使用pg_restore程序,可以利用tar归档格式的备份文件来恢复数据库。

  在使用psql程序恢复数据库对象之前,我们可以使用文字编辑器编辑纯文本格式的备份文件。纯文本格式通常用于较小的数据库。定制的归档格式的备份文件则无法编辑。不过,我们可以使用pg_restore程序从备份文件中选择恢复哪些数据库对象。定制的归档格式通常用于中到大型的,希望从备份文件中指定需要选择性恢复数据库对象的数据库。

  tar归档格式的备份文件可以利用标准Linux工具tar进行操作。就像定制的归档格式一样,使用pg_restore程序我们可以从备份文件中有选择的恢复数据库对象。

  利用pg_dump程序,我们可以对纯文本或者定制的归档格式的备份文件进行压缩处理,这样能够有效减小备份文件的尺寸。当生成纯文本格式的备份文件时,默认情况下是不进行压缩的。当生成定制的归档格式的备份文件时,默认配置为进行中等水平的压缩处理。然而,pg_dump程序无法对Tar归档格式的备份文件进行压缩处理。

  二、备份和恢复选项

  Pg_dump和pg_restore程序为我们提供了许多选项,通过它们可以控制将哪些数据库对象保存到备份文件,从备份文件中恢复哪些数据库对象,以及如何进行恢复。下面列出了一些选项:

  ·仅转储或者恢复模式 (表、视图和序列定义、约束、触发器与函数),不转储或恢复表中数据(如果您当前使用的是Postgres Plus Advanced Server的话,SPL函数、过程、触发器和软件包也是能够进行备份和恢复的。);

  ·仅转储或恢复表中数据,而不包括模式;

  ·转储或恢复属于选中的模式的数据库对象;

  ·创建备份时,排除选中的方案;

  ·转储或恢复选中的表;

  ·创建备份时,排除选中的表;

  ·允许恢复操作使用要备份的数据库的名称来新建数据库,然后从这个新创的数据库中恢复数据库对象;

  ·将数据库对象恢复到所有的现有数据库;

  ·令被恢复的数据库对象的属主与制作备份时这些对象的属主同名;

  ·将进行恢复操作的用户的角色指定为所有被恢复的数据库对象的属主。

  假设我们想要备份一个数据库的全部内容,并在随后某个时间从备份文件中重建整个数据库,这种情况在现实中经常遇到。下面我们就介绍用纯文本格式的备份文件和定制的归档格式的备份文件来完成上述过程。

  三、具体操作步骤

  假定您的数据库环境如下所示:

  ·我们的数据库要恢复到其中的数据库集群包含的角色名称(用户名和组名)就是制作备份时数据库对象的属主。也就是说我们要制作备份(当制作备份时没有删除任何数据库对象的属主的角色)的数据库集群与恢复的目的地是同一个数据库集群,或者我们要恢复到一个新的数据库集群,并且在其中添加的一组角色名称与制作备份的数据库集群中的角色名称完全相同。

  ·用来恢复我们的数据库的数据库集群中没有与制作备份的数据库同名的数据库。 (如果制作备份文件的数据库集群正好是用来恢复数据库的数据库集群,则数据库制作备份之后,需要将其删除或者改名)

  读者需要注意的是,一个数据库集群就是由同一个Postgres Plus 实例运行的一组数据库。一个数据库集群通过它的ip地址和端口号唯一标识。

0
相关文章