问题
I have a big problem - I managed to accidentally uninstall the whole PostgreSQL DBMS from my hard drive. I also lost my database and haven't made any dumps of the containing data. I do, however, have a backup of all files from the server. Is it possible to somehow restore the database from these files?
The OS I am using is Debian 6, and the DBMS version is PostgreSQL 8.4.
If it is indeed possible, then how should I go about achieving this?
ps. Sorry for my English.
回答1:
Make sure your backup is safe. So long as we have that we can start again.
Restore the PostgreSQL server software (check package titles)
apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4
Stop the server
/etc/init.d/postgresql stop
Restore all your data files. Make sure the ownership is correct:
cd /var/lib/postgresql/8.4/
mv main main.OLD
cp -a /path/to/backup/main .
/etc/init.d/postgresql start
Check the logs (/var/log/postgresql/...) - if your backup occurred while the database was idle you are probably in luck.
Note that you need everything in .../main/ - the database files are in main/base but there are the transaction logs and other assorted bits and pieces needed too.
If you get problems, check your permissions, check your postgresql.conf file (restore that from backup too if you have it, pg_hba.conf etc too). There might be some other packages you need to install too if you were using pl/perl or some such earlier
Now. if you get problems complaining about missing log-files or bad blocks then that means the backup happened while the database was writing to the disk and there may be corruption. However, let's be optimistic and hope for the best.
If it works, check everything looks OK and take a pg_dump of any databases you want straight away.
来源:https://stackoverflow.com/questions/17865969/restore-postgresql-from-files