Hi all,
Our virtual server (running 9.4) suffered a disk corruption outage due
to a flaky SAN. As a result, all the contents of /var/lib/postgresql
ended up (along with lots of other things) in lost+found with names like
#1835289.
By looking for directories containing PG_VERSION (and checking the
version number), I found 9 directories named like:
./#1835987/PG_VERSION. These look similar to other top-level dirs within
main/base, and "strings" shows contents that does indeed look like I've
identified the right thing.
So, I made a clean install of Postgres 9.4 on a new machine (Ubuntu
17.04), and copied the directories into
/var/lib/postgresql/9.4/main/base. I now have:
root@treacle:/var/lib/postgresql/9.4/main/base# ls
1 12172 12177 16384 1828647 1835009 1835289 1835317 1835987
1843977 1844229 1844901 1958920
where the first 3 directories are the system defaults, 16384 is a test
that I created, and 1828647 - 1958920 are the recovered top-level
database directories (but with the wrong names). However, Postgresql
doesn't recognise them.
From what I've been able to understand, if I could find out what the
database OIDs used to be, I could just rename the 1828647 etc to the
correct names, and it would work. But I'm not sure how to do this... all
the documents are about how to find the file if you know the OID, rather
than how to set the OID to match the file. I tried the "obvious" step
of creating a new database called "rescue", getting 16384, stopping
postgresql, renaming one of my backups to 16384, and restarting - but
that doesn't help.
Can anyone here give me a pointer?
Thanks very much for your help,
Richard
P.S. I've just joined, and I think I'm posting this to the right place
but if not, please let me know.
--
Sent via pgsql-admin mailing list (pgsql-admin@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin