Управление расширениями
Managed Service for PostgreSQL поддерживает многие стандартные расширения PostgreSQL и некоторые нестандартные. Полный список доступных расширений и их версий в зависимости от версии PostgreSQL приведен ниже.
Важно
В кластерах Managed Service for PostgreSQL нельзя управлять расширениями PostgreSQL с помощью команд SQL.
Подключение библиотек для расширений
Некоторые расширения требуют подключения библиотек общего пользования (shared libraries). Чтобы подключить библиотеку, при создании или изменении кластера укажите ее имя в параметре Shared preload libraries.
Managed Service for PostgreSQL поддерживает подключение библиотек:
- age— необходима для работы расширения age- anon— необходима для работы расширения postgresql_anonymizer- auto_explain— необходима для работы расширения auto_explain- pg_cron— необходима для работы расширения pg_cron- pg_hint_plan— необходима для работы расширения pg_hint_plan- pg_qualstats— необходима для работы расширения pg_qualstats- pg_stat_query_plans— необходима для работы расширения pg_stat_query_plans- pgaudit— необходима для работы расширения pgaudit- pglogical— необходима для работы расширения pglogical- timescaledb— необходима для работы расширения TimescaleDB
Важно
Подключение библиотеки общего пользования приведет к перезагрузке PostgreSQL на хосте-мастере.
Получить список установленных расширений
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите блок Базы данных.
- В колонке Расширения PostgreSQL будет отображаться список расширений, подключенных к каждой базе данных.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить список расширений для базы данных, выполните команду:
yc managed-postgresql database get <имя_БД> \
   --cluster-name <имя_кластера>
Включенные расширения будут перечислены в списке extensions.
- 
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения: export IAM_TOKEN="<IAM-токен>"
- 
Воспользуйтесь методом Database.Get и выполните запрос, например, с помощью cURL curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>/databases/<имя_БД>'Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя БД — со списком БД в кластере. 
- 
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера. Список установленных расширений приведен в параметре extensionsв выводе команды.
- 
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения: export IAM_TOKEN="<IAM-токен>"
- 
Клонируйте репозиторий cloudapi cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.
- 
Воспользуйтесь вызовом DatabaseService.Get и выполните запрос, например, с помощью gRPCurl grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/database_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "database_name": "<имя_БД>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.postgresql.v1.DatabaseService.GetИдентификатор кластера можно запросить со списком кластеров в каталоге, а имя БД — со списком БД в кластере. 
- 
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера. Список установленных расширений приведен в параметре extensionsв выводе команды.
Изменить список установленных расширений
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Базы данных.
- В строке с нужной базой данных нажмите значок - Выберите необходимые расширения и нажмите кнопку Изменить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы изменить расширения для базы данных, передайте их список в аргументе --extensions команды CLI. При этом расширения, не упомянутые в списке, будут выключены.
yc managed-postgresql database update <имя_БД> \
   --cluster-name <имя_кластера> \
   --extensions <имя_расширения>,<имя_расширения>...
При установке нескольких расширений могут возникнуть ошибки. Подробнее о возможных причинах и способах устранения ошибок см. в разделе Вопросы и ответы.
- 
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры. О том, как создать такой файл, см. в разделе Создание кластера. Полный список доступных для изменения полей конфигурации базы данных кластера Managed Service for PostgreSQL см. в документации провайдера Terraform. 
- 
Добавьте к описанию соответствующей базы данных кластера один или несколько блоков extension(по одному блоку на каждое расширение):resource "yandex_mdb_postgresql_database" "<имя_БД>" { ... extension { name = "<имя_расширения>" } ... }
- 
Проверьте корректность настроек. - 
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры. 
- 
Выполните команду: terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет. 
 
- 
- 
Подтвердите изменение ресурсов. - 
Выполните команду для просмотра планируемых изменений: terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены. 
- 
Если вас устраивают планируемые изменения, внесите их: - 
Выполните команду: terraform apply
- 
Подтвердите изменение ресурсов. 
- 
Дождитесь завершения операции. 
 
- 
 
