Управление базами данных в Managed Service for PostgreSQL
Вы можете добавлять, переименовывать и удалять базы данных, а также просматривать информацию о них.
Важно
Вы не можете управлять базами данных с помощью команд SQL.
Получить список баз данных в кластере
- Перейдите на страницу каталога
и выберите сервис Managed Service for PostgreSQL. - Нажмите на имя нужного кластера и выберите вкладку Базы данных.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список баз данных в кластере, выполните команду:
yc managed-postgresql database list --cluster-name=<имя_кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
Чтобы получить список баз данных в кластере, воспользуйтесь методом REST API list для ресурса Database или вызовом gRPC API DatabaseService/List и передайте в запросе идентификатор кластера в параметре clusterId
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
Создать базу данных
Примечание
В каждом кластере вы можете создать не более 1000 баз данных.
-
Перейдите на страницу каталога
и выберите сервис Managed Service for PostgreSQL. -
Нажмите на имя нужного кластера.
-
Если владельцем новой базы данных должен стать еще не существующий пользователь, создайте его.
-
Выберите вкладку Базы данных.
-
Нажмите кнопку
Добавить. -
Укажите параметры базы данных:
-
Имя.
Имя базы может содержать латинские буквы, цифры, нижнее подчеркивание и дефис. Максимальная длина имени 63 символа. Имена
postgres
,template0
,template1
зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать базы с этими именами нельзя. -
Владелец.
-
Защита от удаления.
Возможные значения:
- Как у кластера.
- Включена.
- Выключена.
-
(Опционально) Шаблон — имя одной из существующих баз, с которой нужно будет скопировать схему данных. На время создания новой базы все подключения к базе-шаблону будут закрыты.
Подробнее см. в документации PostgreSQL
. -
Локали сортировки и набора символов.
PostgreSQL использует локали для поддержки различных языковых стандартов. Выбор локали влияет на:
- Порядок сортировки в запросах с использованием оператора
ORDER BY
или стандартных операторов сравнения текстовых данных. - Функции
upper
,lower
,initcap
, а также семейство функцийto_char
. - Операторы поиска по шаблону (
LIKE
,ILIKE
,SIMILAR TO
, регулярные выражения). - Возможность использовать индексы с оператором
LIKE
.
По умолчанию используется локаль
C
. При использовании кодировкиC
для текстовых данных с нелатинскими (например, кириллическими) символами возможны ошибки в порядке сортировки данных и отображении данных при поиске по шаблону. Если эта локаль не подходит для корректной обработки таблиц в базе данных, выберите другую из списка. Однако учитывайте, что использование нестандартной локали может снизить скорость выполнения запросов к базе данных.Подробнее о настройках локали см. в документации PostgreSQL
.Настройки локали нельзя изменить после создания базы данных. Но вы можете задать локаль сортировки для столбцов при создании и изменении отдельных таблиц. Подробнее читайте в документации PostgreSQL
. - Порядок сортировки в запросах с использованием оператора
-
-
Нажмите кнопку Добавить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать базу данных в кластере:
-
Посмотрите описание команды CLI для создания БД:
yc managed-postgresql database create --help
-
Запросите список пользователей кластера, чтобы выбрать владельца новой базы данных:
yc managed-postgresql user list --cluster-name=<имя_кластера>
Если нужного пользователя в списке нет, создайте его.
-
Выполните команду создания БД. При необходимости укажите нужные локали сортировки и набора символов (по умолчанию задаются
LC_COLLATE=C
иLC_CTYPE=C
) и шаблон:yc managed-postgresql database create <имя_БД> \ --cluster-name=<имя_кластера> \ --owner=<имя_пользователя-владельца> \ --lc-collate=<локаль_сортировки> \ --lc-type=<локаль_набора_символов> \ --template-db=<имя_БД-шаблона>
Имя базы может содержать латинские буквы, цифры, нижнее подчеркивание и дефис. Максимальная длина имени 63 символа. Имена
postgres
,template0
,template1
зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать базы с этими именами нельзя.Имя кластера можно запросить со списком кластеров в каталоге.
Managed Service for PostgreSQL запустит операцию создания базы данных.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации базы данных кластера Managed Service for PostgreSQL см. в документации провайдера Terraform
. -
Добавьте ресурс
yandex_mdb_postgresql_database
. При необходимости укажите нужные локали сортировки и набора символов (по умолчанию задаютсяLC_COLLATE=C
иLC_CTYPE=C
) и шаблон:resource "yandex_mdb_postgresql_database" "<имя_БД>" { cluster_id = "<идентификатор_кластера>" name = "<имя_БД>" owner = "<имя_пользователя-владельца>" lc_collate = "<локаль_сортировки>" lc_type = "<локаль_набора_символов>" template_db = "<имя_БД-шаблона>" deletion_protection = <защита_от_удаления> }
Где:
owner
— имя пользователя-владельца, который должен быть задан в ресурсеyandex_mdb_postgresql_user
.deletion_protection
— защита БД от удаления:true
,false
илиunspecified
(наследует значение от кластера). Значение по умолчанию —unspecified
.
Имя базы может содержать латинские буквы, цифры, нижнее подчеркивание и дефис. Максимальная длина имени 63 символа. Имена
postgres
,template0
,template1
зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать базы с этими именами нельзя. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Важно
После создания БД не меняйте ее владельца в параметре owner
— это приведет к пересозданию БД и потере данных.
Чтобы создать базу данных в кластере, воспользуйтесь методом REST API create для ресурса Database или вызовом gRPC API DatabaseService/Create и передайте в запросе:
-
Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. -
Настройки новой базы в параметре
databaseSpec
. -
Тип защиты от удаления в параметре
deletionProtection
. Возможные значения —true
,false
. Значение по умолчанию —unspecified
(наследует значение от кластера).Имя базы может содержать латинские буквы, цифры, нижнее подчеркивание и дефис. Максимальная длина имени 63 символа. Имена
postgres
,template0
,template1
зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать базы с этими именами нельзя.
Переименовать базу данных
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации базы данных кластера Managed Service for PostgreSQL см. в документации провайдера Terraform
. -
Найдите ресурс
yandex_mdb_postgresql_database
нужной базы данных. -
Измените значение поля
name
:resource "yandex_mdb_postgresql_database" "<имя_базы данных>" { ... name = "<новое_имя_базы_данных>" ... }
Имя базы может содержать латинские буквы, цифры, нижнее подчеркивание и дефис. Максимальная длина имени 63 символа. Имена
postgres
,template0
,template1
зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать базы с этими именами нельзя. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы переименовать базу данных в кластере, воспользуйтесь методом REST API update для ресурса Database или вызовом gRPC API DatabaseService/Update и передайте в запросе:
-
Идентификатор кластера, в котором находится база данных, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. -
Имя базы данных в параметре
databaseName
. Чтобы узнать имя базы, получите список баз данных в кластере. -
Новое имя базы данных в параметре
newDatabaseName
.Имя базы может содержать латинские буквы, цифры, нижнее подчеркивание и дефис. Максимальная длина имени 63 символа. Имена
postgres
,template0
,template1
зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать базы с этими именами нельзя. -
Список полей конфигурации базы данных, подлежащих изменению (в данном случае —
newDatabaseName
), в параметреupdateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Настроить защиту от удаления
- Перейдите на страницу каталога
и выберите сервис Managed Service for PostgreSQL. - Нажмите на имя нужного кластера и выберите вкладку Базы данных.
- Нажмите на значок
в строке нужной БД и выберите пункт Настроить. - Выберите нужное значение в поле Защита от удаления.
- Нажмите кнопку Сохранить.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
-
Найдите ресурс
yandex_mdb_postgresql_database
нужной БД. -
Добавьте параметр
deletion_protection
. Доступные значения:true
,false
илиunspecified
(наследует значение от кластера). Значение по умолчанию —unspecified
.resource "yandex_mdb_postgresql_database" "<имя_базы_данных>" { ... deletion_protection = <защита_от_удаления> ... }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы настроить защиту от удаления БД, воспользуйтесь методом REST API update для ресурса Database или вызовом gRPC API DatabaseService/Update и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя БД в параметре
databaseName
. Чтобы узнать имя БД, получите список БД в кластере. - Параметр
updateMask
со значениемdeletionProtection
. - Новое значение параметра
deletionProtection
. Возможные значения —true
,false
. Значение по умолчанию —unspecified
(наследует значение от кластера).
Удалить базу данных
БД может быть защищена от удаления. Чтобы удалить такую БД, сперва снимите защиту.
Чтобы удалить базу данных:
- Перейдите на страницу каталога
и выберите сервис Managed Service for PostgreSQL. - Нажмите на имя нужного кластера и выберите вкладку Базы данных.
- Нажмите на значок
в строке нужной БД, выберите пункт Удалить и подтвердите удаление.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить базу данных, выполните команду:
yc managed-postgresql database delete <имя_БД> \
--cluster-name <имя_кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
Чтобы удалить базу данных:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации базы данных кластера Managed Service for PostgreSQL см. в документации провайдера Terraform
. -
Удалите ресурс
yandex_mdb_postgresql_database
с именем удаляемой базы данных. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы удалить базу данных, воспользуйтесь методом REST API delete для ресурса Database или вызовом gRPC API DatabaseService/Delete и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя удаляемой базы данных в параметре
databaseName
. Чтобы узнать имя базы данных, получите список баз данных в кластере.
Важно
Прежде чем создать новую базу с тем же именем, дождитесь завершения операции удаления, иначе будет восстановлена удаляемая база. Статус операции можно получить вместе со списком операций в кластере.