You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提升pg_basebackup速度 快速搭建PostgreSQL从库

关于pg_basebackup并行能力的明确结论

你当前使用的PostgreSQL 14版本自带的pg_basebackup确实没有提供并行备份相关配置项,并行传输能力是PostgreSQL 15版本才正式加入的功能,对应参数为-j/--jobs,可指定多个工作线程并行拉取不同数据文件。14及更早版本的pg_basebackup为单线程单连接传输,很容易卡在单链路带宽、单线程CPU瓶颈上,5TB体量下耗时长是必然现象。

针对当前5TB库搭建从库的优化方案

你当前使用的备份命令为:

pg_basebackup  -Xs -h 172.31.34.215 -U repuser --checkpoint=fast -D  /var/lib/postgresql/14/ter -R --slot=replication_slot -C

可以按优先级从低到高选择以下优化手段,速度提升幅度从30%到10倍不等:

一、原生pg_basebackup的参数调优

不需要改架构、装额外工具,先调整现有命令的参数榨干性能:

  • 按需开启压缩:如果主从之间内网带宽低于10G、是瓶颈项,加-z --compress=zstd:3(支持zstd的版本优先选,比默认gzip快3倍以上,CPU占用更低),压缩等级不要开超过3,避免CPU成为瓶颈;如果带宽富余、磁盘IO是瓶颈,就不要开压缩,减少编解码开销。
  • 跳过非必要校验:内网可信链路、存储可靠性足够的场景下,加--no-verify-checksums跳过数据块校验,降低两端CPU消耗。
  • 网络层调优:确保主从之间走内网万兆链路,网卡开启巨帧(MTU设为9000),调整内核TCP参数(放大tcp_rmem、tcp_wmem缓冲区、开启BBR拥塞控制),提升单TCP连接的吞吐量,避免单连接跑不满带宽。
  • 主库侧保障:备份前确保主库数据盘、WAL盘没有IO跑满的情况,备份窗口内尽量避免跑大批量写入任务,给WAL发送进程留足够的IO和CPU资源。

二、低改造成本的提速方案

如果参数调优后速度还是不满足要求,优先选这几个改动最小的方案:

  • 用高版本pg_basebackup做并行备份:不需要升级主库的PostgreSQL版本,只需要在从库节点安装PostgreSQL 15或更高版本的客户端工具,用高版本的pg_basebackup连接14主库,加-j N参数(N为并行线程数,万兆链路下设4-8即可,根据CPU核数调整)即可实现多线程并行拉取,备份出来的数据完全兼容PG14版本,直接用PG14的数据库程序启动从库即可,这个方案速度能提升3-5倍,改造成本极低。
  • 存储快照拷贝:如果主库用了云盘、LVM、ZFS、Btrfs这类支持一致性快照的存储/文件系统,先在主库执行手动checkpoint,打数据盘快照后将快照挂载到从库服务器,用多线程拷贝工具(如并行rsync、mbuffer)把数据拷到从库数据目录,配置好复制参数后启动从库追平WAL即可。这个方案是块级拷贝,速度比单线程文件传输快5-10倍,对主库业务影响极小。

三、长期可复用的方案

如果后续经常有大库备份、搭建从库的需求,直接用专业备份工具替代原生pg_basebackup:

  • 部署pgBackRest或Barman这类成熟的PG生态备份工具,这类工具早在PG14版本前就支持并行备份、并行压缩、增量备份,配置好并行线程数后可以轻松压满存储和带宽上限,5TB级别的库备份恢复时间可以压缩到单线程pg_basebackup的1/5甚至更短,备份完成后直接恢复到从库节点,配置流复制追平WAL即可完成搭建。
  • 不推荐手动执行pg_start_backup+多线程rsync的方案,操作门槛高,容易漏拷文件、弄错备份标签导致备份失效,除非你对PG基础备份的流程非常熟悉。

内容的提问来源于stack exchange,提问作者Kyosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:33:16