Не удалось восстановить postgres v11 из pg_basebackup - PullRequest
0 голосов
/ 04 февраля 2020

Я делаю резервную копию из моей postgresql базы данных (v11), используя pg_basebackup, например:

pg_basebackup -h localhost -p 5432 -U postgres -D /tmp/backup -Ft -z -Xs -P

Процесс резервного копирования завершен просто без ошибок. Затем в качестве теста я Я хочу восстановить данные из резервной копии, и для этого я делаю следующие шаги:

  1. Завершаем работу экземпляра postgres.
  2. Удаляем все из папки /var/lib/postgresql/data

    rm -rf /var/lib/postgresl/data/*

  3. Разархивировать там базовый архив:

    tar xvf /tmp/backup/base.tar.gz -C /var/lib/postgresql/data

  4. Разрушить архив архив во временный каталог

    tar xvf /tmp/backup/pg_wal.tar.gz -C /tmp/archived_wals

  5. Создать файл recovery.conf в папке /var/lib/postgresql/data:

    touch /var/lib/postgresql/data/recovery.conf
    chown postgres:postgres /var/lib/postgresql/data/recovery.conf
    
  6. Укажите команду восстановления в файле recovery.conf:

    restore_command = 'cp /path/archived_wals/%f "%p" '

  7. Перезапустите экземпляр postgres и дождитесь восстановления восстановления готово.

Однако, когда postgres запускается, я получаю следующую ошибку в журналах:

2020-02-04 11:34:52.599 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2020-02-04 11:34:52.599 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2020-02-04 11:34:52.613 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-02-04 11:34:52.709 UTC [18] LOG:  database system was interrupted; last known up at 2020-02-04 08:39:54 UTC
cp: can't stat '/tmp/archived_wals/00000002.history': No such file or directory
2020-02-04 11:34:52.735 UTC [18] LOG:  starting archive recovery
2020-02-04 11:34:52.752 UTC [18] LOG:  invalid checkpoint record
2020-02-04 11:34:52.752 UTC [18] FATAL:  could not locate required checkpoint record
2020-02-04 11:34:52.752 UTC [18] HINT:  If you are not restoring from a backup, try removing the file "/var/lib/postgresql/data/backup_label".
2020-02-04 11:34:52.753 UTC [1] LOG:  startup process (PID 18) exited with exit code 1
2020-02-04 11:34:52.753 UTC [1] LOG:  aborting startup due to startup process failure
2020-02-04 11:34:52.769 UTC [1] LOG:  database system is shut down

Я предполагаю, что что-то упустил, возможно, мне нужно сделать дополнительную настройку до * 10 60 * чтобы иметь возможность восстановить pg_basebackup резервную копию?

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Попробуйте:

 /pgsql-11/bin/pg_basebackup -D /pgdata/pg11/data -X stream --waldir=/pglog/pg11/wal_log/ -P -c fast -h remoteserver\localserver -U username

Дайте мне знать, если это работает.

0 голосов
/ 05 февраля 2020

В конце концов, это было плохо.

Я заключил местозаполнитель назначения в % вместо двойных кавычек в recovery.conf.

Однако, как я описал резервное копирование и восстановление действительны, и, поскольку я исправил опечатку, она отлично работает для меня, поэтому я оставляю вопрос таким, какой он есть, для дальнейшего использования.

...