我有两个正在使用流复制的数据库,并且似乎处于这种状态
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
用作复制机制的一部分。
如果您按照流复制手册中的描述通过发送预写日志来设置 Postgres 复制,那么是的,所有副本都处于正常的永久恢复状态。当对主节点执行写事务时,副本从主节点接收并应用日志,就像恢复中的任何 Postgres 服务器一样。
您看到的变化数字是当前收到的交易 ID。
请阅读完整的链接页面以阐明详细信息。对我来说,这很明显,备用(从)服务器实际上会持续执行恢复,除非被提升。