Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for MySQL®
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение кластера
    • Подключение к DataLens
    • Управление хостами MySQL
    • Управление базами данных
    • Управление пользователями
    • Управление правами пользователей
    • Управление резервными копиями
    • Просмотр логов кластера
    • Удаление кластера
    • Диагностика производительности
    • Мониторинг состояния кластера и хостов
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for MySQL
    • Квоты и лимиты
    • Типы дисков
    • Резервные копии
    • Репликация
    • Техническое обслуживание
    • Права пользователей
    • Настройки MySQL
    • Ограничения для команд SQL
  • Практические руководства
    • Все сценарии
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Выгрузка базы данных в Yandex Data Proc
    • Миграция базы данных из стороннего кластера MySQL
    • Миграция базы данных из Managed Service for MySQL в MySQL
    • Поставка данных в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Миграция базы данных в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Миграция базы данных из Managed Service for MySQL в Yandex Object Storage
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 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. Все вопросы на одной странице

Вопросы и ответы про Managed Service for MySQL®

Статья создана
Yandex Cloud
  • Общие вопросы
  • Вопросы о MySQL
  • Подключение
  • Проблемы с чтением/записью в кластер
  • Проблемы с производительностью
  • Изменение кластера
  • Мониторинг и логи
  • Миграция/перенос
  • Настройки параметров MySQL

Общие вопросы

Что такое Managed Service for MySQL?

Managed Service for MySQL — это сервис, который помогает вам создавать, эксплуатировать и масштабировать базы данных MySQL в облачной инфраструктуре.

С Managed Service for MySQL вы можете:

  • создавать базы данных с необходимыми параметрами производительности;
  • масштабировать вычислительные мощности и выделенный объем хранилища для баз данных по мере необходимости;
  • получать журналы работы баз данных.

Managed Service for MySQL берет на себя трудоемкие задачи администрирования инфраструктуры MySQL:

  • предоставляет мониторинг потребляемых ресурсов;
  • автоматически создает резервные копии баз данных;
  • обеспечивает отказоустойчивость за счет автоматического переключения на резервные реплики;
  • своевременно обновляет программное обеспечение СУБД.

Вы взаимодействуете с кластером БД в Managed Service for MySQL как с обычной базой данных в вашей локальной инфраструктуре. Благодаря этому вы можете управлять внутренними настройками БД в соответствии с требованиями вашего приложения.

Какую часть работы по управлению и сопровождению баз данных берет на себя Managed Service for MySQL?

При создании кластеров Managed Service for MySQL выделяет ресурсы, устанавливает СУБД и создает базы данных.

Для созданных и запущенных баз данных Managed Service for MySQL автоматически создает резервные копии, а также устанавливает исправления и обновления СУБД.

Также Managed Service for MySQL обеспечивает репликацию данных между хостами БД (как внутри, так и между зонами доступности) и автоматически переключает нагрузку на резервную реплику в случае аварии.

Для каких задач стоит использовать Managed Service for MySQL, а для каких виртуальные машины с базами данных?

Yandex Cloud предлагает два варианта работы с базами данных:

  • Managed Service for MySQL позволяет вам эксплуатировать шаблонные базы данных, не заботясь об администрировании.
  • Виртуальные машины Yandex Compute Cloud позволяют вам создавать и настраивать собственные базы данных. Такой подход позволяет использовать любые СУБД, подключаться к базам данных по SSH и так далее.

Что такое хост базы данных и кластер базы данных?

Хост БД — это изолированная среда базы данных в облачной инфраструктуре с выделенными вычислительными ресурсами и зарезервированным объемом хранилища данных.

Кластер БД — это один или более хостов БД, между которыми можно настроить репликацию.

Как начать работу с Managed Service for MySQL?

Managed Service for MySQL доступен всем зарегистрированным пользователям Yandex Cloud.

Чтобы создать кластер базы данных в Managed Service for MySQL, необходимо определиться с его характеристиками:

  • Класс хостов (характеристики производительности — процессоры, память и т. п.).
  • Объем хранилища (резервируется в полном объеме при создании кластера).
  • Сеть, к которой будет подключен ваш кластер.
  • Количество хостов для кластера и зона доступности для каждого хоста вы можете выбрать зону доступности.

Подробные инструкции см. в разделе Как начать работать с Managed Service for MySQL®.

Сколько хостов БД может содержать кластер?

Минимальное количество хостов зависит от типа используемого хранилища:

  • при использовании хранилища на нереплицируемых SSD-дисках (ssd-network-nonreplicated) или на локальных SSD-дисках (local-ssd) — не менее 3;
  • при использовании хранилища на сетевых SSD-дисках (network-ssd) или на сетевых HDD-дисках (network-hdd) допускается создание кластера из одного хоста.

Максимальное количество хостов в кластере ограничено только запрошенными вычислительными ресурсами и объемом хранилища для кластера.

Подробнее см. в разделе Квоты и лимиты в Managed Service for MySQL.

Как получить доступ к запущенному хосту базы данных?

Вы можете подключаться к базам данных Managed Service for MySQL способами, стандартными для СУБД.

Подробнее о подключении к кластерам.

Сколько кластеров можно создать в рамках одного облака?

Технические и организационные ограничения MDB приведены в разделе Квоты и лимиты в Managed Service for MySQL.

Как происходит обслуживание кластеров БД?

Под обслуживанием в Managed Service for MySQL понимается:

  • автоматическая установка обновлений и исправлений СУБД для хостов БД (в т. ч. для выключенных кластеров);
  • изменение класса хостов и объема хранилища;
  • другие сервисные работы Managed Service for MySQL.

Подробнее в разделе Техническое обслуживание в Managed Service for MySQL.

Какую версию MySQL использует Managed Service for MySQL?

Managed Service for MySQL поддерживает MySQL 5.7 и MySQL 8.

Что происходит, когда выпускается новая версия СУБД?

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

Что происходит, когда версия СУБД становится неподдерживаемой (deprecated)?

Через месяц после того, как версия СУБД становится неподдерживаемой, Managed Service for MySQL автоматически оповещает владельцев кластеров БД, созданных с этой версией, по электронной почте.

Создание новых хостов с СУБД неподдерживаемых версий становится невозможным. Через 7 дней после оповещения для минорных версий и через 1 месяц для мажорных версий проводится автоматическое обновление кластеров БД до следующей поддерживаемой версии. Обновление неподдерживаемых мажорных версий происходит даже если у вас отключено автоматическое обновление.

Как рассчитывается стоимость потребления для хоста базы данных?

В Managed Service for MySQL стоимость потребления рассчитывается исходя из следующих параметров:

  • Выбранный класс хостов.
  • Объем хранилища, зарезервированного для хоста БД.
  • Объем резервных копий кластера БД. Объем резервных копий, равный объему хранилища, не тарифицируется. Хранение резервных копий сверх этого объема оплачивается по тарифам.
  • Количество часов работы хоста БД. Неполные часы округляются до целого значения. Стоимость часа работы для каждого класса хостов приведена в разделе Правила тарификации для Managed Service for MySQL.

Как изменить вычислительные ресурсы и объем хранилища для кластера БД?

Вы можете изменять вычислительные ресурсы и объем хранилища в консоли управления — просто выберите другой класс хостов для нужного кластера.

Характеристики кластера изменяются в течение 30 минут. В этот период также могут быть включены другие сервисные работы по кластеру, например, установка обновлений.

Включено ли резервное копирование хостов БД по умолчанию?

Да, по умолчанию резервное копирование включено. Для MySQL выполняется полное резервное копирование один раз в сутки, и сохраняются все журналы транзакций кластера БД. Это позволяет восстановить состояние кластера на любой момент времени в пределах периода хранения резервных копий, за исключением последних 30 секунд.

По умолчанию резервные копии хранятся 7 дней.

Когда выполняется резервное копирование? Доступен ли кластер БД во время резервного копирования?

Окно резервного копирования — это интервал времени, в течение которого выполняется ежедневное полное резервное копирование кластера БД. Окно резервного копирования — 01:00−05:00 по московскому времени.

Во время окна резервного копирования кластеры остаются полностью доступными.

