Postgres-10亮点 -pg_basebackup改进

Michael Paquier

翻译:亭亭小次郎 二○一六年十一月二十○日

最近,有三个改进和变化添加到pg_basebackup中,这些改进成为Postgres 10的一部分。

一、基础备份目录的状态

第一,涉及到对故障磁盘上的备份文件夹的状态。
总之,在出现故障的情况下,pg_basebackup将删除它已经处理时创建的文件夹。
这个已经提交commit 9083353

在使用此功能时,有几件事情需要注意:

  • 当pg_basebackup收到终止信号时,不会触发清理动作。
  • 使用的格式,或plain或tar,没关系,清理行动会在目标目录中触发。
  • 当backup目录包含WAL段时,清理动作也会执行。

如果你不想使用pre-10的盖井,可以指定新的选项-noclean,用来保持所创建的文件夹内容。
该选项是pre-10的行为,可用于测试和开发。
新的默认值去掉了手动删除目标目录的,
因为目标目录会包含一些已损坏状态的集群数据,
尽管保留(目标目录)可用于调试。

二,-xlog-stream=stream选项的对tar模式的支持

要注意的第二件事是-xlog-stream=stream 的支持 在tar模式下也可以使用,
已经提交改进提交56c7d8d
如下类型的命令是在Postgres-10 是no problem 的:

pg_basebackup -D $PGDATA --xlog-method=stream --format=t

由于WAL流发生在主节点Main进程fork出来的不同的子进程中,
将创建另一个名为pg_wal.tar的tar文件。
今后,每一个表空间的基础备份文件会以tar结尾,
并将内容保存到pg_wal/(pre-10 中为pg_xlog/)文件夹中。
这是要注意的要点:
当从tar格式化的方法恢复备份时,
新创建的tar文件内容需要是untar的,
但更重要的是复制到正确的位置。

三、基础备份会排除一些文件目录

在pg_basebackup得到改善三的是一系列文件夹是被基础备份排除在外。
这已经通过加入 提交6ad8ac6
下面是它的符号链接的源服务器就变成在基础备份空文件夹中的文件夹列表:

  • pg_notify/NOTIFY/LISTEN的内容。
  • pg_serial/对串行化的事务提交。
  • pg_snapshots/外部快照数据。
  • pg_stat_tmp/临时统计信息的默认路径。
  • pg_subtrans/子事务状态数据。

注意,pre-10 实际上不能很好的处理这些路径的符号链接,
所以要注意在这种情况下的限制。
例如pg_stat_tmp/是hte的临时统计目录,
如果没有在postgresql.conf中指定一个绝对路径,
用户可以保持默认值,而不是使用默认配置,使用符号链接到其他地方。

另外要注意的重要一点是,pg_xlog里面(或者版本10中的为pg_wal),
以及pg_replslot/如果在源服务器中是个符号链接的话,
会包含在基础备份中,表现是个空目录。

这些改进都已经提交commit,
虽然无法保证Postgres 10后面还会有什么改动,
但当前状态已经表明了下一个Postgres版本中pg_basebackup拥有一个啥样的蓝本。

请在登录后发表评论,否则无法保存。
© 2010 PostgreSQL中文社区