-
Notifications
You must be signed in to change notification settings - Fork 86
Работа pg_probackup в Windows #48
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
Comments
Спасибо за фидбэк. |
Если возникнут какие-либо вопросы - пишите. |
Есть не вопросы, а скорее информация. Попробовал присланные бинарники. Поведение под виндой не поменялось pg_probackup в --backup-mode=FULL копирует из %PGDATA% в %BACKUP_DIR%]backups%INSTANCE%\ИМЯ_БЭКАПА\database только pg_wal и создаёт backup_label. Больше никаких файлов кроме нескольких WAL и backup_label там нет. Собрал с утра под Ubuntu - там при FULL копирует $PGDATA. Но и тут проблема:
Бэкап завершается с ошибкой. arrchive_command закомментарена.
Включил архивацию WAL
Прописал archive_command - бэкап выполнился. Что я делаю не так? Из документации на сайте не очевидно, что archive_command надо включать. И не понятно зачем включать архивацию? |
А можете выполнить FULL бэкап с опцией --log-level-console=verbose и прислать весь выхлоп?
бэкапу для восстановления в консистентное состояние нужен WAL. |
А какие файлы и директории присутствуют в 'D:\IBIS_BACKUPS\PGBACKUPS\backups\IBIS\PNBSN5\database/' ? |
|
Пробэкап перед стартом бэкапа составляет массив файлов и директорий, которые содержатся в PGDATA. |
Полный доступ дан всем пользователям от безисходности. Windows Server 2016 Standart x64. |
А там файлы, случайно, не скрытые? |
Сделал бинарь с дополнительным отладочным сообщением: Сделайте им, пожалуйста, бэкап и пришлите выхлоп |
И пришлите еще, пожалуйста, скриншот с Advanced Security для PGDATA |
Поставил PostgresPro 10.6.1 на Windows 2016 и запустил бэкап - успешно выполнился, файлы скопированы. Версия с проблемой с правами выглядит всё более вероятной. |
Смог воспроизвести: отобрал у юзера, совершающего бэкап, право на 'List Folder Content', оставив при этом право на чтение. |
Добрый день! А разве не wal-sender этим занимается? Ему же права нужны? Запустил бэкап "Выполнить с правами Администратора". Поведение не поменялось. Ради любопытства запустил
Он отработал без замечаний. Вкралось сомнение на счёт порта 5433. Прописал его через set-config - не помогло. |
pg_probackup работает не через wal-sender, он работает через файловую систему. Он рекурсивно читает директории - получает списки файлов и директорией и уже открывает и читает файлы и директории.
Администратор тоже может быть поражен в правах, например, я воспроизводил вашу проблему как раз администратором. |
Я работаю от своего пользователя, имеющего админские права. Все работы выполнял от себя. Это чистый сервер после инсталяции. |
Дайте пользователю Юрий полный доступ к этой директории(уже есть), а также к ее поддиректориям и файлам. |
Можете еще раз выполнить бэкап с --log-level-console=verbose и прислать выхлоп? |
|
Не понимаю, что происходит тогда. |
"Национальность" винды ведь не должна влиять? Это пока единственное отличие, что я вижу. И кластер у меня в другом месте лежит. |
Не должна, хотя я уже ни в чем не уверен.
И группа, у меня owner PGDATA - группа Administrators. |
Бэкап выполнился. |
Я, честно говоря, тоже не понимаю. Может это баг в винде какой-то. |
Вы хотите ручку, с помощью которой можно было бы задавать кол-во отротированных файлов, которое необходимо хранить? Мы пока такое не умеем. |
Вы меня правильно поняли. age=7d не решит проблему. Проблема в том, что при ротации теряются вся информация , которая была в логе до момента ротации. Например ротация приоизошла в 3:15, поэтому в 3:16 мы никогда не узнаем, что было в 3:14. Я бы это назвал не ротацией, а обнулением лога. |
Есть другой подход: задаем --log-filename=pg_probackup-%Y-%m-%d.log и получаем отдельный лог файл на каждый день. |
Или использовать |
Да, кстати, этот подход решает обе проблемы. |
А так можно?! Так это именно то, что надо, в идеале! В доке https://postgrespro.ru/docs/postgrespro/11/app-pgprobackup#PG-PROBACKUP-LOGGING-OPTS об этом ничего нет. |
А --log-rotation-age=1d нужен при этом? |
Да, подробнее смотрите спецификацию strftime: http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html
Не нужно. |
В доке об этом написано, но очень неразборчиво:
Видимо нужно дополнить примерами. |
Извините, ввел в заблуждение. Этот параметр нужен. |
Сейчас посмотрим. |
Запустил recovery для создания slave. В сгенерированном recovery.conf pg_probackup не прописан. Это правильно?
|
А какой командой создавали слейв? |
%PROBACKUP% restore -B %BACKUP_DIR% --instance %INSTANCE% %SKIP_BLOCK_VALIDATION% %JOBS% --restore-as-replica |
А список бэкапов можете прислать? |
Восстанавливал из бэкапа днем 29-го числа. |
Ага, понятно. |
Бэкап делается с мастера. Я реплики создаю с помощью pg_basebackup. Чтобы не грузить мастер созданием реплики решил создать её из бэкапа. О ключе --stream понял. |
Это разумно. |
Отсутствие passord= я уже заметил. |
Запустил validate на бэкап со статусом CORRUPT. Теперь он OK. Был какой-то сбой в сети во время бэкапа. |
Да, CORRUPT бэкап всегда можно попытаться ревалидировать. |
Закрываем issue? |
Думаю, что можно и закрыть. |
Я не знаю, что делает postgresql, что лочит иногда вот так эксклюзивно файл. Иногда сталкиваюсь с подобным явлением. Под виндой. Бывает, что лочит на несколько дней. Обычно это лечат перезагрузкой, если долго не отпускает. Попадётся мне живьем, надо oid2name посмотреть что это. Соответственно и pg_probackup не может выполнить бэкап. |
@ykurenkov, спасибо за фидбэк! |
Посмотрел много видео с конференций о pg_probackup. Прочитал инструкцию на сайте PostgresPro. Настроил бэкапирование:
pg_probackup add-instance -B %BACKUP_DIR% -D %PGDATA% --instance %INSTANCE% pg_probackup backup -B %BACKUP_DIR% --instance %INSTANCE% --backup-mode=FULL --stream --progress -d postgres
В %BACKUP_DIR% появился директорий backups и внутри его %INSTANCE% со структурой директориев с архивами.
pg_probackup show -B %BACKUP_DIR%
Выводит список бэкапов. Всё хорошо. А вот как из этих бэкапов восстанавливаться?
Команда
pg_probackup restore -B %BACKUP_DIR% --instance %INSTANCE%
создаёт %PGDATA% с pg_wal и recovery.conf. Естественно в не пустом %PGDATA% initdb отказывается создавать кластер. Если же сначала создать кластер, то pg_probackup restore сообщает:
ERROR: restore destination is not empty: “D:\PGDATA\test\”
Как же использовать pg_probackup для восстановления?
Вот вывод на консоль pg_probackup restore:
pg_probackup из сборки PostgresPro_10.6.1_64.bit.exe
pg_probackup 2.0.24 (Postgres Pro 10.6.1 standard)
The text was updated successfully, but these errors were encountered: