Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for MySQL®
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение кластера
    • Подключение к DataLens
    • Управление хостами MySQL
    • Управление базами данных
    • Управление пользователями
    • Управление правами пользователей
    • Управление резервными копиями
    • Просмотр логов кластера
    • Удаление кластера
    • Диагностика производительности
    • Мониторинг состояния кластера и хостов
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for MySQL
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
    • Репликация
    • Техническое обслуживание
    • Права пользователей
    • Настройки MySQL
  • Практические руководства
    • Все сценарии
    • Анализ производительности и оптимизация
    • Выгрузка базы данных в Yandex Data Proc
    • Миграция базы данных в Managed Service for MySQL
    • Миграция базы данных из Managed Service for MySQL в MySQL
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • backup
        • create
        • delete
        • deleteHosts
        • get
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • move
        • rescheduleMaintenance
        • restore
        • start
        • startFailover
        • stop
        • streamLogs
        • update
        • updateHosts
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о MySQL
    • Подключение
    • Проблемы с чтением/записью в кластер
    • Проблемы с производительностью
    • Изменение кластера
    • Мониторинг и логи
    • Миграция/перенос
    • Настройки параметров MySQL
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Управление базами данных

Управление базами данных

Статья создана
Yandex Cloud
  • Получить список баз данных в кластере
  • Создать базу данных
  • Удалить базу данных
  • Установить режим SQL
  • Изменить набор символов и правила их сравнения

Вы можете добавлять и удалять базы данных, просматривать информацию о них, а также управлять некоторыми настройками баз данных с помощью интерфейсов Managed Service for MySQL.

Важно

Вы не можете управлять базами данных с помощью команд SQL. Однако вы можете выполнять операцию ALTER DATABASE.

Получить список баз данных в кластере

Консоль управления
CLI
API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
  2. Нажмите на имя нужного кластера, затем выберите вкладку Базы данных.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы получить список баз данных в кластере, выполните команду:

$ yc managed-mysql database list
     --cluster-name=<имя кластера>

Имя кластера можно запросить со списком кластеров в каталоге.

Воспользуйтесь методом API list и передайте идентификатор кластера в параметре clusterId запроса.

Идентификатор кластера можно получить со списком кластеров в каталоге.

Создать базу данных

Количество баз данных в кластере неограниченно.

Примечание

Созданные базы данных по умолчанию недоступны пользователям кластера. Чтобы подключиться к новой базе, выдайте привилегии нужным пользователям.

Консоль управления
CLI
Terraform
API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
  2. Нажмите на имя нужного кластера.
  3. Если владельцем новой базы данных должен стать еще не существующий пользователь, создайте его.
  4. Выберите вкладку Базы данных.
  5. Нажмите кнопку Добавить.
  6. Введите имя для базы данных и нажмите кнопку Добавить.

Примечание

Имя базы может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 63 символа.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы создать базу данных в кластере:

  1. Посмотрите описание команды CLI для создания БД:

    $ yc managed-mysql database create --help
    
  2. Выполните команду создания БД:

    $ yc managed-mysql database create <имя базы данных> --cluster-name=<имя кластера>
    

    Примечание

    Имя базы может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 63 символа.

    Managed Service for MySQL запустит операцию создания базы данных.

Имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание MySQL-кластера.

  2. Добавьте к описанию кластера Managed Service for MySQL блок описания базы данных database:

    resource "yandex_mdb_mysql_cluster" "<имя кластера>" {
      ...
      database {
        name = "<имя базы данных>"
      }
    }
    

    Примечание

    Имя базы может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 63 символа.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL:

  • создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
  • изменение кластера — 60 минут;
  • удаление кластера — 15 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_mysql_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}

Воспользуйтесь методом API create и передайте в запросе:

  • Идентификатор кластера, в котором вы хотите создать базу данных, в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.

  • Имя базы данных в параметре databaseSpec.name.

    Примечание

    Имя базы может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 63 символа.

