Hi,
what is Postgresql's strategy when to fetch WAL from the master while in
streaming replication, and could it be tweaked?
I'm using a physical streaming replication slave to have a database
lagging behind about one month behind the primary, by setting
"recovery_target_time" to the desired point in time.
This setting is periodically advanced by a cronjob to allow the replica
to roll forward. It's a 10.3-1 install on Debian.
It seems that as soon as the slave needs new WAL data to reach the
requested target time, it will connect to the primary and fetch /all/
new WAL the primary has available for the slave's slot - up to "now",
ignoring the recovery_target_time.
So in my setup, the slave will connect to the primary once per month,
and download the whole next month's WAL data at once.
I do not care on which instance WAL is kept until needed, but I'd really
prefer if the transfer (and disk space requirement!) would be more
evenly distributed.
One option of course would be to use some transfer mechanism external to
Postgresql... but so far I'm thinking there must be any easier way?
Thanks & best regards,
-hannes