За какими метриками и процессами можно следить с помощью мониторинга?

Для всех типов СУБД можно отслеживать:

  • загрузку процессора, памяти, сети, дисков в абсолютных величинах;
  • загрузку памяти, сети, дисков в процентах от установленных лимитов для класса хостов соответствующего кластера;
  • объем данных кластера БД и остаток свободного места в хранилище данных.

Для всех хостов БД можно отслеживать метрики, специфические для типа соответствующей СУБД. Например для MySQL можно отслеживать:

  • среднее время выполнения запроса;
  • количество запросов в секунду;
  • количество ошибок в журналах и т. д.

Мониторинг можно осуществлять с минимальной гранулярностью в 5 секунд.

Соответствует ли сервис требованиям Федерального закона Российской Федерации № 152-ФЗ О персональных данных?

Да, вы можете ознакомиться с полным заключением по результатам аудита системы защиты.

Я могу получить логи моей работы в сервисах?

Да, вы можете запросить записи о том, что происходило с вашими ресурсами, из логов сервисов Yandex Cloud. Подробнее читайте в разделе Запросы данных.

Вопросы о MySQL

Какие версии MySQL поддерживает Managed Service for MySQL?

Managed Service for MySQL поддерживает MySQL 5.7 и MySQL 8.

Включено ли резервное копирование кластеров БД по умолчанию?

Да, по умолчанию резервное копирование включено. Для MySQL-кластеров выполняется полное резервное копирование один раз в сутки, и сохраняются все журналы транзакций кластера БД. Это позволяет восстановить состояние кластера на любой момент времени в пределах периода хранения резервных копий, за исключением последних 30 секунд.

Шифруется ли соединение с кластером БД MySQL?

Соединение между кластером БД и приложением всегда шифруется с использованием SSL. Отключить шифрование соединений с кластером нельзя.

Что такое реплика для чтения в MySQL?

Реплика для чтения — это доступный только для чтения хост в кластере БД MySQL, данные на котором синхронизируются с хостом-мастером (если в кластере работает более 1 хоста). Вы можете использовать реплику для чтения для снижения нагрузки на мастер в базах данных с большим объемом запросов на чтение.

Какие ограничения накладываются на кластеры БД MySQL?

Подробнее об ограничениях Managed Service for MySQL см. раздел Квоты и лимиты в Managed Service for MySQL. В разделе Классы хостов MySQL приведены характеристики кластеров, которые можно создать с помощью Managed Service for MySQL.

Подключение

Как подключиться к кластеру?

Посмотрите примеры подключения в документации или на странице кластера в консоли управления (нажмите кнопку Подключиться на панели сверху).

MySQL-хосты с публичным доступом поддерживают только соединения с SSL-сертификатом.

Существуют также Особые FQDN, указывающие на Текущий мастер и Наименее отстающую реплику кластера.

Почему не получается подключиться из интернета?

Проверьте, имеет ли хост публичный доступ. Для этого в консоли управления:

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

MySQL-хосты с публичным доступом поддерживают только соединения с SSL-сертификатом.

Дополнительно:

  • Если публичный доступ в вашем кластере настроен только для некоторых хостов, автоматическая смена мастера может привести к тому, что вы не сможете подключиться к мастеру из интернета.
  • Если вы используете Особые FQDN, проверьте в списке хостов, что текущий мастер или реплика имеют публичный доступ.
  • Если вы используете Группы безопасности, проверьте их настройки.

Почему не получается подключиться из Yandex Cloud?

Проверьте, что вы подключаетесь с виртуальной машины Yandex Cloud, расположенной в той же виртуальной сети, что и кластер MySQL.

Для этого в консоли управления:

  1. Перейдите на страницу каталога, выберите сервис Managed Service for MySQL и нажмите на имя нужного кластера.
  2. Проверьте значение параметра Облачная сеть и перейдите по ссылке названия сети, чтобы посмотреть ее подсети.
  3. Убедитесь, что виртуальная машина расположена в одной из подсетей той же сети.

