我有两个使用流复制的数据库,似乎处于这种状态
postgres 16319 0.0 0.5 137949952 3077260 ? Ss Aug22 0:11 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/
postgres 16321 0.0 0.0 249564 2080 ? Ss Aug22 0:00 \_ postgres: logger
postgres 16322 7.3 5.2 137950296 27899272 ? Ss Aug22 9031:16 \_ postgres: startup recovering 0000000100003EA70000002C
postgres 16323 0.8 5.2 137950152 27549964 ? Ss Aug22 1001:55 \_ postgres: checkpointer
postgres 16324 0.0 0.1 137949928 1050960 ? Ss Aug22 1:40 \_ postgres: background writer
postgres 16338 0.0 0.0 251960 2328 ? Ss Aug22 57:32 \_ postgres: stats collector
postgres 16339 10.6 0.0 137961464 5116 ? Ss Aug22 13123:06 \_ postgres: walreceiver streaming 3EA7/2C5A24F0
我通常只在数据库处于不良状态时才注意到“正在恢复”。当我在副本上运行查询时,我得到了
ERROR: canceling statement due to conflict with recovery
我注意到“流式传输 3EA7/2C5A24F0”并且恢复正在增加。
似乎SELECT * FROM pg_stat_wal_receiver
也在增加。
我只是想确保我的数据库没有问题,它只是recovery
作为复制机制的一部分使用。
答案1
如果你通过发送预写日志来设置 Postgres 复制,如流复制手册,那么是的,所有副本都处于永久恢复状态,这是正常的。当对主节点执行写入事务时,副本会从主节点接收并应用日志,就像任何处于恢复状态的 Postgres 服务器一样。
您看到的变化的数字是当前收到的交易ID。
请阅读完整的链接页面以澄清详细信息。对我来说,这很清楚,除非升级,否则备用(从属)服务器实际上会持续执行恢复。