Удалить базу данных

Консоль управления
CLI
Terraform
API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
  2. Нажмите на имя нужного кластера и выберите вкладку Базы данных.
  3. Нажмите значок в строке нужной БД и выберите пункт Удалить.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы удалить базу данных, выполните команду:

$ yc managed-mysql database delete <имя базы данных> --cluster-name=<имя кластера>

Имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание MySQL-кластера.

  2. Удалите из описания кластера Managed Service for MySQL блок database с описанием базы данных.

  3. Удалите из описания пользователей блоки permission с полем database_name, указывающим на удаляемую базу.

  4. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  5. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL:

  • создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
  • изменение кластера — 60 минут;
  • удаление кластера — 15 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_mysql_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}

Воспользуйтесь методом API delete и передайте в запросе:

  • Идентификатор кластера, в котором находится база данных, в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.
  • Имя базы данных в параметре databaseName. Чтобы узнать имя базы данных, получите список баз данных в кластере.

Важно

Прежде чем создать новую базу с тем же именем, дождитесь завершения операции удаления, иначе будет восстановлена удаляемая база. Статус операции можно получить вместе со списком операций в кластере.

Установить режим SQL

Вы можете задать или изменить значение настройки sql_mode, которая определяет режим SQL для базы данных. Эта операция вызовет перезапуск хостов кластера.

Консоль управления
CLI
Terraform
API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
  2. Выберите кластер и нажмите кнопку Изменить кластер на панели сверху.
  3. В блоке Настройки СУБД нажмите кнопку Настроить.
  4. В списке настроек найдите параметр sql_mode.
  5. Задайте набор режимов SQL с помощью выпадающего списка. Чтобы вернуть настройки по умолчанию, нажмите кнопку Сбросить.
  6. Нажмите кнопку Сохранить в диалоговом окне настроек СУБД.
  7. Нажмите кнопку Сохранить изменения.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Задайте нужные режимы SQL в значении параметра --set, например:

$ yc managed-mysql cluster update-config
     --name <имя кластера>
     --set '"sql_mode=NO_KEY_OPTIONS,NO_TABLE_OPTIONS"'

Обратите внимание на кавычки: значением параметра должна стать вся строка, включая часть sql_mode=.

Имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание MySQL-кластера.

  2. Задайте нужные режимы SQL в значении параметра sql_mode блока mysql_config, например:

    resource "yandex_mdb_mysql_cluster" "<имя кластера>" {
      ...
      mysql_config = {
        sql_mode = "<список режимов SQL>"
        ...
      }
    }
    
  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL:

  • создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
  • изменение кластера — 60 минут;
  • удаление кластера — 15 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_mysql_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}

Воспользуйтесь методом API update и передайте в запросе:

  • Идентификатор кластера в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.
  • Массив с новой конфигурацией MySQL в параметре:
    • configSpec.mysqlConfig_5_7.sqlMode для MySQL версии 5.7.
    • configSpec.mysqlConfig_8_0.sqlMode для MySQL версии 8.0.

Важно

Этот метод API сбросит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

Изменить набор символов и правила их сравнения

Чтобы установить настройки символов (CHARACTER SET, COLLATE) для базы данных:

  1. Подключитесь к базе данных с помощью учетной записи ее владельца или пользователя с привилегией ALTER для этой базы данных.

  2. Выполните запрос ALTER DATABASE:

    ALTER DATABASE <имя БД> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_unicode_ci';
    
  3. Чтобы настройки изменились не только для самой базы данных, но и для таблиц в ней, сконвертируйте таблицы с теми же настройками:

    ALTER TABLE <имя БД>.<имя таблицы> CONVERT TO CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
    

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Получить список баз данных в кластере
  • Создать базу данных
  • Удалить базу данных
  • Установить режим SQL
  • Изменить набор символов и правила их сравнения