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 / 问题 / 30626
Accepted
jberryman
jberryman
Asked: 2012-12-18 11:25:30 +0800 CST2012-12-18 11:25:30 +0800 CST 2012-12-18 11:25:30 +0800 CST

在热备用服务器上运行 pg_dump?

  • 772

免责声明:我承认我还没有尝试过,但我不确定我是否会知道它是否工作不正常,所以我想问一下。

我想pg_dumpall从运行流复制的热备用服务器运行每晚备份作业(通过),以避免将负载放在主服务器上。我只看到提到人们遇到的一些问题,例如这里和这里,但很少有指导。如果备份稍微落后于主数据库,这没关系,只要它是一致的(它应该是)。

我的问题是:

  1. 我真的要这样做,还是应该在主服务器上进行备份?为什么?

  2. 在备用设备上进行转储时,我需要哪些设置以及我应该使用哪些程序来正确执行此操作?例如,我必须在备份期间停止复制吗?

postgresql replication
  • 3 3 个回答
  • 16122 Views

3 个回答

  • Voted
  1. Best Answer
    Craig Ringer
    2012-12-18T15:49:53+08:002012-12-18T15:49:53+08:00

    AFAIK,pg_dump在热备用上运行是备用的主要用途之一。它是完全安全的,尽管它不是完全可靠的——如果备用数据库落后于主数据库太远而中止事务,则转储可能会失败。

    您真正需要注意的唯一一件事是确保待机是最新的并且跟上。如果备用数据库失去了与主数据库的连接并且落后太远,那么您不会想要愉快地备份一个三周过时的备用数据库。

    在备份期间,您需要让备用服务器远远落后于主服务器,否则它必须取消您的pg_dump事务才能继续重播 WAL。请参阅有关热备的文档,尤其是“处理查询冲突”部分以及max_standby_archive_delay和max_standby_streaming_delay参数。

    请注意,master 必须愿意保留足够的 WAL 档案以允许 slave 再次赶上。

    • 25
  2. Ruslan Kabalin
    2014-02-08T03:53:05+08:002014-02-08T03:53:05+08:00
    1. 我们在待机时进行备份,这非常好。
    2. 为避免在备用系统上备份期间取消的语句冲突,您需要使用 暂停备用上的复制SELECT pg_xlog_replay_pause();,然后运行备份,一旦完成运行SELECT pg_xlog_replay_resume();以恢复复制。请记住,运行上述命令将导致从属设备上的恢复延迟,这可能会非常大,具体取决于您的数据库大小。此外,请考虑 WAL 段将占用的空间,因为在暂停期间它们不会在从站上重播。

    您可能会在文档中找到一些其他有用的管理功能。例如,在暂停服务器之前检查服务器是否真的处于恢复中:SELECT pg_is_in_recovery().

    • 14
  3. Pablo Luna
    2016-08-20T02:57:07+08:002016-08-20T02:57:07+08:00

    免责声明:仅适用于PG12,PG13+使用复制槽

    如果您在备份期间暂停复制,(这是保持完整性和一致性的好主意),您可以在您的主 postgresql 中编辑一些行:

    有多少时间习惯性地延迟备份。确保主节点保留恢复复制所需的整个 x_log 文件。你可以在 postgresql.conf 编辑中做到这一点

    wal_keep_segments = 32      # in logfile segments, 16MB each; 0 disables
    

    如果你不修改这个并且你的备份过程太长,可能是主节点在将它们发送到从节点之前删除了xlog文件。

    • 0

相关问题

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

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

  • PostgreSQL 中 UniProt 的生物序列

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

Sidebar

Stats

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

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

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

    • 7 个回答
  • 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
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +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
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +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