我有一个主/从 postgresql 配置,其中从属是热备用,用作只读备份。目前,archive_command 设置为“cd”。(我读过的空话)。我的理解是archive_command可以将wal段复制到特定位置;通常我会看到使用 cp 命令将其复制到磁盘其他位置的示例。我将 wal_keep_segments 设置为 256,所以如果我理解正确的话,slave 可能会落后 wal 大约 4GB (16MB * 256) 的变化。这可能是为什么我从来不需要使用 archive_command 的原因,因为我有足够的 wal 段来解决一些滞后问题?
那么可选的 archive_command 的目的是为了保存比 wal_keep_segments 设置更多的 wal 段吗?因此,在我的情况下,数据库目录 (pg_xlog) 中将有 256 个 wal 段,并且 postgres 会在达到限制时自动轮换并清理这些 wal 段。
而且,如果我放置了一个 archive_command,它是否会继续将 wal 段保存到命令将文件复制到的任何位置(并继续添加越来越多的存档 wal 段,除非我添加了自己的清理过程)?这种想法正确吗?
那么,假设我对 archive_command 的理解是正确的,从站如何利用这些 wal 文件?从站是否首先尝试从主数据目录中检索 256 个 wal 文件,然后返回到 recovery_command 以检索早于此的 wal 文件?recovery_command 是在从站上运行还是以某种方式通过主站代理?recovery_command 的许多示例都显示它与 cp 一起使用,所以我不确定文件是如何传输到不同服务器的?
我已经尝试阅读许多关于此的指南,包括以下内容。
我什么时候必须使用 archive_command,什么时候不用
https://www.postgresql.org/docs/current/static/continuous-archiving.html
我对这些概念仍然有点模糊,并试图达到一些清晰度。有人可以澄清我上面的想法是否正确以及为什么我可以使用 archive_command 吗?谢谢阅读。
这是我的配置:
大师:postgresql.conf
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
max_wal_senders …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 SQL Server 数据库,其中包含订单和执行这些订单的机器。一台机器不能同时分配多个有效订单。换句话说:这个 SQL 请求永远不会产生结果:
SELECT MachineId
FROM Orders
WHERE (Orders.Status=1)
GROUP BY MachineId
HAVING COUNT(Id)>1
Run Code Online (Sandbox Code Playgroud)
我在 Microsoft SQL Server Management Studio 环境中打开此 SQL 请求,每次按 时F5,我确实看不到任何结果。
但是,我确信 SQL 查询有时确实会产生结果,并且我对那些时间以及当时查询的结果很感兴趣。
有人知道我如何找到这个吗?(“archive-log”标签只是一个想法)
提前致谢
在具有多个 PDB 的 Oracle 12c 多租户数据库实例中,是否可以ARCHIVELOG在单个 PDB 上启用模式?
我对 PostgreSQL 管理还比较陌生,我正在尝试了解具体的细节。我的问题是,假设我不需要灾难恢复并且我没有通过设置打开归档archive_mode = on,Postgres 是否有内部机制可以将 WAL 文件轮换出来pg_xlog?如果有,频率是多少?
稍微不同的是,设置archive_mode = on但不配置archive_command- 是否存在 Postgres 将尝试存档到的默认位置?
archive-log ×4
postgresql ×2
backup ×1
multi-tenant ×1
oracle ×1
oracle-12c ×1
replication ×1
sql-server ×1