Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用未使用的Wal文件重新启动Master Postgres DB_Postgresql - Fatal编程技术网

Postgresql 使用未使用的Wal文件重新启动Master Postgres DB

Postgresql 使用未使用的Wal文件重新启动Master Postgres DB,postgresql,Postgresql,我们有一种情况,walmanager被用来在主Postgres数据库和从Postgres数据库之间传送wal文件。从机出现故障,必须重建。这导致大量未使用的wal文件在主机上累积 如果向Postgres主机发出重新启动命令,并且有24小时未使用的wal文件挂起,那么主机是否会受到影响,或者它是否会干净地启动 底线 如果WAL shipping工作正常,那么master将开始清理 正当理由 这听起来像是传统的、9.0之前的、温暖的备用装运。大致回忆一下它是如何工作的。主人继续工作,直到墙达到一定的

我们有一种情况,walmanager被用来在主Postgres数据库和从Postgres数据库之间传送wal文件。从机出现故障,必须重建。这导致大量未使用的wal文件在主机上累积

如果向Postgres主机发出重新启动命令,并且有24小时未使用的wal文件挂起,那么主机是否会受到影响,或者它是否会干净地启动

底线 如果WAL shipping工作正常,那么master将开始清理

正当理由 这听起来像是传统的、9.0之前的、温暖的备用装运。大致回忆一下它是如何工作的。主人继续工作,直到墙达到一定的(可配置的)大小阈值。当满足WAL大小阈值时,主机开始WAL检查点。作为检查点的一部分,主机将检查点之前的所有WAL记录完全同步到持久性存储上。换句话说,在提交WAL检查点之前的所有内容都保证在磁盘上。在检查点提交之后,可以安全地丢弃前面的WAL

Postgres会在每个检查点之后丢弃或回收WAL文件。但是,对于热备用,它首先通过调用您配置的
archive\u命令来发送检查点WA段。听起来好像您正在使用SkyTools的脚本作为
存档\u命令
archive_命令
将WAL段从主机的专用存储器,
$PGDATA/data/pg_xlog
复制到某个中立存储器,从机随后可以在该存储器中使用它。您正在使用一些中立目录来存储WAL段,直到从属服务器使用它们,对吗?无论如何,一旦
archive_命令
向主机返回零,主机将假定WAL段已成功装运,并删除或重用
$PGDATA/data/pg_xlog
中留下的段文件。主人从不知道或关心那之后会发生什么。
archive\u命令制作的段拷贝可能被从机消耗,也可能不被从机消耗;主人没有参与

换句话说,当WAL段装运时,主机的控制结束。因此,船长不能干预已装运但未使用的舱段。这包括重新启动主机

警告 但是:如果您的WAL shipping被破坏,那么所有赌注都被取消。确保您的
archive\u命令
工作正常,并且未使用的WAL位于两个Postgres安装之外的中立目录中。前面的讨论还假设您正在执行推荐的热备用配置,如手册中的PG团队详细信息


这也是我最喜欢检查备份的时间。给我温暖和模糊的感觉,看看如果发生意外情况,我仍然可以恢复…

WAL段边界和检查点不一定是同一件事,这就是为什么我们有“checkpoint_段”设置。不过,这只是一个小小的狡辩:本质上,这是一个有用的总结。主节点不会丢弃或回收WAL段,只要它们包含自上次检查点以来的数据。一旦完成了检查点,从主控者的角度来看,之前的任何WAL段都是多余的,不会用于恢复。由于archive_命令失败而导致的构建只会浪费磁盘空间,仅此而已。我掩盖了这一点,但你是对的。谢谢你澄清这一点。