Skip to content

Restore в удаленном режиме (SSH) БД в docker-контейнере #317

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
klimarbeit opened this issue Feb 4, 2021 · 4 comments

Comments

@klimarbeit
Copy link

Здравствуйте!

На двух разных инстансах работают идентичные докер-контейнеры:

  1. Кластер БД (postgres 12.5 + pg_probackup 2.4.9, ssh)
  2. Клиент резервного копирования (postgres 12.5 + pg_probackup 2.4.9, ssh)

Резервное копирование работает без замечаний, настроен режим архивирования и непрерывной доставки WAL.

С восстановлением дела похуже:

  • восстановление кластера целиком в текущий каталог данных невозможно без его остановки, но остановка кластера подразумевает и остановку контейнера;
  • запуск restore с опциями --db-exclude/--db-include:
LOG: Start SSH client process, pid 541
ERROR: Restore destination is not empty: "/var/lib/postgresql/data"
  • запуск restore в режиме инкрементального восстановления (-I CHECKSUM/LSN/NONE):
INFO: Running incremental restore into nonempty directory: "/var/lib/postgresql/data"
WARNING: Pid file "/var/lib/postgresql/data/postmaster.pid" is mangled, cannot determine whether postmaster is running or not
ERROR: Incremental restore is not allowed

Единственный вариант, который пока нашел — создать в контейнере пустой каталог /var/lib/postgresql/data1, восстанавливать в него копию кластера целиком, а потом, изменяя значение data_directory в текущем postgresql.conf на новый каталог, перезапускать контейнер, но это как-то неоч.

Подскажите, пожалуйста, есть ли какие-то другие варианты?
Спасибо заранее.

@gsmolk
Copy link
Contributor

gsmolk commented Feb 4, 2021

Добрый день!
Наживую переписывать файлы работающего инстанса ни в коем случае нельзя, т.е. инстанс в любом случае надо будет останавливать.
Мне кажется, тут есть два вариант:

  1. Сделать так, чтобы остановка инстанса PG не приводила к остановке контейнера.
  2. Восстанавливать бэкап на хост с контейнерами и запускать контейнер с PG после завершения восстановления.

@klimarbeit
Copy link
Author

Благодарю за ответ. То есть любой режим (с полным понятно), но и частичного восстановления подразумевает остановку Постгреса?

@gsmolk
Copy link
Contributor

gsmolk commented Feb 5, 2021

Конечно, иначе получится каша.

@klimarbeit
Copy link
Author

Спасибо

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants