1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Postgresql备份和恢复之SQL转储

PostgreSQL备份和恢复之SQL转储

作为本际云服务器推荐网的小编小本本,今天来为大家介绍PostgreSQL的备份还原方式。在发生意外时备份具备恢复和还原的能力,能够将意外导致的损失降到最低。PostgreSQL备份还原主要有三种方式:SQL转储、文件系统级备份、连续归档和时间点恢复(PITR)。本文将主要介绍PostgreSQL的一种基础备份恢复方式-SQL转储。

Postgresql备份和恢复之SQL转储

使用pg_dump进行备份

PostgreSQL自带的内置备份工具是pg_dump,它是通过一系列的SQL语句读取某个指定的数据库并复制其中的内容,以它作为快照并用于日后的数据恢复。pg_dump的基本用法是:pg_dump dbname > dumpfile。pg_dump是将输出结果写入标准输出文件中。pg_dump可以用其他格式创建文件以支持并行和细粒度的对象恢复控制。

在使用pg_dump工具进行备份之前,首先需要确保执行用户具有登录到服务器并访问将要备份的数据库或表的权限。可以通过使用psql,进行服务器登录。在客户端中输入主机名(-h),用户名(-u)和密码(-p),以及数据库名,然后就可以校验备份用户是否被授权访问。使用pg_dump非常的简单——只需要在命令提示符后面输入将要导出的数据库名就可以进行备份工作了。

由于pg_dump创建的备份在内部是一致的,SQL转储文件中是pg_dump开始运行时刻的数据库快照,且在pg_dump运行过程中发生的更新将不会被转储。因此,pg_dump工作的时候并不阻塞其他进程对数据库的操作(但是会阻塞那些需要排它锁的操作,比如ALTERTABLE等)。

从转储中恢复

pg_dump生成的文本文件可以由psql程序读取。从转储中恢复的常用命令是:psql dbname < dumpfile。其中dumpfile就是pg_dump命令的输出文件,也就是之前导出的demodb.sql文件。在恢复之前,SQL转储库中对象的拥有者以及在其上被授予了权限的用户必须已经存在。如果不存在,那么恢复过程将无法将对象创建成具有原来的所属关系以及权限。

默认情况下,psql脚本在遇到一个SQL错误后会继续执行。也可以在遇到一个SQL错误后让psql退出,那么可以设置ON_ERROR_STOP变量来运行psql,这将使psql在遇到SQL错误后退出并返回状态3。

使用pg_dumpall

pg_dump每次只转储一个数据库,而它不会转储关于角色或表空间的信息。为了支持方便地转储一个数据库集簇的全部内容,提供了pg_dumpall程序。pg_dumpall备份一个给定集簇中的每一个数据库,并且也保留了集簇范围的数据,如角色和表空间定义。

在恢复一个pg_dumpall转储时常常需要具有数据库超级用户访问权限,因为它需要恢复角色和表空间信息。如果在使用表空间,需要确保转储中的表空间路径适合于新的安装。pg_dumpall工作时会发出命令重新创建角色、表空间和空数据库,接着为每一个数据库pg_dump。集簇范围的数据可以使用pg_dumpall的—globals-only选项来多带转储。

处理数据量大的数据库

在一些具有最大文件尺寸限制的操作系统上创建大型的pg_dump输出文件可能会出现问题。pg_dump可以写出到标准输出,因此操作时可以使用标准Unix工具来处理这种潜在的问题。

  • 使用压缩转储:可以使用常用的压缩程序,例如gzip。
  • 使用split:split命令允许你将输出分割成较小的文件以便能够适应底层文件系统的尺寸要求。
  • 使用pg_dump的自定义转储格式:如果PostgreSQL所在的系统上安装了zlib压缩库,自定义转储格式将在写出数据到输出文件时对其压缩。这将产生和使用gzip时差不多大小的转储文件,但是这种方式的一个优势是其中的表可以被有选择地恢复。

另外,为了加快转储一个大型数据库的速度,可以使用pg_dump的并行模式。它将同时转储多个表。可以使用-j参数控制并行度。pg_dump的并行转储特性只支持“目录”归档格式。

综上所述,SQL转储是PostgreSQL备份还原的一种基础方式,选择正确的备份还原方式能够在数据损失的情况下快速恢复并降低损失。希望通过本文的介绍,读者能够了解PostgreSQL备份还原的方法以及如何使用pg_dump进行备份。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5901.html