powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL и pg_basebackup
16 сообщений из 16, страница 1 из 1
PostgreSQL и pg_basebackup
    #39887862
morohon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро.
опрос скорее всего глупый, но прошу сильно не пинать начинаю только разбирать pg_basebackup.
Исходные данные:
Используется Postgresql 10.3
Настраиваю pg_basebackup для регламентного создания резервной копии. Скрипт написал на powershell - все ок, но вопрос в другом.

Политика резервного копирования у нас - восстановление на ночной бэкап (WAL не используется)

Собственно вопрос:
1. Могу ли я при такой схеме в параметр
--wal-method передать значение none и на что это повлияет? Т.е. логика у меня такая - WAL не используется, не нужно его и бэкапить.
2. Вопрос связан с п. 1, при использовании --wal-method
отличного от значения none (т.е. в процессе бэкапа сохранять также WAL). Нужно ли мне для восстановления кластера PostgreSQL при необходимости помимо base.tar.gz восстанавливать pg_wal.tar.gz? И как это правильно делать?
Ведь я правильно понимаю, что общий алгоритм восстановления из pg_basebackup это остановить текущий кластер и инициализировать этот же кластер заменив его данные на то, что есть в резервной копии pg_basebackup? (Ну или инициализировать новый кластер с помощью pg_ctl -D путь к резервной копии)
3. Вопрос по параметру --checkpoint: Что мне грозит, если я буду использовать fast?
Ну и пункт 4:
PostgreSQL используется под Windows (знаю, что лучше под linux, но пока в требованиях стоит Windows). Смотрим настройки pg_hba.conf, чтобы сделать возможность подключаться скрипту планировщика без пароля. Использовать .pgpass не особо хочется, поэтому и смотрим в сторону pg_hba.

В linux, насколько я помню, мы использовали аутентификацию с типом peer или ident для localhost и она прекрасно отрабатывала.
А какой тип аутентификации можно использовать для Windows? Хочется завязать определенного пользователя операционной системы к кластеру PostgreSQL. У клиента нет домена (обычный небольшой сервер). По идее можно для localhost поставить trust и не парится, но хочется рассмотреть еще варианты.
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39887912
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morohon
Используется Postgresql 10.3

В чём смысл ходить по давно исправленным ошибкам?

morohon
Настраиваю pg_basebackup ... WAL не используется

У вас нет бекапов.

morohon
--wal-method передать значение none и на что это повлияет? Т.е. логика у меня такая - WAL не используется, не нужно его и бэкапить.

Восстановление из basebackup невозможно без WAL. Как самый минимум - все WAL с момента старта basebackup до момента его завершения.

morohon
2. Вопрос связан с п. 1, при использовании --wal-method
отличного от значения none (т.е. в процессе бэкапа сохранять также WAL). Нужно ли мне для восстановления кластера PostgreSQL при необходимости помимо base.tar.gz восстанавливать pg_wal.tar.gz? И как это правильно делать?
Ведь я правильно понимаю, что общий алгоритм восстановления из pg_basebackup это остановить текущий кластер и инициализировать этот же кластер заменив его данные на то, что есть в резервной копии pg_basebackup? (Ну или инициализировать новый кластер с помощью pg_ctl -D путь к резервной копии)

Восстановление из basebackup - распаковать basebackup, WAL и все tablespace (если есть) в пустую директорию, запустить базу указав PGDATA туда.

morohon
3. Вопрос по параметру --checkpoint: Что мне грозит, если я буду использовать fast?

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

По такой экзотике как windows не отвечу.
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39887917
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morohon
Настраиваю pg_basebackup ... WAL не используется

А это как?
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39887946
morohon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mefman, Melkij

Видимо я неправильно применяю терминологию или недостаточно компетентен - прошу простить.

Я имел ввиду, что политика резервного копирования не предполагает восстановление на момент времени.

Касательно версии PostgreSQL - он используется для баз 1С: предприятия, поэтому такая экзотика (на новых версиях с патчами от фирмы 1С есть некоторые проблемы).

Полагаю Melkij правильно указал, что у меня есть WAL с момента запуска процедуры резервного копирования с помощью pg_basebackup. Т.е. после создания бэкапа в папке есть два файла:
base.tar.gz
pg_wal.tar.gz

