AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 305402
Accepted
amanullah
amanullah
Asked: 2021-12-27 05:02:28 +0800 CST2021-12-27 05:02:28 +0800 CST 2021-12-27 05:02:28 +0800 CST

pg_basebackup 耗时太长

  • 772

我正在尝试在 Linux 上设置流复制。pg_basebackup由于巨大的数据大小(即 7TB)而失败。它失败了,因为备份时间太长,即 20 小时。并且所需的 WAL 文件已经从 master 中消失了。那么我该如何解决这个问题以及如何加快这个pg_basebackup过程呢?我正在使用 PostgreSQL 13。我需要更改postgres.conf主从的哪些,以及我需要使用哪些开关来加快备份过程?我正在使用以下命令

pg_basebackup -h 192.168.100.81 -U repuser -p 5432 -D /var/lib/postgresql/13/main \
 -Fp -Xs -P -R -C -S Secondary01 --checkpoint=fast --max-rate=1024M
postgresql backup
  • 1 1 个回答
  • 606 Views

1 个回答

  • Voted
  1. Best Answer
    jjanes
    2021-12-27T19:41:39+08:002021-12-27T19:41:39+08:00

    正如 Melkij 所建议的那样,使用插槽应该可以防止所需的 WAL 被删除。但是,我怀疑 pg_basebackup 中存在一些计时错误,它无论如何都会发生。我已经在“野外”看到过几次,但在我尝试的时候却从来没有得到它,这使得调查和解决变得困难。

    如果您像 Melkij 认为的那样与 max_slot_wal_keep_size 发生冲突,我认为它会失败并显示不同的错误消息pg_basebackup: error: unexpected termination of replication stream: FATAL: terminating connection due to administrator command,这就是为什么我认为您更有可能遇到计时错误。当我遇到这个错误时,我在备份开始后很快就收到了错误消息。但是很容易错过这条消息,然后它继续复制整个数据目录,最终最终失败。

    因此,一种选择是再试一次,在开始时留意错误消息,以便您可以手动中止该过程,而不是让它运行 20 个小时无用的时间。

    虽然 pg_basebackup 确实很方便,但它在几个方面都不是很好。因此,您可能希望使用不同的方法进行独占备份来复制数​​据,例如rsync. pg_basebackup 的压缩选项有点用处,它以未压缩的方式通过网络传输数据,然后在客户端对其进行压缩。这与你想要建立一个副本的相反。rsync 的 -z 选项将压缩传输的数据,然后在它到达后解压缩。这将有多大的好处将取决于您的数据,但我已经看到它通过慢速网络将传输速度提高了 15 倍。

    独占备份的另一个优点是,如果它被网络故障或其他原因中断,您可以使用 -c 选项让 rsync 从中断的地方继续,而 pg_basebackup 不会这样做。但是,这将有多大效率将取决于您的数据在此期间有多少已上交。

    当然,您必须从打开 WAL 归档开始,或者使用 pg_receivewal 或类似的东西来捕获在初始复制期间生成的 WAL,因为 rsync 不会像 pg_basebackup 尝试那样为您做这件事。

    • 1

相关问题

  • 运行时间偏移延迟复制的最佳实践

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve