Answers:
pg_dump
在热备用数据库上运行的AFAIK 是备用数据库非常有用的主要功能之一。这是绝对安全的,尽管它不是绝对可靠的-如果备用数据库在与主服务器之间的距离太远时中止了交易,则转储可能会失败。
您真正需要注意的唯一一件事就是确保备用电源是最新的并且保持正常运行。如果备用数据库失去了与主数据库的连接并落在后面太远,您就不会很乐意备份三个星期过期的备用数据库。
您将需要允许备用数据库在备份期间远远落后于主数据库,因为否则它将不得不取消您的pg_dump
事务以继续重放WAL。请参阅有关热备用的文档,尤其是“处理查询冲突”部分以及max_standby_archive_delay
和max_standby_streaming_delay
参数。
请注意,主机必须愿意保留足够的WAL存档,以使从机能够再次追赶。
SELECT pg_xlog_replay_pause();
,然后在完成备份后运行备份SELECT pg_xlog_replay_resume();
以继续复制。请记住,运行上述命令将导致从属服务器的恢复滞后,这可能会很大,具体取决于您的数据库大小。另外,还要考虑WAL段将占用的空间,因为它们在暂停期间不会在从属服务器上重播。您可能会在文档中找到一些其他有用的管理功能。例如,在暂停服务器之前,检查服务器是否确实处于恢复状态SELECT pg_is_in_recovery()
。
如果在备份过程中暂停复制(这是保持完整性和一致性的好方法),则可以在主postgresql中编辑一些行:
有多少时间习惯性地延迟了备份。确保主节点保留恢复复制所需的整个x_log文件。您可以在postgresql.conf编辑中做到这一点
wal_keep_segments = 32 # in logfile segments, 16MB each; 0 disables
如果不进行此修改,并且备份过程太长,则可能是主节点在将xlog文件发送到从属节点之前先将其删除。
pg_dump
文档所述:“即使同时使用数据库,它也会进行一致的备份。”pg_dumpall
为每个数据库运行前者。