PostgreSQL9.x集簇备份pg_basebackup

    从postgresql 9版本开始增添了pg_basebackup客户端工具程序,它可以用来备份整个数据库集簇,可以用作流复制的基础备份的一个更方便的方式。

    pg_basebackup语法详见:http://www.postgresql.org/docs/9.4/static/app-pgbasebackup.html

    pg_basebackup用来给一个运行的PostgreSQL 数据库集簇进行基础备份。进行时不会影响到连接到数据库的客户端,并且同时可以用于时间点恢复 (参阅Section 24.3)和日志传输或流复制备用服务器的起始点 (参阅Section 25.2)。

    pg_basebackup做一个数据库集群文件的二进制拷贝, 同时确保系统自动进出自动备份模式。备份总是使用整个的数据库集群, 不可能只备份单个的数据库或数据库对象。对于单个数据库备份,必须使用如 pg_dump的工具。

    备份时通过一个普通的PostgreSQL连接制作的,并且使用复制协议。 该连接必须由超级用户或一个拥有REPLICATION权限的用户完成 (参阅Section 20.2),并且pg_hba.conf 必须明确允许复制连接。该服务器也必须由max_wal_senders配置, 设置足够高的级别,对于备份至少有一个会话可用。

    在同一时刻可能有多个pg_basebackup运行,但是从性能来说最好只采取一个备份,然后复制结果。

    pg_basebackup不止可以从主机备份还可以从备机备份。要从备机备份, 设置备机以使其可以接受复制连接(也就是,设置max_wal_senders 和 hot_standby,并且配置host-based authentication)。 还需要在主机上启用full_page_writes。

    请注意,这里有几个从备机在线备份的限制:

  1.  备份历史文件不是在数据库集群备份时创建的。

  2. 不保证所有需要备份的WAL文件在备份的最后归档。如果你计划使用备份作为归档恢复, 并希望保证此刻所有需要的文件都可以使用,你需要通过使用-x选项将他们包含到备份中。

  3. 如果备机在在线备份期间被提升为主机,则备份失败。

  4. 所有需要备份的WAL记录必须包含足够的全版书写,这需要你在主机上启用full_page_writes 并且不使用类似pg_compresslog这样的工具作为archive_command 从WAL文件中删除全版书写。




你可能感兴趣的:(PostgreSQL9.x集簇备份pg_basebackup)