- 
- 
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения: export IAM_TOKEN="<IAM-токен>"
- 
Воспользуйтесь методом Database.Update и выполните запрос, например, с помощью cURL Важно Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>/databases/<имя_БД>' \ --data '{ "updateMask": "extensions", "extensions": [ { "name": "<имя_расширения>" }, { <аналогичный_набор_настроек_для_расширения_2> }, { ... }, { <аналогичный_набор_настроек_для_расширения_N> } ] }'Где: - 
updateMask— перечень изменяемых параметров в одну строку через запятую.В данном случае передается только один параметр. 
- 
extensions— массив расширений БД. Каждый объект соответствует отдельному расширению и имеет следующую структуру:- name— имя расширения.
 Указывайте имя в соответствии со списком поддерживаемых расширений и утилит PostgreSQL. 
 Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя БД — со списком БД в кластере. 
- 
- 
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера. 
- 
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения: export IAM_TOKEN="<IAM-токен>"
- 
Клонируйте репозиторий cloudapi cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.
- 
Воспользуйтесь вызовом DatabaseService.Update и выполните запрос, например, с помощью gRPCurl Важно Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре update_mask(в виде массива строкpaths[]).Формат перечисления настроек"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/database_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "database_name": "<имя_БД>", "update_mask": { "paths": [ "extensions" ] }, "extensions": [ { "name": "<имя_расширения>" }, { <аналогичный_набор_настроек_для_расширения_2> }, { ... }, { <аналогичный_набор_настроек_для_расширения_N> } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.postgresql.v1.DatabaseService.UpdateГде: - 
update_mask— перечень изменяемых параметров в виде массива строкpaths[].В данном случае передается только один параметр. 
- 
extensions— массив расширений БД. Один элемент массива содержит настройки для одного расширения и имеет следующую структуру:- name— имя расширения.
 Указывайте имя в соответствии со списком поддерживаемых расширений и утилит PostgreSQL. 
 Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя БД — со списком БД в кластере. 
- 
- 
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера. 
Поддерживаемые расширения и утилиты PostgreSQL
| Расширение \ Версия PostgreSQL | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 
| Содержит функции для нормализации почтовых адресов, переданных в виде строки. | 2.5.2 | 3.0.0 | 3.1.4 | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | 
| Содержит правила нормализации почтовых адресов США и Канады для расширения  | 2.5.2 | 3.0.0 | 3.1.4 | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | 
| Добавляет поддержку графовых баз данных 
 Требует подключения библиотеки общего пользования  | - | - | - | - | - | 1.5.0 | 1.5.0 | 
| Содержит функции проверки логической согласованности реляционной структуры баз данных. Для использования расширения необходима роль  | 1.1 | 1.2 | 1.2 | 1.3 | 1.3 | 1.3 | 1.4 | 
| Содержит функцию  
 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 
| Добавляет доступ к индексам баз данных на основе фильтров Блума | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 
| Содержит примеры классов оператора GIN (Generalized Inverted Index, обобщенный инвертированный индекс), используемого для обратного поиска. | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 
| Содержит классы оператора GiST (Generalized Search Tree, обобщенное дерево поиска). В отличие от индексов B-tree, GiST поддерживает операторы  | 1.5 | 1.5 | 1.5 | 1.6 | 1.7 | 1.7 | 1.7 | 
| Содержит тип данных  | 1.5 | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 
| Добавляет поддержку Foreign Data Wrapper Расширение не поддерживается в версиях PostgreSQL 16 и выше. Для загрузки данных в БД ClickHouse® используйте сервис Yandex Data Transfer. | 1.3 | 1.3 | 1.3 | 1.4 | 1.4 | - | - | 
| Содержит тип данных  | 1.4 | 1.4 | 1.4 | 1.5 | 1.5 | 1.5 | 1.5 | 
| Добавляет поддержку подключения к другим базам данных PostgreSQL из текущей сессии. Для использования расширения необходима роль  | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 
| Содержит пример дополнительного шаблона словаря для полнотекстового поиска. Использование шаблона позволяет избежать разрастания списка уникальных слов и увеличивает скорость поиска. Для полнотекстового поиска помимо расширения также доступны словари от Hunspell. | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 
| Содержит пример дополнительного шаблона словаря синонимов (Extended Synonym Dictionary) для полнотекстового поиска: при поиске слова будут найдены также все его синонимы. Для полнотекстового поиска помимо расширения также доступны словари от Hunspell. | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | - | 
| Содержит модуль для вычисления расстояний между точками на поверхности Земли. Вычисление расстояния производится двумя способами: 
 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 