Дополнительно:

  • Если вы подключаетесь к хосту с публичным доступом, то соединение возможно только с SSL-сертификатом.
  • Если вы используете Особые FQDN, проверьте в списке хостов, что текущий мастер или реплика имеют публичный доступ.
  • Если вы используете Группы безопасности, проверьте их настройки.

Почему не получается подключиться к многохостовому кластеру?

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

Проверьте, имеет ли хост публичный доступ. Для этого в консоли управления:

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

Дополнительно:

  • Если вы используете Особые FQDN, проверьте в списке хостов, что текущий мастер или реплика имеют публичный доступ.

  • Если после добавления хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.

Почему может быть превышен лимит соединений?

Максимальное количество одновременных подключений к хосту кластера Managed Service for MySQL задается параметром max_connections и по умолчанию равно величине <количество МБ RAM на одном хосте> ÷ 32, но не менее 100.

Например, для хоста класса s1.micro (2 vCPU, 8 ГБ) значение параметра max_connections по умолчанию равно 8192 ÷ 32 = 256.

Вы можете изменить значение Max connections в настройках кластера.

Проблемы с чтением/записью в кластер

Почему не работает запись в кластер?

  1. Если хранилище баз данных заполнится на 95%, кластер перейдет в режим Только чтение. Проверьте свободное место в хранилище и при необходимости увеличьте его размер. Чтобы проверить свободное место:
    1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
    2. Нажмите на имя нужного кластера и перейдите на вкладку Мониторинг.
    3. Проверьте график Disk usage.
  2. Убедитесь, что запись производится в хост, который является мастером, а не репликой.

Почему отстает реплика?

  1. Проверьте, установлено ли параметру slave_rows_search_algorithms значение INDEX_SCAN,HASH_SCAN.
  2. Вместо выполнения операции ALTER TABLE над объемными таблицами рекомендуется использовать утилиту pt-online-schema-change из пакета Percona Toolkit — это обеспечит отсутствие блокировок.
  3. Если отставание сохраняется, включите параллельную репликацию. Для этого настройте параметры:
    slave_parallel_type=LOGICAL_CLOCK
    slave_parallel_workers=8
    
  4. Выполните на реплике команду SHOW SLAVE STATUS;. Если значение параметра Executed_Gtid_Set долго не меняется, убедитесь, что во всех таблицах присутствуют индексы.
  5. Если данные пишутся в БД непрерывно и при этом объем оперативной памяти на хосте 8 ГБ или больше, рекомендуется увеличить значение параметра innodb_log_file_size до 1-2 ГБ (изменение параметра происходит с рестартом сервера).

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

Это происходит в силу особенностей хранения данных самой СУБД MySQL, а не сервиса Managed Service for MySQL в Yandex Cloud. Факторы, влияющие на занимаемое место в хранилище:

  • фрагментация;
  • коэффициент заполнения индекса (fill factor);
  • хранение старых версий строк (rollback segment);
  • упаковка типов.

Чтобы узнать фактический объем таблиц в базе, обратитесь к системной таблице INNODB_SYS_TABLESPACES. Подробнее см. в статье Finding MySQL Table Size on Disk.

Что делать при возникновении любой ошибки приложения?

  1. Проверьте, есть ли свободное место на диске, где располагается кластер:
    1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
    2. Нажмите на имя нужного кластера и перейдите на вкладку Мониторинг.
    3. Проверьте график Disk usage.
  2. Проверьте графики мониторинга хостов:
    1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
    2. Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
    3. Перейдите на страницу Мониторинги.
    4. Найдите проблемный ресурс: график будет приближаться к границе или выйдет за нее.
    5. Выберите другие хосты из выпадающего списка и проверьте их тоже.
  3. Проверьте наличие свободных ресурсов на виртуальной машине или сервере, где запущено приложение, подключаемое к БД.

Проблемы с производительностью

Как выяснить причину снижения производительности в пиках нагрузки?

Просмотрите лог медленных запросов:

  1. В настройках кластера MySQL установите значение Long query time больше нуля.
  2. В консоли управления на странице кластера выберите вкладку Логи.
  3. В левом верхнем углу выберите из выпадающего списка MYSQL_SLOW_QUERY.

Как выяснить причину общего снижения производительности?

