Re: Continuous archiving and restore questions

Поиск
Список
Период
Сортировка
От Pedro Salgueiro
Тема Re: Continuous archiving and restore questions
Дата
Msg-id CAF4yKbE+QiM_XXWEdq8t7gcV5MoDc8Wx8vm9Bc631Xv9fAwz1w@mail.gmail.com
обсуждение исходный текст
Ответ на Continuous archiving and restore questions  (Pedro Salgueiro <pedro.salgueiro@cortex-intelligence.com>)
Список pgsql-general
Found the problem.

When a restore is made, a new timeline is created.
The problem is that when a restore is made, the default behavior is to restore the timeline used while creating the base backup, thus ignoring the new timeline together with the changes made after the restore.

The solution to this problem is to include the following line in the recovery.conf to always restore the last available timeline:

recovery_target_timeline = 'latest'

Best regards,
Pedro 


On Wed, Jan 29, 2014 at 2:15 PM, Pedro Salgueiro <pedro.salgueiro@cortex-intelligence.com> wrote:
Hi,

In the past couple of days I have been trying Continuous Archiving and Point-in-Time Recovery (PITR) and I have some doubts.

I successfully configured postgresql to perform the archive of the wal files, using the following properties in postgresql.conf

archive_mode = on
wal_level = archive
archive_command = 'cp %p /opt/postgres-wal-backups/wal-files/%f'
max_wal_senders = 3

To perform the base backup, I am using the pg_basebackup tool:

pg_basebackup --format tar --xlog -D - | gzip > ${BASE_BACKUP_FOLDER}/base_backup.tar.gz

After making a base backup, I made some changes on the database, including creating new tables and adding data to them. Then I moved the data folder to a safe place, restored the base backup, created the recovery.conf file, copied the WAL files that were unarchived back to the restored data folder, and restarted postgresql.

I used the following recovery.conf file:

restore_command = 'cp /opt/postgres-wal-backups/wal-files/%f %p'
archive_cleanup_command = 'pg_archivecleanup  /opt/postgres-wal-backups/wal-files %r'

The restore procedure worked like a charm, and all data was recovered.

Then I created some more tables and added more data. Then made the same restore procedure as before, using the same base backup. Apparently the restore was successful and without errors, but the newly created data was not restored, only the one which was created before the first restore.

Everything that was made after the first restore was lost.

Then I tried to make a fresh base backup, make some changes on the database, and then, issue the restore procedure just as before, but using the new base backup. This time, the changes made after the base backup were restored successfully.

It seems that after a restore is made, I need to make a fresh base backup in order to be able to make future restores. Is this correct, or am I doing something wrong?

Thank you,
Pedro Salgueiro




 



В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: PostgreSQL specific datatypes very confusing for beginners who use wrappers around JDBC
Следующее
От: Jeff Janes
Дата:
Сообщение: Re: Continuous archiving and restore questions