Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1X8xD0-00033t-Ch for pgsql-bugs@arkaria.postgresql.org; Sun, 20 Jul 2014 19:55:46 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1X8xCz-0004bA-I3 for pgsql-bugs@arkaria.postgresql.org; Sun, 20 Jul 2014 19:55:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1X8xCy-0004b4-Se for pgsql-bugs@postgresql.org; Sun, 20 Jul 2014 19:55:44 +0000 Received: from sss.pgh.pa.us ([66.207.139.130]) by magus.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1X8xCs-0001hs-H0 for pgsql-bugs@postgresql.org; Sun, 20 Jul 2014 19:55:41 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.4/8.14.4) with ESMTP id s6KJtPOv013211; Sun, 20 Jul 2014 15:55:25 -0400 From: Tom Lane To: Bruce Momjian cc: Alvaro Herrera , Andres Freund , PostgreSQL Bugs Subject: Re: pg_upgrade < 9.3 -> >=9.3 misses a step around multixacts In-reply-to: <9879.1405877821@sss.pgh.pa.us> References: <20140619020633.GA20469@momjian.us> <20140619015205.GD3806@momjian.us> <20140619014034.GC3806@momjian.us> <20140619220425.GQ18688@eldon.alvh.no-ip.org> <20140620010653.GS18688@eldon.alvh.no-ip.org> <20140620180725.GD29143@momjian.us> <20140624201346.GB17110@momjian.us> <20140627210520.GP7340@eldon.alvh.no-ip.org> <20140701161419.GA16033@momjian.us> <20140701190105.GA7340@eldon.alvh.no-ip.org> <20140701193047.GB16033@momjian.us> <9879.1405877821@sss.pgh.pa.us> Comments: In-reply-to Tom Lane message dated "Sun, 20 Jul 2014 13:37:01 -0400" Date: Sun, 20 Jul 2014 15:55:25 -0400 Message-ID: <13210.1405886125@sss.pgh.pa.us> X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-bugs Precedence: bulk Sender: pgsql-bugs-owner@postgresql.org I wrote: > I started transcribing Bruce's proposed fix procedure at > https://wiki.postgresql.org/wiki/20140702pg_upgrade_fix > into the release notes, but I'm afraid it's all wet. > He's suggesting copying the last checkpoint's NextMultiXactId into > datminmxid/relminmxid, which is surely the wrong thing: that's likely to > be newer than all mxids in the tables, not older than them. I thought at > first that this was a simple thinko and he meant to write oldestMultiXid, > but here's the thing: if we're in the situation where we've got > wraparound, isn't oldestMultiXid going to be 1? The value recorded in the > checkpoint isn't magic, it's just going to be extracted from whatever's in > pg_database; and the whole problem here is that we can't trust that data. > Where can we get a useful lower bound from? Ugh: it's worse than that. pg_upgrade itself is using this utterly nonsensical logic to set datminmxid/relminmxid. This is a stop-ship issue for 9.3.5. After some reflection it seems to me that we could estimate oldestmxid for a pre-9.3 source cluster as the NextMultiXactId from its pg_control less 2000000000 or so. This will nearly always be much older than the actual oldest mxid, but that's okay --- the next vacuuming cycle will advance the datminmxid/relminmxid values to match reality, so long as they aren't wrapped around already. Note that there's already an assumption baked into pg_upgrade that 2E9 xids or mxids back is safely past the oldest actual data; see where it sets autovacuum_freeze_max_age and autovacuum_multixact_freeze_max_age while starting the new cluster. (Hm ... I guess "2000000000 or so" actually needs to be a bit less than that, otherwise autovacuum might kick off while we're munging the new cluster.) We could recommend the same estimate in the instructions about cleaning up a previous pg_upgrade by hand. regards, tom lane -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs