Резервное копирование образа докера postgresql из WAL с использованием wal-e
У меня есть образ, на котором установлен и работает Wal-e. Это успешно на backup-push
отправляет мой WAL на удаленный диск.
Однако когда я бегу backup-fetch
Я получаю ошибку
wal_e.main INFO MSG: starting WAL-E
DETAIL: The subcommand is "backup-fetch".
STRUCTURED: time=2017-09-05T07:45:24.721673-00 pid=3839 wal_e.main ERROR MSG: attempting to overwrite a live data directory
DETAIL: Found a postmaster.pid lockfile, and aborting
HINT: Shut down postgres. If there is a stale lockfile, then remove it after being very sure postgres is not running.
STRUCTURED: time=2017-09-05T07:45:24.750882-00 pid=3839
Так что я следую за ошибкой и закрываюсь с pg_ctl stop
и я получаю:
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.
Затем я перехожу к другому способу выключения pkill postgres
,
Когда я делаю это, кажется, что он работает при выключении postgres, но затем вышибает меня из контейнера и запускает протокол перезапуска.
Чтобы исправить это, я мог бы избавиться от restart:always
в моем файле compose, но я не хочу этого делать, так как это создает проблемы для моей целостности оркестровки.
Любые другие идеи о том, как восстановить из WAL с помощью wal-e на образе dog postgresql?
РЕДАКТИРОВАТЬ:
Я тоже пробовал бегать
docker exec -t postgres_1 pkill postgres; /usr/bin/envdir /etc/wal-e.d/env /usr/local/bin/wal-e backup-fetch /var/lib/postgresql/data LATEST
Который теоретически остановится, а затем восстановится одним махом, но он сделает то, что я ожидал. Стоп, который перезапускает контейнер, а затем возвращает ожидаемую ошибку:
-bash: /usr/bin/envdir: No such file or directory