Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eZyoj-0000Qa-QA for pgsql-admin@arkaria.postgresql.org; Fri, 12 Jan 2018 12:52:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eZyoj-0007q7-Dg for pgsql-admin@arkaria.postgresql.org; Fri, 12 Jan 2018 12:52:17 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eZyoj-0007px-6m for pgsql-admin@lists.postgresql.org; Fri, 12 Jan 2018 12:52:17 +0000 Received: from smtprelay0187.b.hostedemail.com ([64.98.42.187] helo=smtprelay.b.hostedemail.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eZyog-00085D-L5 for pgsql-admin@lists.postgresql.org; Fri, 12 Jan 2018 12:52:16 +0000 Received: from filter.hostedemail.com (10.5.19.248.rfc1918.com [10.5.19.248]) by smtprelay06.b.hostedemail.com (Postfix) with ESMTP id 5410B8D016; Fri, 12 Jan 2018 12:52:11 +0000 (UTC) X-Session-Marker: 616C76686572726540616C76682E6E6F2D69702E6F7267 X-Spam-Summary: 50,0,0,,d41d8cd98f00b204,alvherre@alvh.no-ip.org,:::::,RULES_HIT:41:355:379:599:800:967:973:988:989:1260:1277:1311:1312:1313:1314:1345:1359:1437:1515:1516:1518:1519:1534:1541:1593:1594:1595:1596:1711:1730:1747:1777:1792:2393:2525:2560:2563:2682:2685:2828:2859:2898:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3353:3865:3866:3867:3868:3870:3871:3872:3873:3874:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4250:4605:5007:6261:7875:7903:9025:9121:10004:10400:10848:11232:11658:11914:13069:13311:13357:13439:13618:13891:13894:13895:14130:14181:14764:21080:21324:21433:21627:30006:30045:30054:30069:30070,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:,MSBL:0,DNSBL:none,Custom_rules:0:0:0,LFtime:3,LUA_SUMMARY:none X-HE-Tag: hands65_4d008276c2617 X-Filterd-Recvd-Size: 2550 Received: from alvin.alvh.no-ip.org (unknown [179.57.113.18]) (Authenticated sender: alvherre@alvh.no-ip.org) by omf10.b.hostedemail.com (Postfix) with ESMTPA; Fri, 12 Jan 2018 12:52:09 +0000 (UTC) Received: by alvin.alvh.no-ip.org (Postfix, from userid 1000) id 21A2887D; Fri, 12 Jan 2018 09:52:06 -0300 (-03) Date: Fri, 12 Jan 2018 09:52:06 -0300 From: Alvaro Herrera To: flumbador@virgilio.it Cc: Rui DeSousa , pgsql-admin@lists.postgresql.org Subject: Re: Issue on restore / recover Message-ID: <20180112125206.gdwp3ulxc3pa6wdt@alvherre.pgsql> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <326066541.973171.1515753625461@mail.virgilio.it> User-Agent: NeoMutt/20170306-137-4415bd-dirty (1.8.0) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk flumbador@virgilio.it wrote: > I want to show that postgresql, while is recovering the database > applying the WAL file, don't raise any error if it can't find a > missing file. It continue the recovery that end successfully. I know > that the source of the problem is that I have to guarantee that the > backup is complete and consistent but it sound me strange that > postgresql don't signal any errors when it can't find a file .... I > hope that is clear the scope of the testcase. It seems clear to me. Our current answer is that we just don't check for this. It seems a very difficult situation to check for -- firstly because, as you must have realized by now, the recovery process creates some files that are missing when recovery starts, so just checking "do all files exist" prior to starting recovery is not the right thing to check for. Maybe you could figure out a check to run just at the point where consistent point is reached, but (secondly) that would be a very expensive way to check for a condition in the "should not happen" camp (namely, that your backup tool is randomly losing files). Maybe one thing that is happening is that if you lose a whole file, and later the recovery process fills page 2 with the correct tuples, then page 0 and page 1 are initialized too to the empty state as a side effect. If this is indeed what is happening, I have to say that it's not great. But again, with a working backup system you wouldn't have lost the file in the first place, so the case doesn't arise. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services