Проверьте графики мониторинга хостов:

  1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
  2. Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
  3. Перейдите на страницу Мониторинги:
    • Рекомендуется увеличить класс хостов:
      • При стабильно высоком значении Steal графика CPU usage.
      • При стабильно низком значении Free графика Memory usage.
    • При высоком значении iowait графика CPU usage возможно превышение лимитов IOPS дискового хранилища. Рекомендуется увеличить значение как минимум до следующего порога блока размещения или использовать более быстрые диски. Подробнее о лимитах и производительности дисков см. в документации Yandex Compute Cloud.

Почему отстает реплика?

  1. Проверьте, установлено ли параметру slave_rows_search_algorithms значение INDEX_SCAN,HASH_SCAN.
  2. Вместо выполнения операции ALTER TABLE над объемными таблицами рекомендуется использовать утилиту pt-online-schema-change из пакета Percona Toolkit — это обеспечит отсутствие блокировок.
  3. Если отставание сохраняется, включите параллельную репликацию. Для этого настройте параметры:
    slave_parallel_type=LOGICAL_CLOCK
    slave_parallel_workers=8
    
  4. Выполните на реплике команду SHOW SLAVE STATUS;. Если значение параметра Executed_Gtid_Set долго не меняется, убедитесь, что во всех таблицах присутствуют индексы.
  5. Если данные пишутся в БД непрерывно и при этом объем оперативной памяти на хосте 8 ГБ или больше, рекомендуется увеличить значение параметра innodb_log_file_size до 1-2 ГБ (изменение параметра происходит с рестартом сервера).

Как выяснить причину долгой загрузки ресурсов?

Проверьте графики мониторинга хостов:

  1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
  2. Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
  3. Перейдите на страницу Мониторинги.
  4. Найдите проблемный ресурс: график будет приближаться к границе или выйдет за нее.
  5. Выберите другие хосты из выпадающего списка и проверьте их тоже.

Если по графикам ресурсы кластера не перегружены, воспользуйтесь рекомендациями из разделов Причины блокировок и Оптимизация запросов.

Как выяснить причину утилизации ресурса CPU?

Информацию о потреблении ресурса CPU можно получить с помощью системных представлений. Для доступа к ним потребуется административная привилегия PROCESS уровня кластера.

  1. Выдайте пользователю привилегию PROCESS, выполнив команду CLI:

    yc managed-mysql user update \
        --global-permissions PROCESS <имя пользователя> \
        --cluster-id <идентификатор кластера>
    
  2. Получите список запросов в базу с наибольшим временем выполнения с помощью запроса:

    SELECT * FROM sys.statement_analysis LIMIT 10;
    

Обратите внимание на запросы с высокими значениями rows_examined, rows_sorted или флагом full_scan — с большой вероятностью именно они потребляют ресурсы CPU. Подробнее см. в документации MySQL.

Как выяснить причину утилизации ресурса IO?

Приблизительную информацию о потреблении ресурса IO потоками в MySQL можно получить с помощью системных представлений. Для доступа к ним потребуется административная привилегия PROCESS уровня кластера.

  1. Выдайте пользователю привилегию PROCESS, выполнив команду CLI:

    yc managed-mysql user update \
        --global-permissions PROCESS <имя пользователя> \
        --cluster-id <идентификатор кластера>
    
  2. Получите список потоков с помощью запроса:

    SELECT   t.name             AS thread_name,
             t.processlist_user AS user,
             t.processlist_info AS query,
             t.processlist_time AS time,
             io.bytes           AS bytes
    FROM     performance_schema.threads t
    JOIN
             (
                      SELECT   thread_id,
                               sum(number_of_bytes) AS bytes
                      FROM     performance_schema.events_waits_history_long
                      WHERE    object_type='FILE'
                      GROUP BY thread_id) io
    ON       t.thread_id = io.thread_id
    ORDER BY io.bytes DESC;
    

Как правило, выше в таблице находятся потоки, обслуживающие буферный пул и репликацию. Такое состояние является нормой.

Как выяснить причину утилизации ресурса сети?

