Обсуждение: How to find calculated CRC checksum of pg_controldata

Поиск
Список
Период
Сортировка

How to find calculated CRC checksum of pg_controldata

От
Matthew Rantala
Дата:
Hello,

Question: Is there a way to obtain the calculated CRC checksum for
pg_controldata from the command line?

I'm asking this because we had our database get wiped out, and for a
variety of reasons, did not have a clean backup of the data directory. I
did, however, have a complete set of WAL files for the database from the
origin of the instance's life. I was able to use these to restore the
database into a new database that I engineered look like a copy of the
original by editing the pg_control file (and first log file) by changing
the Database system identifier and the CRC checksum.

Finding the correct CRC checksum, however, was a pain. I downloaded the
code and modified pg_controldata.exe so it would display the file CRC
and calculated checksums so I would know what the correct value was.

I'm in the process of documenting what I did and it would make the whole
process much easier if there is a way to determine the CRC checksum
without having to dig into the source code. I am currently using 9.2.6.

Thanks for any info,

Matt, who was extremely lucky that I initiated WAL logging at the very
beginning.

--

Matthew J Rantala, GISP
Minnesota Geological Survey
University of Minnesota
2642 University Ave.
St. Paul, MN 55114-1057
(612) 627-4780 x206



Re: How to find calculated CRC checksum of pg_controldata

От
Bruce Momjian
Дата:
On Thu, Apr  3, 2014 at 08:58:26AM -0500, Matthew Rantala wrote:
> Hello,
>
> Question: Is there a way to obtain the calculated CRC checksum for
> pg_controldata from the command line?
>
> I'm asking this because we had our database get wiped out, and for a
> variety of reasons, did not have a clean backup of the data
> directory. I did, however, have a complete set of WAL files for the
> database from the origin of the instance's life. I was able to use
> these to restore the database into a new database that I engineered
> look like a copy of the original by editing the pg_control file (and
> first log file) by changing the Database system identifier and the
> CRC checksum.
>
> Finding the correct CRC checksum, however, was a pain. I downloaded
> the code and modified pg_controldata.exe so it would display the
> file CRC and calculated checksums so I would know what the correct
> value was.
>
> I'm in the process of documenting what I did and it would make the
> whole process much easier if there is a way to determine the CRC
> checksum without having to dig into the source code. I am currently
> using 9.2.6.
>
> Thanks for any info,
>
> Matt, who was extremely lucky that I initiated WAL logging at the
> very beginning.

Did you try pg_resetxlog?  That should set the checksum properly.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +


Re: How to find calculated CRC checksum of pg_controldata

От
Matthew Rantala
Дата:
On 4/9/2014 11:44 AM, Bruce Momjian wrote:
> On Thu, Apr  3, 2014 at 08:58:26AM -0500, Matthew Rantala wrote:
>> Hello,
>>
>> Question: Is there a way to obtain the calculated CRC checksum for
>> pg_controldata from the command line?
> Did you try pg_resetxlog?  That should set the checksum properly.
>
Thanks, Bruce

I think I actually tried that and while it did correct the checksum, I
think it also closed/finalized the first log file
(00000001000000000000001) and modified the checkpoint locations which
wasn't going to work in my recovery. There may be a way to avoid that by
passing the correct parameters, but I found digging into the source code
easier.

Thanks again,

Matt

--

Matthew J Rantala, GISP
Minnesota Geological Survey
University of Minnesota
2642 University Ave.
St. Paul, MN 55114-1057
(612) 627-4780 x206