Thread: Restoring from filesystem backup

Restoring from filesystem backup

From
Dianne Yumul
Date:
Hello to everybody.

I just have a couple of newbie questions. I'm trying to restore our
databases from a file system backup. The backups are done with rsync,
the postgresql service is stopped before backups are done on the
server.  The system is Fedora Core 4 with Postgresql 8.0.3.

Now back to restoring. I tried the following on a development box :)
   1. stop postgresql service
   2. mv /home/postgres/data /home/postgres/data.old
   3. rsync over desired data/ folder from an external drive
   4. start postgresql service
The last step failed with this error from the logs:
   postmaster: could not find the database system
   Expected to find it in the directory "/home/postgres/data", but could
not open file "/home/postgres/data/global/pg_control":
   No such file or directory
Sure enough pg_control data was missing, actually
/home/postgres/data/global was empty. So I removed the 'bad' data/
directory and replaced it with a previous day's backup, and everything
restored nicely.

My questions are (1) what am I doing wrong that the filesystem backups
would sometimes have an empty /home/postgres/data/global directory,
thereby not permitting me to restore from it, and (2) what is the
preferred way to restore from a file system backup.

Any help, even a shove to the right direction, would be greatly
appreciated. Thank you and have a pleasant day.

Dianne


Re: Restoring from filesystem backup

From
Scott Frankel
Date:
I'm no expert, but I did just accomplish a restore from backup; so at
least I can help you with your second question.

pg_dump is the animal you'll want to use to create your backup.  I
use it wrapped in a script that automatically timestamps and names
the output appropriately.  Args looks like this:

     pg_dump -Ft -b -v the_db_name > the_output_file.tar

pg_restore restores the database.  i.e.:

     pg_restore -d  the_db_name  the_output_file.tar

Hope this helps -
Scott



On Nov 10, 2005, at 2:41 PM, Dianne Yumul wrote:

> Hello to everybody.
>
> I just have a couple of newbie questions. I'm trying to restore our
> databases from a file system backup. The backups are done with
> rsync, the postgresql service is stopped before backups are done on
> the server.  The system is Fedora Core 4 with Postgresql 8.0.3.
>
> Now back to restoring. I tried the following on a development box :)
>   1. stop postgresql service
>   2. mv /home/postgres/data /home/postgres/data.old
>   3. rsync over desired data/ folder from an external drive
>   4. start postgresql service
> The last step failed with this error from the logs:
>   postmaster: could not find the database system
>   Expected to find it in the directory "/home/postgres/data", but
> could not open file "/home/postgres/data/global/pg_control":
>   No such file or directory
> Sure enough pg_control data was missing, actually /home/postgres/
> data/global was empty. So I removed the 'bad' data/ directory and
> replaced it with a previous day's backup, and everything restored
> nicely.
>
> My questions are (1) what am I doing wrong that the filesystem
> backups would sometimes have an empty /home/postgres/data/global
> directory, thereby not permitting me to restore from it, and (2)
> what is the preferred way to restore from a file system backup.
>
> Any help, even a shove to the right direction, would be greatly
> appreciated. Thank you and have a pleasant day.
>
> Dianne
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
>       choose an index scan if your joining column's datatypes do not
>       match
>


Re: Restoring from filesystem backup

From
Dianne Yumul
Date:
Thanks for the quick response. We do both pg_dump and file system
backups, and I agree that pg_dump is the way to go. I thought I'd
practice restoring from a filesystem backup though since I've never
done that before.

Thank you.

On Nov 10, 2005, at 6:07 PM, Scott Frankel wrote:

>
> I'm no expert, but I did just accomplish a restore from backup; so at
> least I can help you with your second question.
>
> pg_dump is the animal you'll want to use to create your backup.  I use
> it wrapped in a script that automatically timestamps and names the
> output appropriately.  Args looks like this:
>
>     pg_dump -Ft -b -v the_db_name > the_output_file.tar
>
> pg_restore restores the database.  i.e.:
>
>     pg_restore -d  the_db_name  the_output_file.tar
>
> Hope this helps -
> Scott
>
>
>
> On Nov 10, 2005, at 2:41 PM, Dianne Yumul wrote:
>
>> Hello to everybody.
>>
>> I just have a couple of newbie questions. I'm trying to restore our
>> databases from a file system backup. The backups are done with rsync,
>> the postgresql service is stopped before backups are done on the
>> server.  The system is Fedora Core 4 with Postgresql 8.0.3.
>>
>> Now back to restoring. I tried the following on a development box :)
>>   1. stop postgresql service
>>   2. mv /home/postgres/data /home/postgres/data.old
>>   3. rsync over desired data/ folder from an external drive
>>   4. start postgresql service
>> The last step failed with this error from the logs:
>>   postmaster: could not find the database system
>>   Expected to find it in the directory "/home/postgres/data", but
>> could not open file "/home/postgres/data/global/pg_control":
>>   No such file or directory
>> Sure enough pg_control data was missing, actually
>> /home/postgres/data/global was empty. So I removed the 'bad' data/
>> directory and replaced it with a previous day's backup, and
>> everything restored nicely.
>>
>> My questions are (1) what am I doing wrong that the filesystem
>> backups would sometimes have an empty /home/postgres/data/global
>> directory, thereby not permitting me to restore from it, and (2) what
>> is the preferred way to restore from a file system backup.
>>
>> Any help, even a shove to the right direction, would be greatly
>> appreciated. Thank you and have a pleasant day.
>>
>> Dianne
>>
>> ---------------------------(end of
>> broadcast)---------------------------
>> TIP 9: In versions below 8.0, the planner will ignore your desire to
>>       choose an index scan if your joining column's datatypes do not
>>       match
>>
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq
>


Re: Restoring from filesystem backup

From
Dianne Yumul
Date:
Thanks for the response.

> does the global directory exist on the drive you are syncing from?  If
> so ...
> then it's a problem with your rsync.
>
> check the options you are using with the rsync command.
> check the rsync configurations in /etc/rsyncd.conf on the drive.
> what user are you running the rsync daemon, and rsync command as?

The global directory was not on the backup I was syncing from. The
option we use with rysnc is just -a. We also don't run the rsync daemon
(is this ok?) just the command.

I checked the other backups and they all have the global directory
except for this specific one. Looking further, I think something went
wrong on that backup because some directories not related to postgres,
not just global/, are empty. So now I'm thinking it might be hardware
(the portable external drive is about 3 years old), but I will have to
wait and see if the problem persists.

Sorry for making noise and thank you very much for your help.

Dianne

On Nov 10, 2005, at 6:17 PM, Andrew J. Kopciuch wrote:

>> My questions are (1) what am I doing wrong that the filesystem backups
>> would sometimes have an empty /home/postgres/data/global directory,
>> thereby not permitting me to restore from it, and (2) what is the
>> preferred way to restore from a file system backup.
>>
>
> does the global directory exist on the drive you are syncing from?  If
> so ...
> then it's a problem with your rsync.
>
> check the options you are using with the rsync command.
> check the rsync configurations in /etc/rsyncd.conf on the drive.
> what user are you running the rsync daemon, and rsync command as?
>
> That should point you in the direction to solve your problem.
>
>
>
> Andy
>