Повышенную нагрузку на сеть могут вызывать: SELECT, возвращающий большое число записей, INSERT больших объемов данных или UPDATE, изменяющий множество строк. В случае записи изменения будут реплицироваться на хосты-реплики, что вызовет дополнительный трафик.

Приблизительную информацию о потреблении ресурса сети потоками в MySQL можно получить с помощью системных представлений. Для доступа к ним потребуется административная привилегия PROCESS уровня кластера.

  1. Выдайте пользователю привилегию PROCESS, выполнив команду CLI:

    yc managed-mysql user update \
        --global-permissions PROCESS <имя пользователя> \
        --cluster-id <идентификатор кластера>
    
  2. Получите список потоков с помощью запроса:

    SELECT   t.name                       AS thread_name,
             t.processlist_user           AS user,
             t.processlist_info           AS query,
             t.processlist_time           AS time,
             net.bytes/t.processlist_time AS avg_bytes,
             net.bytes                    AS total_bytes
    FROM     performance_schema.threads t
    JOIN
             (
                      SELECT   thread_id,
                               Sum(variable_value) bytes
                      FROM     performance_schema.status_by_thread
                      WHERE    variable_name IN ('Bytes_sent',
                                                 'Bytes_received')
                      GROUP BY thread_id ) net
    ON       t.thread_id = net.thread_id
    WHERE    t.processlist_time IS NOT NULL
    ORDER BY net.bytes DESC;
    

    Этот запрос возвращает статистику с момента запуска потоков, поэтому долгоживущие соединения (например, репликация) будут в нем выше.

Как выяснить причины блокировок?

Если ресурсы кластера не перегружены, но запросы все равно выполняются долго, запросите информацию об ожиданиях блокировок с помощью системных представлений. Для доступа к ним потребуется административная привилегия PROCESS уровня кластера.

  1. Выдайте пользователю привилегию PROCESS, выполнив команду CLI:

    yc managed-mysql user update \
        --global-permissions PROCESS <имя пользователя> \
        --cluster-id <идентификатор кластера>
    
  2. Для просмотра блокировок уровня таблиц выполните запрос:

    SELECT * FROM sys.schema_table_lock_waits
    
  3. Для просмотра блокировок уровня отдельных строк выполните запрос:

    SELECT * FROM sys.innodb_lock_waits
    

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

Как оптимизировать проблемные запросы?

Обратитесь к официальной документации MySQL:

  • Использование операции EXPLAIN.
  • Оптимизация запросов.
  • Оптимизация таблиц.

Изменение кластера

Можно ли управлять кластером с помощью команд SQL?

Существуют ограничения на управление кластером с помощью команд SQL. Подробнее см. в разделе Ограничения для команд SQL.

Как уменьшить размер диска?

Уменьшить размер хранилища кластера невозможно.

Вы можете создать новый кластер с хранилищем меньшего размера и перенести в него данные.

Как увеличить размера диска?

Увеличение размера недоступно для хранилища на нереплицируемых SSD-дисках: воспользуйтесь инструкцией в разделе Изменение кластера.

Чтобы увеличить размер хранилища на нереплицируемых SSD-дисках, восстановите кластер из резервной копии и задайте нужный размер.

Тип диска можно проверить в консоли управления. Для этого на странице кластера в блоке Ресурсы найдите параметр Хранилище.

Как изменить тип диска?

Чтобы изменить тип диска, восстановите кластер из резервной копии.

Почему не добавляется/не удаляется хост?

Количество хостов в кластерах ограничено квотами. Например, хосты классов b1.nano, b1.micro, b2.nano и b2.micro могут использоваться только в однохостовых кластерах. Поэтому перед добавлением хоста проверьте используемые ресурсы: откройте страницу Квоты и найдите блок Managed Databases.

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

В кластерах с локальным типом диска настроена отказоустойчивая конфигурация из 3 хостов. Меньшее количество хостов недопустимо.

Как переключить мастер (manual failover)?

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

Консоль управления
CLI
  1. Перейдите на страницу кластера и выберите вкладку Хосты.
  2. Нажмите Переключить мастер.

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

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

Чтобы переключить мастер:

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

    yc managed-mysql cluster start-failover --help
    
  2. Выполните команду yc managed-mysql cluster start-failover.