| Содержит функции, используемые для определения сходства и различия строк. | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.2 | 1.2 | 
| Содержит тип  | 1.5 | 1.6 | 1.7 | 1.8 | 1.8 | 1.8 | 1.8 | 
| Содержит виртуальные индексы. Они позволяют с минимальными затратами ресурсов выяснить, будет ли PostgreSQL использовать реальные индексы при обработке проблемных запросов. | 1.3.1 | 1.3.1 | 1.3.1 | 1.3.1 | 1.3.1 | 1.4.0 | 1.4.1 | 
| Содержит функции и операторы для работы с массивами целых чисел, в которых нет пустых ( | 1.2 | 1.2 | 1.3 | 1.5 | 1.5 | 1.5 | 1.5 | 
| Содержит типы данных для международных стандартов нумерации продукции EAN13, UPC, ISBN, ISMN и ISSN. Проверка и формирование номеров осуществляется по заданному списку префиксов. | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 
| Добавляет поддержку языка JsQuery, используемого для работы с данными типа  | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 
| Содержит тип данных  | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 
| Добавляет возможность сбора статистики о сообщениях в логах. | - | - | - | - | - | - | 2.0 | 
| Содержит тип данных  | 1.1 | 1.1 | 1.2 | 1.2 | 1.2 | 1.2 | 1.3 | 
| Добавляет возможность получения последнего порядкового номера журнала (LSN), записанного на диск реплики. | - | - | - | - | - | - | 1.0 | 
| Содержит функцию  | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 
| Добавляет поддержку Foreign Data Wrapper Для использования расширения необходима роль  | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 
| Добавляет функции и операторы, которые эмулируют набор функций и пакетов БД Oracle. | 3.18 | 3.18 | 3.18 | 3.18 | 3.25 | 4.6 | 4.13 | 
| Добавляет функции мониторинга общего буферного кеша. Для использования расширения необходима роль  | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.4 | 1.5 | 
| Позволяет добавлять в базу данных задачи по расписанию и выполнять SQL-запросы непосредственно из задачи. Требует подключения библиотеки общего пользования  Для использования расширения необходима роль  Подключение расширения приводит к перезагрузке всех хостов. Подробнее см. в разделе Использование pg_cron. | 1.4.1 | 1.4.1 | 1.4.1 | 1.4.1 | 1.4.1 | 1.5 | 1.6 | 
| Содержит функции для управления планировщиком PostgreSQL. Требует подключения библиотеки общего пользования  | 1.3.4 | 1.3.5 | 1.3.7 | 1.4 | 1.5 | 1.6.0 | 1.7.0 | 
| Добавляет расширенные возможности по партицированию таблиц, в том числе на основе времени или последовательности. | 4.0.0 | 4.2.0 | 4.4.0 | 4.6.0 | 4.7.0 | 4.7.4 | 5.1.0 | 
| Позволяет загружать данные отношений в кеш операционной системы или в кеш буферов PostgreSQL. | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 
| Добавляет возможность сбора статистики по предикатам в выражениях  Требует подключения библиотеки общего пользования  | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.4 | 2.1.0 | 2.1.1 | 
| Содержит функции для удаления раздувания (bloat) из таблиц и индексов. В отличие от  Для использования расширения необходима роль  | 1.4.6 | 1.4.6 | 1.4.6 | 1.4.7 | 1.4.8 | 1.4.8 | 1.4.8 | 
| Добавляет возможность сбора статистики по операциям чтения и записи, выполненным на уровне файловой системы. Требует включения расширения  Для использования расширения необходима роль  | 2.1.1 | 2.1.1 | 2.1.3 | 2.2.0 | 2.2.1 | 2.2.1 | 2.3.0 | 
| Добавляет возможности отслеживания статистики выполнения SQL-запросов и их планов. Требует подключения библиотеки общего пользования  | - | - | - | - | - | - | 1.0 | 
| Добавляет возможности отслеживания планирования и сбора статистики выполнения всех SQL-запросов, запущенных в кластере. Для использования расширения необходима роль  | 1.6 | 1.7 | 1.8 | 1.9 | 1.10 | 1.10 | 1.11 | 
| Позволяет создавать логический слот репликации в прошлом. | 1.0 | 1.0 | 1.0 | 1.0 | 1.1 | 1.1.1 | 1.1.1 | 
| Содержит инструменты для быстрого поиска похожих строк на основе сопоставления триграмм. | 1.4 | 1.4 | 1.5 | 1.6 | 1.6 | 1.6 | 1.6 | 
| Предоставляет дополнительные инструменты для логирования и повышает возможности аудита. Требует подключения библиотеки общего пользования  Подробнее см. в разделе Использование pgaudit. | 1.0.0 | 1.0.0 | 1.0.0 | 1.0.0 | 1.7 | 16.0 | 17.0 | 
| Предоставляет криптографические функции для PostgreSQL. Подробнее см. в разделе Использование pgcrypto. | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 
| Добавляет поддержку потоковой логической репликации с использованием механизма публикации/подписки. Требует подключения библиотеки общего пользования  | 2.4.1 | 2.4.1 | 2.4.1 | 2.4.1 | 2.4.4 | 2.4.4 | 2.4.5 | 
| Содержит функции для геопространственной маршрутизации базы данных PostGIS | 2.6.2 | 2.6.2 | 3.0.2 | 3.3.0 | 3.4.1 | 3.5.0 | 3.6.2 | 
| Содержит функцию  | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 
| Содержит функции для получения статистики на уровне кортежей. Для использования расширения необходима роль  | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 
| Добавляет поиск векторного подобия. | 0.2.5 | 0.2.5 | 0.2.5 | 0.2.5 | 0.3.2 | 0.8.0 | 0.8.0 | 
| Добавляет поддержку процедурного языка PL/pgSQL. | - | - | - | - | - | - | 1.0 | 
| Добавляет поддержку процедурного языка на основе JavaScript и движка V8. | 3.0.0 | 3.0.0 | 3.0.0 | 3.0.0 | - | 3.2.3 | 3.2.3 | 
| Добавляет возможности хранения и обработки объектов геоинформационных систем (ГИС) в базах данных PostgreSQL. | 2.5.2 | 3.0.0 | 3.1.4 | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | 
| Содержит функции для геокодирования на основе данных в формате TIGER | 2.5.2 | 3.0.0 | 3.1.4 | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | 
| Содержит типы данных и функции расширения  | 2.5.2 | 3.0.0 | 3.1.4 | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | 
| Добавляет поддержку Foreign Data Wrapper Для использования расширения необходима роль  | 1.0 | 1.0 | 1.0 | 1.1 | 1.1 | 1.1 | 1.1 | 
| Позволяет замаскировать или заменить данные в базе данных PostgreSQL. Требует подключения библиотеки общего пользования  Подробнее см. в разделе Использование postgresql_anonymizer. Для использования расширения необходима роль  | - | - | - | - | 1.3.2 | 1.3.2 | 1.3.2 | 
| Добавляет метод доступа для работы с индексами  | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 
| Содержит тип данных  | 1.3 | 1.3 | 1.3 | 1.4 | 1.4 | 1.4 | 1.4 | 
| Содержит набор функций для определения сходства массивов. | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 
| Содержит набор функций, возвращающих таблицы (наборы строк). | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 
| Добавляет возможности автоматического партицирования таблиц по времени и пространству (ключу партицирования), сохраняя при этом стандартный интерфейс PostgreSQL для работы с данными. Это позволяет масштабировать PostgreSQL для обработки временных рядов. Требует подключения библиотеки общего пользования  В сервис устанавливается издание TimescaleDB Apache 2 Edition. Оно имеет ограниченную функциональность по сравнению с TimescaleDB Community Edition. Изменить издание нельзя. Подробнее об ограничениях см. в документации TimescaleDB | 2.3.1 | 2.4.2 | 2.5.2 | 2.6.1 | 2.9.0 | 2.20.3 | 2.20.3 | 
| Содержит словарь для поиска текста без учета диакритических знаков. | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 
| Содержит функции для генерации UUID по стандартным алгоритмам. | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 
| Добавляет поддержку запросов XPath и языка XSLT. | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 
Утилита pgcompacttable
Синтаксис использования:
./bin/pgcompacttable \
  -h c-<идентификатор_кластера>.rw.mdb.yandexcloud.net \
  -p 6432 \
  -U <имя_пользователя> \
  -W <пароль> \
  -d <имя_БД> \
  -n <имя_схемы> \
  -t <имя_таблицы>
Требует включения расширения pgstattuple.
Для использования утилиты необходима роль mdb_admin.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc