I am working with a client who has a 9.1 database rapidly approaching XID wraparound. They also have an exceedingly large pg_largeobject table (4217 GB) that has never been vacuumed. An attempt to vacuum this on a replica has run for days and never succeeded. (Or more accurately, never been allowed to succeed because we needed to get the replica back on-line.)
Are there creative ways to do such a vacuum with minimal impact on production? Even if I let the vacuum complete on the replica, I don't think I can play accrued logs from the master, can I? Or is there some trick to doing so?
I explored using slony and was all excited until I discovered it won't replicate pg_largeobject because it cannot create triggers on the table.
I started looking into the pg_rewind contrib in 9.5, but it plays back xlogs to revert so would suffer the same problem as the replica.
Any other ideas about how we can do this?
Thanks!
--Dave