前段时间无法理解这个参数什么意思,今天又研究了一下。
以下是官网给出的解释
-X method
--xlog-method=method
在备份中包含所需的事务日志文件(WAL文件)。这将包括所有在备份期间产生的事务日志。 如果声明了这个选项,那么直接在提取出的目录(不需要参考日志归档)中启动一个主进程是可能的。 因此使其成为一个完全独立的备份。
支持下列收集事务日志的方法:
-Xf , -X fetch , --xlog-method=fetch
事务日志文件在备份结束时收集。因此,wal_keep_segments 参数有必要设置的足够高,使日志在备份结束之前不会被删除。如果日志在要被转移的时候已经转动了, 那么备份将失败并且不能使用。
-Xs , -X stream, --xlog-method=stream
当备份创建时流事务日志。这将在运行备份时打开又一个到服务器的连接并并行启动流事务日志。 因此,它将使用两个max_wal_senders参数配置的插槽。 只要客户端可以跟上接收到的事务日志,使用这个方法需要没有额外的事务日志在主机上保存。
个人总结
fetch:pg_basebackup备份在没有结束之前,不会把主库上的wal日志文件替换掉,所以要设置max_wal_size(12版本之后的参数)。
stream:相当于打开了两个通道,即启动另一个流复制连接从主库接收WAL日志,即启动两个walsender进程(需要考虑max_wal_senders参数是否够用)。