Подскажите, правилен ли будет такой метод восстановления?
1. Остановить службу PostgreSQL
2. Распаковать в каталог (пути из головы для примера) D:\recovery архив base.tar.gz
3. В папку D:\recovery\pg_wal распаковать архив pg_wal.tar.gz
4. Инициализировать кластер pg_ctl -D D:\recovery

Или я где-то не прав?

Правильно ли я использовал архив pg_wal.tar.gz, который создан в процессе архивации?

Я возможно задаю глупые вопросы, просто читаю официальную документацию и появляются вопросы на которые не нахожу ответа в интернете - поэтому и обратился сюда.
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39887948
morohon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Можете подробнее разъяснить фразу Melkijу вас нет бэкапов

Это из-за того, что я неправильно применил терминологию?
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888012
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morohon
mefman, Melkij

Я имел ввиду, что политика резервного копирования не предполагает восстановление на момент времени.



Тогда вам куда лучше и удобнее будет использовать pg_dump/pg_restore для таких задач.
base backup - в таком случае из пушки по воробьям
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888020
morohon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

pg_dump сейчас используется, но я где-то читал, что он создает не консистентный бэкап базы данных. Поэтому, для надежности, используется pg_basebackup (т.е. фактически есть два бэкапа для БД - это pg_dump и pg_basebackup)
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888043
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morohon
Melkij,

Можете подробнее разъяснить фразу Melkijу вас нет бэкапов


Это из-за того, что я неправильно применил терминологию?
Что у вас с терминологией не знаю, но если у вас есть basebackup и нет WAL для его старта - этот basebackup лишь бесполезная гора хлама. Только и всего.

morohon
pg_dump сейчас используется, но я где-то читал, что он создает не консистентный бэкап базы данных

pg_dump консистентен и более того транзакционен.

morohon
4. Инициализировать кластер pg_ctl -D D:\recovery

не инициализировать, а запустить. Ключевое слово после pg_ctl потеряли.
И затем следить за логом что происходит.
WAL - да, в pg_wal необходимо разместить.
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888092
morohon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Спасибо за ответ.

У меня видимо вот вся путаница из-за непонимания механизмов работы WAL в PostgreSQL. Получается даже если у меня не используется PITR, то при использовании pg_basebackup он все равно есть?

Может быть у Вас есть стоящие ссылки, которыми можно в меня кинуть и отправить читать?
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888095
morohon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij
И затем следить за логом что происходит.


Касательно вот этого, я попробовал на тестовом сервере и получился такой лог:
< 2019-11-12 10:54:52.665 MSK >LOG: redo starts at 2/AE000028
< 2019-11-12 10:54:52.746 MSK >LOG: consistent recovery state reached at 2/AE0091D8
< 2019-11-12 10:54:52.747 MSK >LOG: invalid record length at 2/AF000198: wanted 24, got 0
< 2019-11-12 10:54:52.747 MSK >LOG: redo done at 2/AF000170
< 2019-11-12 10:54:52.748 MSK >LOG: last completed transaction was at log time 2019-11-12 04:04:00.378673+03
< 2019-11-12 10:54:53.310 MSK >LOG: database system is ready to accept connections

После этого база стала доступна и в ней стало возможно работать. При этом файл backup-label был переименован в backup-label.old. Есть информация, что нужно смотреть в логе? Я изначально думал, что он не запустится т.к. потребуется еще файл recovery.conf, а он в итоге и не потребовался
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888140
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morohon
Получается даже если у меня не используется PITR, то при использовании pg_basebackup он все равно есть?

WAL есть всегда, даже если у вас вообще никаких бекапов нет. Это основная штука обеспечения durability базы, любая запись данных (ну кроме temporary и unlogged таблиц) идёт сначала в WAL, затем уже в датафайлы таблиц.

morohon
Melkij
И затем следить за логом что происходит.


Касательно вот этого, я попробовал на тестовом сервере и получился такой лог:

Да, это нормальный результат. Восстановление сделано верно.

morohon
При этом файл backup-label был переименован в backup-label.old. Есть информация, что нужно смотреть в логе? Я изначально думал, что он не запустится т.к. потребуется еще файл recovery.conf, а он в итоге и не потребовался