Мониторинг и логи

Как посмотреть графики кластера и хостов?

В консоли управления перейдите на страницу кластера. Чтобы просмотреть графики кластера, перейдите в раздел Мониторинг. Для графиков отдельных хостов перейдите в раздел Хосты → Мониторинги.

Чтобы посмотреть графики в сервисе Yandex Monitoring, на главной странице выберите сервисный дашборд Managed Service for MySQL. Для просмотра отдельных метрик перейдите в раздел Обзор метрик и задайте параметру service значение Managed Service for MySQL.

Как настроить алерты?

Настроить алерты можно можно в сервисе Yandex Monitoring: для этого воспользуйтесь инструкцией в разделе Создание алерта.

При выборе метрики задайте параметру service значение Managed Service for MySQL.

Как посмотреть логи?

Консоль управления
CLI
  1. Перейдите на страницу кластера и выберите вкладку Логи.
  2. В верхней части страницы выберите один из доступных логов:
    • MYSQL_ERROR — основной лог MySQL, содержит сообщения об ошибках. Включен всегда.
    • MYSQL_SLOW_QUERY — информация о медленных запросах. Включен, если параметр long_query_time больше 0.
    • MYSQL_AUDIT — информация о подключениях к базе данных.
    • MYSQL_GENERAL — полный список всех запросов. Рекомендуется включать только для отладки кластеров в среде разработки.

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

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

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

    yc managed-mysql cluster list-logs --help
    
  2. Выполните команду yc managed-mysql cluster cluster list-logs.

Как долго хранятся логи?

Логи кластера хранятся 30 дней.

Как посмотреть текущие запросы?

Чтобы посмотреть запросы текущего пользователя, выполните запрос:

SHOW PROCESSLIST;

Подробное описание результата см. в документации MySQL.

Какая еще диагностика доступна?

Пользователь с привилегией PROCESS уровня кластера может выполнять запросы:

  • SHOW FULL PROCESSLIST;
  • SHOW ENGINE INNODB STATUS;
  • SELECT из системных схем performance_schema и sys.

Чтобы выдать привилегию PROCESS, выполните команду CLI:

yc managed-mysql user update \
    --global-permissions PROCESS <имя пользователя> \
    --cluster-id <идентификатор кластера>

Миграция/перенос

Как перенести данные в кластер?

Воспользуйтесь инструкцией в разделе Миграция базы данных из стороннего кластера MySQL.

Как перенести кластер в другой каталог или облако?

Чтобы перенести кластер:

  • В другой каталог — восстановите кластер из резервной копии. При задании параметров нового кластера укажите нужный каталог.
  • В другое облако — воспользуйтесь инструкцией в разделе Миграция базы данных из стороннего кластера MySQL.

Настройки параметров MySQL

Как задать часовой пояс (time zone)?

Часовой пояс задается в виде смещения от UTC. Например, для Москвы: '+03:00'. Названия часовых поясов не поддерживаются.

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

Как установить режим SQL (sql_mode)?

Воспользуйтесь инструкцией в разделе Управление базами данных.

Какое значение установить для innodb_buffer_pool_size?

Рекомендуемые границы для параметра:

  • Минимум — 25% от объема RAM на хосте.
  • Максимум — 85% от объема RAM на хосте при условии, что остается не менее 1-1,6 ГБ свободной памяти для выполнения запросов, мониторинга и системных процессов.

Как изменить набор символов и правила их сравнения (CHARACTER SET, COLLATE)?

Воспользуйтесь инструкцией в разделе Управление базами данных.

Как настроить другие параметры?

Настройки MySQL, доступные для изменения, перечислены в документации. Изменить их значения можно в одном из доступных интерфейсов: консоль управления, CLI, API или Terraform. Для этого воспользуйтесь инструкцией в разделе Изменение кластера.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Общие вопросы
  • Вопросы о MySQL
  • Подключение
  • Проблемы с чтением/записью в кластер
  • Проблемы с производительностью
  • Изменение кластера
  • Мониторинг и логи
  • Миграция/перенос
  • Настройки параметров MySQL