Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r5A9d-00C6ZM-LR for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Nov 2023 19:41:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r5A9a-00A8iI-Ij for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Nov 2023 19:41:54 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r5A9a-00A8iA-8P for pgsql-hackers@lists.postgresql.org; Mon, 20 Nov 2023 19:41:54 +0000 Received: from mail.thelabyrinth.net ([45.56.70.56]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r5A9V-006WWn-5y for pgsql-hackers@lists.postgresql.org; Mon, 20 Nov 2023 19:41:50 +0000 Received: from [10.5.0.2] (unknown [45.14.195.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dsteele) by mail.thelabyrinth.net (Postfix) with ESMTPSA id 501EE54665; Mon, 20 Nov 2023 19:41:46 +0000 (UTC) Message-ID: Date: Mon, 20 Nov 2023 15:41:38 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add recovery to pg_control and remove backup_label Content-Language: en-US To: Robert Haas Cc: Michael Paquier , Postgres hackers References: <46c300b9-96a1-449c-8ecd-9003bd02cb6b@pgmasters.net> <77ad92e7-3e37-40e2-8e3b-df3cf0108aa8@pgmasters.net> <38b212b7-b8c0-46ea-940b-f27ec3a24deb@pgmasters.net> From: David Steele In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 11/20/23 14:44, Robert Haas wrote: > On Mon, Nov 20, 2023 at 12:54 PM David Steele wrote: >> Another thing we could do is explicitly error if we see backup_label in >> PGDATA during recovery. That's just a few lines of code so would not be >> a big deal to maintain. This error would only be visible on restore, so >> it presumes that backup software is being tested. > > I think that if we do decide to adopt this proposal, that would be a > smart precaution. I'd be OK with it -- what do you think, Michael? Would this be enough that we would not need to rename the functions, or should we just go with the rename? >> A little hard to add to the tests, I think, since they are purely >> informational, i.e. not pushed up by the parser. Maybe we could just >> grep for the fields? > > Hmm. Or should they be pushed up by the parser? We could do that. I started on that road, but it's a lot of code for fields that aren't used. I think it would be better if the parser also loaded a data structure that represented the manifest. Seems to me there's a lot of duplicated code between pg_verifybackup and pg_combinebackup the way it is now. >> I think these fields would be handled the same as the rest of the fields >> in backup_label: returned from pg_backup_stop() and also stored in >> backup_manifest. Third-party software can do as they like with them and >> pg_combinebackup can just read from backup_manifest. > > I think that would be a bad plan, because this is critical > information, and a backup manifest is not a thing that you're required > to have. It's not a natural fit at all. We don't want to create a > situation where if you nuke the backup_manifest then the server > forgets that what it has is an incremental backup rather than a usable > data directory. I can't see why a backup would continue to be valid without a manifest -- that's not very standard for backup software. If you have the critical info in backup_label, you can't afford to lose that, so why should backup_manifest be any different? Regards, -David