On Mon, Feb 20, 2012 at 11:09 PM, Bruce Momjian <bruce@momjian.us> wrote:
> On Sun, Feb 19, 2012 at 05:04:06PM -0500, Robert Haas wrote:
>> Another disadvantage of the current scheme is that there's no
>> particularly easy way to know that your whole cluster has checksums.
>> No matter how we implement checksums, you'll have to rewrite every
>> table in the cluster in order to get them fully turned on. But with
>> the current design, there's no easy way to know how much of the
>> cluster is actually checksummed. If you shut checksums off, they'll
>> linger until those pages are rewritten, and there's no easy way to
>> find the relations from which they need to be removed, either.
>
> Yes, pg_upgrade makes this hard. If you are using pg_dump to restore,
> and set the checksum GUC before you do the restore, and never turn it
> off, then you will have a fully checksum'ed database.
>
> If you use pg_upgrade, and enable the checksum GUC, your database will
> become progressively checksummed, and as Simon pointed out, the only
> clean way is VACUUM FULL. It is quite hard to estimate the checksum
> coverage of a database with mixed checksumming --- one cool idea would
> be for ANALYZE to report how many of the pages it saw were checksummed.
> Yeah, crazy, but it might be enough.
Well, I didn't say VACUUM FULL was the only clean way of knowing
whether every block is checksummed, its a very intrusive way.
If you want a fast upgrade with pg_upgrade, rewriting every block is
not really a grand plan, but if you want it...
If we did that, I think I would prefer to do it with these commands
VACUUM ENABLE CHECKSUM; //whole database only VACUUM DISABLE CHECKSUM;
rather than use a GUC. We can then add an option to pg_upgrade.
That way, we scan whole database, adding checksums and then record it
in pg_database
When we remove it, we do same thing in reverse then record it.
So there's no worries about turning on/off GUCs and we know for
certain where our towel is.
--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services