PostgreSQL 备份与恢复

    PostgreSQL提供了三种备份和恢复的方式:SQL dump文件系统复制联机热备份每一种备份方式都有自己的优点和缺点,下面将详细介绍。

9.1 SQL Dump

     这种备份方式产生一个文本文件,里面包含创建各种数据库对象的SQL语句和每个表中的数据。另外,表上创建的索引中的数据不会被导出,只会导出索引的定义信息。在恢复数据库的时候,索引会被重建。可以使用数据库提供的工具pg_dumpallpg_dump来进行备份。pg_dumpall会备份一个数据库集群中的所有信息和数据。pg_dump只备份数据库集群中的某个数据库的数据,它不会导出角色和表空间相关的信息,因为这些信息是整个数据库集群共用的,不属于某个单独的数据库。pg_dump的基本用法如下:

pg_dump 数据库名 > 备份文件名

pg_dump将结果写到标准输出中,可以用操作系统的重定向命令将结果写到文件中。

 

    可以在运行数据库的机器上执行pg_dump命令,也可以在其它的机器上执行pg_dump命令。 可以使用选项-h-p来指定运行数据库的主机名和数据库监听的端口。例如:

pg_dump -h db_server1 -p 5432  product > backup_file

该命令连接机器db_server1上在端口5432处监听的数据库,将数据库product的数据备份到文件backup_file中。如果pg_dump命令没有使用-h-p选项,将使用环境变量PGHOST的值作为机器名,使用环境变量PGPORT的值作为数据库的端口。如果用户没有定义环境变量PGHOST,默认使用本机名作为运行数据库的机器名。

 

     默认的情况下,pg_dump使用当前的操作系统用户作为连接数据库时使用的用户。可以使用选项-U或者设置环境变量PGUSER来指定连接数据库时使用的用户名。例如:

pg_dump -U liming -h db_server1 -p 5432  product > backup_file

该命令使用用户liming连接机器db_server1上在端口5432处监听的数据库,将数据库product的数据备份到文件backup_file中。

 

一般情况下,应该使用超级用户连接数据库进行备份操作,因为超级用户可以访问数据库中的任何信息。使用普通数据用户连接数据库,有些表可能无法访问。

 

运行pg_dump时,数据可以正常地执行其它操作。但ALTER TABLE这类修改数据库对象定义的操作会受到影响,可能会长时间处于等待状态而无法执行,所以在运行pg_dump命令时,不要在数据库中运行修改数据库对象定义的操作。

 

    另外要注意的是,如果数据库中有些表使用OID来实现外键约束,应当在备份数据库时同时备份表的OID信息,使用pg_dump时加上选项–o即可达到这个目的。

9.1.1 恢复数据库

    pg_dump创建的备份文件可以被工具psql识别。因此可以使

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值