1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Pg-Partman

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Менеджер разделов PostgreSQL

pg_partman — это расширение для создания и управления наборами разделов таблиц, основанными на времени и количестве. По состоянию на версию 5.0.1 поддерживается только встроенное декларативное разделение, а более старые методы, основанные на триггерах, устарели.

Встроенное в PostgreSQL декларативное разделение предоставляет команды для создания разделённой таблицы и её дочерних элементов. pg_partman использует встроенные декларативные функции PostgreSQL и дополняет их дополнительными функциями и улучшениями, чтобы упростить управление разделами. Одним из ключевых способов расширения разделения в Postgres является предоставление средств автоматизации обслуживания дочерней таблицы с течением времени (например, добавление новых дочерних таблиц, удаление старых на основе политики хранения). В pg_partman также есть функции для преобразования существующей таблицы в разделённую таблицу или наоборот.

Процесс фонового рабочего (BGW) включён для автоматического запуска обслуживания разделов без необходимости внешнего планировщика (cron и т. д.) в большинстве случаев.

Отчёты об ошибках и запросы функций можно направлять в раздел «Проблемы» на GitHub — https://github.com/pgpartman/pg_partman/issues.

Для вопросов, комментариев или если вы не уверены, куда отправить сообщение, используйте раздел «Обсуждения» на GitHub. Не стесняйтесь публиковать здесь сообщения независимо от того, насколько незначительными могут быть ваши вопросы или проблемы — https://github.com/pgpartman/pg_partman/discussions.

Документация

Следующий список файлов находится в папке [doc] репозитория pg_partman на GitHub. Инструкции по установке см. в следующем разделе этого README.

Файл Описание
pg_partman.md Основная справочная документация для pg_partman
pg_partman_howto.md Руководство по использованию pg_partman с примерами настройки новых наборов разделов и переноса существующих таблиц в разделённые таблицы
migrate_to_partman.md Как перенести существующие наборы разделов под управление pg_partman
migrate_to_declarative.md Как перейти от разделения на основе триггеров к декларативному разделению
pg_partman_5.0.1_upgrade.md Если pg_partman обновляется до версии 5.x с любой предыдущей версии, могут потребоваться особые соображения. Пожалуйста, внимательно ознакомьтесь с этим документом перед выполнением любого обновления до 5.x или выше
fix_missing_procedures.md Если pg_partman был установлен до PostgreSQL 11 и обновлён с тех пор, процедуры могут отсутствовать. В этом документе описывается, как восстановить эти процедуры и сохранить текущую конфигурацию

Установка

Требования:

  • PostgreSQL >= 14

Рекомендуется:

  • pg_jobmon (>=v1.4.0). PG Job Monitor будет автоматически использоваться, если он установлен и настроен правильно.

Из исходного кода

В каталоге, где вы скачали pg_partman, запустите

make install

Если вы не хотите, чтобы фоновый рабочий компилировался, и вам нужны только функции PL/PGSQL, вы можете запустить это вместо этого:

make NO_BGW=1 install

Пакет

Я лично не поддерживаю пакеты ОС для pg_partman, но несколько администраторов репозиториев из PostgreSQL Development Group (PGDG) любезно согласились это сделать. Установка

Фоновый рабочий процесс должен загружаться при запуске базы данных путём добавления библиотеки в shared_preload_libraries в postgresql.conf:

shared_preload_libraries = 'pg_partman_bgw'     # (изменение требует перезапуска)

Также можно задать другие управляющие переменные для BGW в postgresql.conf. Для обслуживания требуется как минимум «dbname» для запуска на данной базе данных(ах). Их можно добавить/изменить в любое время с помощью простой перезагрузки. Дополнительную информацию см. в документации. Пример с некоторыми из них:

pg_partman_bgw.interval = 3600
pg_partman_bgw.role = 'keith'
pg_partman_bgw.dbname = 'keith'

Войдите в PostgreSQL и выполните следующие команды. Схема не обязательна (но рекомендуется), и может быть любой, но её нельзя изменить после установки. Если вы используете BGW, кластер базы данных можно безопасно запустить без предварительного создания расширения в настроенных базах данных. Вы можете создать расширение в любое время, и BGW автоматически определит его существование без перезапуска кластера (при условии, что shared_preload_libraries был установлен) и начнёт обслуживание в соответствии с настройками.

CREATE SCHEMA partman;
CREATE EXTENSION pg_partman SCHEMA partman;

