pgBackRest — это надежное решение для резервного копирования и восстановления PostgreSQL, которое легко масштабируется для самых крупных баз данных и рабочих нагрузок.
pgBackRest v2.54.0 — текущая стабильная версия. Примечания к выпуску находятся на странице «Релизы».
Найдите нас на GitHub и поставьте нам звезду, если вам нравится pgBackRest!
Сжатие обычно является узким местом во время операций резервного копирования, поэтому pgBackRest решает эту проблему с помощью параллельной обработки и более эффективных алгоритмов сжатия, таких как lz4 и zstd.
Специальный протокол позволяет pgBackRest выполнять резервное копирование, восстановление и архивирование локально или удаленно через TLS/SSH с минимальной настройкой. Интерфейс для запроса PostgreSQL также предоставляется на уровне протокола, поэтому удаленный доступ к PostgreSQL никогда не требуется, что повышает безопасность.
Несколько репозиториев позволяют, например, использовать локальный репозиторий с минимальным сроком хранения для быстрого восстановления и удаленный репозиторий с более длительным сроком хранения для обеспечения избыточности и доступа по всему предприятию.
Поддерживаются полные, дифференциальные и инкрементные резервные копии. pgBackRest не подвержен проблемам временного разрешения rsync, что делает дифференциальное и инкрементное резервное копирование безопасным без необходимости подсчитывать контрольную сумму каждого файла. Резервные копии на уровне блоков экономят место, копируя только те части файлов, которые были изменены.
Политики хранения можно настроить для полных и дифференциальных резервных копий, чтобы обеспечить покрытие на любой период времени. Архив WAL можно сохранять для всех резервных копий или только для самых последних резервных копий. В последнем случае WAL, необходимый для обеспечения согласованности старых резервных копий, будет сохранен в архиве.
Контрольные суммы рассчитываются для каждого файла в резервной копии и перепроверяются во время восстановления или проверки. После завершения копирования файлов резервная копия ожидает, пока каждый сегмент WAL, необходимый для обеспечения согласованности резервной копии, не достигнет репозитория.
Резервные копии в репозитории могут храниться в том же формате, что и стандартный кластер PostgreSQL (включая табличные пространства). Если сжатие отключено и включены жесткие ссылки, можно сделать снимок резервной копии в репозитории и вызвать кластер PostgreSQL непосредственно на снимке. Это выгодно для баз данных размером в терабайты, восстановление которых традиционным способом требует много времени.
Все операции используют fsync на уровне файлов и каталогов для обеспечения надежности.
Если контрольные суммы страниц включены, pgBackRest будет проверять контрольные суммы для каждого файла, копируемого во время резервного копирования. Все контрольные суммы страниц проверяются во время полного резервного копирования, а контрольные суммы в изменившихся файлах проверяются во время дифференциального и инкрементного резервного копирования.
Сбои проверки не останавливают процесс резервного копирования, но предупреждения с подробной информацией о том, какие именно страницы не прошли проверку, выводятся на консоль и в журнал файлов.
Эта функция позволяет обнаружить повреждение на уровне страниц на ранней стадии, прежде чем истечет срок действия резервных копий, содержащих действительные копии данных.
Прерванное резервное копирование можно возобновить с того места, где оно было остановлено. Уже скопированные файлы сравниваются с контрольными суммами в манифесте для обеспечения целостности. Поскольку эта операция может полностью выполняться на хосте репозитория, она снижает нагрузку на хост PostgreSQL и экономит время, поскольку вычисление контрольной суммы происходит быстрее, чем сжатие и повторная передача данных.
Вычисления сжатия и контрольной суммы выполняются в потоке во время копирования файлов в репозиторий, независимо от того, расположен ли репозиторий локально или удаленно.
Если репозиторий находится на хосте репозитория, сжатие выполняется на хосте PostgreSQL, а файлы передаются в сжатом формате и просто сохраняются на хосте репозитория. Когда сжатие отключено, используется более низкий уровень сжатия, чтобы эффективно использовать доступную полосу пропускания, сохраняя при этом затраты ЦП на минимальном уровне.
Манифест содержит контрольные суммы для каждого файла в резервной копии, поэтому во время восстановления можно использовать эти контрольные суммы для значительного ускорения обработки. При дельта-восстановлении все файлы, отсутствующие в резервной копии, сначала удаляются, а затем для оставшихся файлов генерируются контрольные суммы. Файлы, соответствующие резервной копии, остаются на месте, а остальные файлы восстанавливаются как обычно. Параллельная обработка может привести к значительному сокращению времени восстановления.
Включены специальные команды для отправки WAL в архив и получения WAL из архива. Обе команды поддерживают параллелизм для ускорения обработки и выполняются асинхронно, чтобы обеспечить максимально быстрое время ответа PostgreSQL.
Функция WAL push автоматически обнаруживает сегменты WAL, которые отправляются несколько раз, и выполняет дедупликацию, если сегмент идентичен; в противном случае возникает ошибка. Асинхронная передача WAL позволяет переложить передачу на другой процесс, который параллельно сжимает сегменты WAL для максимальной пропускной способности. Это может быть критичной функцией для баз данных с чрезвычайно большим объемом записи.
Асинхронный метод получения WAL поддерживает локальную очередь сегментов WAL, которые распакованы и готовы к воспроизведению. Это сокращает время, необходимое для предоставления WAL в PostgreSQL, что максимизирует скорость воспроизведения. Больше всего выигрывают соединения и хранилища с более высокой задержкой (например, S3).
Команды push и get обеспечивают совпадение базы данных и репозитория путем сравнения версий PostgreSQL и системных идентификаторов. Это практически исключает возможность неправильной настройки местоположения архива WAL.
Табличные пространства полностью поддерживаются, и при восстановлении табличные пространства можно переназначить в любое место. Также можно переназначить все табличные пространства в одно место с помощью одной команды, что полезно при восстановлении при разработке.
Ссылки на файлы и каталоги поддерживаются для любого файла или каталога в кластере PostgreSQL. При восстановлении можно восстановить все ссылки в их исходные местоположения, переназначить некоторые или все ссылки или восстановить некоторые или все ссылки как обычные файлы или каталоги в каталоге кластера.
Репозитории pgBackRest могут располагаться в хранилищах объектов, совместимых с S3, Azure и GCS, что обеспечивает практически неограниченную емкость и срок хранения.
pgBackRest может зашифровать репозиторий для защиты резервных копий, где бы они ни хранились.
pgBackRest включает поддержку десяти версий PostgreSQL, пяти поддерживаемых версий и последних пяти версий EOL. Это дает достаточно времени для обновления до поддерживаемой версии.
pgBackRest стремится быть простым в настройке и эксплуатации:
Руководства пользователя для различных операционных систем и версий PostgreSQL.
Справочник команд для операций командной строки.
Справочник по конфигурации для создания конфигураций pgBackRest.
Документацию для v1 можно найти здесь. Никаких дальнейших выпусков версии 1 не планируется, поскольку версия 2 обратно совместима с опциями и репозиториями версии 1.
Вклад в pgBackRest всегда приветствуется! Подробную информацию о том, как внести свой вклад в функции, улучшения или проблемы, можно найти в наших Правилах участия.
pgBackRest полностью бесплатен и имеет открытый исходный код под лицензией MIT. Вы можете использовать его в личных или коммерческих целях без каких-либо ограничений. Сообщения об ошибках воспринимаются очень серьезно и рассматриваются как можно быстрее.
Создание надежной политики аварийного восстановления с правильными стратегиями репликации и резервного копирования может оказаться очень сложной и пугающей задачей. Вы можете обнаружить, что вам нужна помощь на этапе архитектуры и постоянная поддержка, чтобы обеспечить бесперебойную работу вашего предприятия.
Crunchy Data предоставляет упакованные версии pgBackRest для основных операционных систем, а также экспертную коммерческую поддержку полного жизненного цикла pgBackRest и всего, что связано с PostgreSQL. Crunchy Data стремится предоставлять решения с открытым исходным кодом без привязки к поставщику, гарантируя, что перекрестная совместимость с версией pgBackRest, созданной сообществом, всегда строго поддерживается.
Пожалуйста, посетите Crunchy Data для получения дополнительной информации.
Основное признание достается Стивену Фросту за все его ценные советы и критику во время разработки pgBackRest.
Crunchy Data вложила в pgBackRest значительное время и ресурсы и продолжает активно поддерживать разработку. Resonate также внес свой вклад в разработку pgBackRest и позволил установить ранние (но хорошо протестированные) версии в качестве основного решения для резервного копирования PostgreSQL.
Графика кресла от Шандора Сабо.