recovery.conf (до pg12) или recovery.signal / standby.signal (12 и далее) - это для репликации или pitr.
Если их нет - делается обычный crash recovery, как раз по backup-label если таковой есть.
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888284
BigBudda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начиная с версии Postgresql 10 утилита pg_basebackup использует временные физические слоты репликации, вернее два слота.
Один используется для резервирования данных по протоколу, а второй для журналов WAL.
Если вы не указываете явно wal-method, то по умолчанию используется значение --wal-method=stream.
Это означает, что в резервную копию попадут все необходимые журналы и из такого бэкапа вы сможете успешно восстановиться.

Теперь, представим, что вы решили указать --wal-method=none. В резервную копию журналы при этом не попадают.
Возникает вопрос, зачем же нам такой бэкап, в котором нет журналов для успешного восстановления?
Ответ кроется в том, что у вас может быть настроено непрерывное архивирование журналов.
Например, у вас есть какой-то разделяемый ресурс, что-то типа "NTFS шары" и.т.п куда вы каким-то образом сохраняете журналы.
И когда вам потребуется восстановить БД на какой-то период времени в прошлом, то есть PITR (Point In Time Recovery)
вы в файле recovery.conf укажете где эти самые журналы искать. В бэкапе то у вас их может не быть.
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888416
morohon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BigBudda, Melkij

Огромное спасибо за подробные ответы - буду тщательнее читать документацию и пытаться вникнуть!
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888428
morohon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,
А подскажите пожалуйста еще по вот этому моменту:
Melkijpg_dump консистентен и более того транзакционен.

Так было всегда? Или были какие-то особенности у старых версий?
Я также читал документацию postgresql и не нашел там подтверждения моим словам (то что он якобы не консистентен).

Есть ли какие-нибудь минусы у pg_dump о которых нужно помнить? И в чем минусы относительно pg_basebackup?
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888524
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morohon
Melkij,
А подскажите пожалуйста еще по вот этому моменту:
Melkijpg_dump консистентен и более того транзакционен.


Так было всегда? Или были какие-то особенности у старых версий?
Что было в давние времена не знаю, всё-таки эта база старше меня самого.
В недавней истории - так было всегда.

morohon
Есть ли какие-нибудь минусы у pg_dump о которых нужно помнить? И в чем минусы относительно pg_basebackup?

pg_dump
- компактен
- plain text он всегда plain text, восстанавливать данные можно хоть текстовым редактором
- dir и custom форматы сжимаются, могут восстанавливаться параллельно (dir и сниматься в несколько потоков), могут восстанавливать объекты выборочно
- медленное восстановление
- переносим между версиями

pg_basebackup
- копия datadir, снимается/восстанавливается только целиком
- скопировать просто файлики - обычно куда быстрее выполняется
- не переносим между major версиями, потенциально и на более старые minor
- не переносим между ОС и платформами. Была база 10.3 на win32 - только на win32 версиях 10.3 - 10.99 и возможно восстановить.

На возможность восстановиться из бекапа проверять нужно любой бекап.
...
Рейтинг: 0 / 0
PostgreSQL и pg_basebackup
    #39888548
BigBudda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТак было всегда? Или были какие-то особенности у старых версий?

В настоящий момент сообществом поддерживаются версии с 9.4 и выше
Это означает, что если у вас более старая версия Postgresql вам необходимо произвести upgrade.
авторЕсть ли какие-нибудь минусы у pg_dump о которых нужно помнить? И в чем минусы относительно pg_basebackup?
Добавлю к тому, что уже написано: pg_basebackup включает в себя статистику, pg_dump нет.
Следовательно, когда вы восстанавливаетесь из дампа, статистику вам нужно собрать руками посредством analyze/vacuum analyze.

pg_dump это логическая копия, а не физический бэкап. И с помощью pg_dump можно сделать логическую копию лишь одной БД.
pg_dump средство больше для разработчика, чем для DBA.

Когда вам целесообразно использовать pg_dump:

1.Миграция на другую архитектуру
2. Вам нужно выгрузить какую-то таблицу справочник, а не всю БД.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL и pg_basebackup
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]