Для работы pg_partman не требуется суперпользователь, но в настоящее время всё ещё требуется его установка. Если не используется суперпользователь, рекомендуется создать специальную роль для выполнения функций pg_partman и стать владельцем всех наборов разделов, которые поддерживает pg_partman. Как минимум, эта роль будет нуждаться в следующих привилегиях (предполагая, что pg_partman установлен в схеме partman и что специальная роль называется partman_user):

CREATE ROLE partman_user WITH LOGIN;
GRANT ALL ON SCHEMA partman TO partman_user;
GRANT ALL ON ALL TABLES IN SCHEMA partman TO partman_user;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA partman TO partman_user;
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA partman TO partman_user;
GRANT ALL ON SCHEMA my_partition_schema TO partman_user;
GRANT TEMPORARY ON DATABASE mydb to partman_user; -- allow creation of temp tables to move data out of default

Если вам нужно, чтобы роль также могла создавать схемы, вам также потребуется предоставить ей право CREATE в базе данных. В целом это не должно требоваться, если вы предоставляете вышеуказанной роли права CREATE для любых существующих схем, которые будут содержать наборы разделов.

GRANT CREATE ON DATABASE mydb TO partman_user;

Я получил много запросов на возможность установить это расширение на Amazon RDS. Начиная с PostgreSQL 12.5, RDS сделал доступным расширение pg_partman. Большое спасибо команде RDS за включение этого расширения в свою среду!

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL_Partitions.html

Обновление

Выполните «make install», как указано выше, или обновите соответствующие пакеты, чтобы разместить новые файлы сценариев и библиотеки. Затем выполните следующее в самом PostgreSQL:

ALTER EXTENSION pg_partman UPDATE TO '<последняя версия>';

При выполнении pg_dump/pg_restore и обновлении pg_partman на месте по сравнению с предыдущими версиями рекомендуется использовать параметр --column-inserts при сбросе и/или восстановлении конфигурационных таблиц pg_partman. Это связано с тем, что порядок столбцов конфигурации может отличаться (обновления просто добавляют столбцы в конец, тогда как новая установка по умолчанию может отличаться).

При обновлении между любыми основными версиями pg_partman (4.x -> 5.x и т. д.) внимательно прочитайте все промежуточные примечания к версии в CHANGELOG, особенно те примечания для основной версии. Часто есть дополнительные инструкции и другие важные соображения для обновлений. Особые соображения необходимы, если вы обновляетесь до 5+ с любой версии меньше 5.0.0. Пожалуйста, смотрите pg_partman_5.0.1_upgrade.md.

ВАЖНОЕ ПРИМЕЧАНИЕ: Некоторые обновления... pg_partman должен удалять и заново создавать свои собственные объекты базы данных.

Если вы отменяете привилегии PUBLIC для функций/процедур, их можно добавить обратно к объектам, которые воссоздаются как часть обновления. Если требуются ограничения на использование PUBLIC для pg_partman, рекомендуется установить его в свою собственную схему, как показано выше, и отозвать нежелательный доступ к этой схеме. В противном случае вам, возможно, придётся добавить дополнительный шаг к процедурам обновления расширения, чтобы снова отозвать доступ PUBLIC.

Примеры

Для настройки секционирования с помощью pg_partman в новой таблице или для переноса существующей обычной таблицы в секционирование см. pg_partman_howto.md.

Для переноса таблицы с разделением на основе триггеров в декларативное разделение с использованием pg_partman см. migrate_to_declarative.md. Обратите внимание, что если вы планируете перейти на pg_partman, вам сначала нужно будет перейти к таблице с декларативным разделением, прежде чем ею сможет управлять pg_partman.

Другие документы также доступны в папке doc.

См. справочный файл pg_partman.md в папке doc для получения полной информации обо всех командах и опциях для pg_partman.

Тестирование

Это расширение может использовать набор модульных тестов pgTAP для оценки правильности работы — http://www.pgtap.org.

ВНИМАНИЕ: Вы ДОЛЖНЫ увеличить max_locks_per_transaction сверх значения по умолчанию, равного 64. До сих пор со существующими тестами хорошо работало значение 128. Это связано с тестами на субразбиение, которые создают/уничтожают несколько сотен таблиц за одну транзакцию. Если вы этого не сделаете, вы рискуете сбоем кластера при выполнении тестов на субразбиение.

Дополнительную информацию о тестировании см. в файле README, содержащемся в тестовой папке.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
PostgreSQL
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-Pg-Partman.git
git@api.gitlife.ru:oschina-mirror/mirrors-Pg-Partman.git
oschina-mirror
mirrors-Pg-Partman
mirrors-Pg-Partman
master