Проблемы с чтением/записью в кластер
Статья создана
Обновлена 26 августа 2024 г.
Почему не работает запись в кластер?
- Если хранилище баз данных заполнится на 95%, кластер перейдет в режим Только чтение. Проверьте свободное место в хранилище и при необходимости увеличьте его размер. Чтобы проверить свободное место:
- Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
- Нажмите на имя нужного кластера и перейдите на вкладку Мониторинг.
- Проверьте график Disk usage.
- Убедитесь, что запись производится в хост, который является мастером, а не репликой.
Почему отстает реплика?
- Проверьте, установлено ли параметру
slave_rows_search_algorithms
значениеINDEX_SCAN,HASH_SCAN
. - Вместо выполнения операции
ALTER TABLE
над объемными таблицами рекомендуется использовать утилитуpt-online-schema-change
из пакета Percona Toolkit — это обеспечит отсутствие блокировок. - Если отставание сохраняется, включите параллельную репликацию. Для этого настройте параметры:
slave_parallel_type=LOGICAL_CLOCK slave_parallel_workers=8
- Выполните на реплике команду
SHOW SLAVE STATUS;
. Если значение параметраExecuted_Gtid_Set
долго не меняется, убедитесь, что во всех таблицах присутствуют индексы. - Если данные пишутся в БД непрерывно и при этом объем оперативной памяти на хосте 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
Что делать при возникновении любой ошибки приложения?
- Проверьте, есть ли свободное место на диске, где располагается кластер:
- Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
- Нажмите на имя нужного кластера и перейдите на вкладку Мониторинг.
- Проверьте график Disk usage.
- Проверьте графики мониторинга хостов:
- Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
- Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
- Перейдите на страницу Мониторинги.
- Найдите проблемный ресурс: график будет приближаться к границе или выйдет за нее.
- Выберите другие хосты из выпадающего списка и проверьте их тоже.
- Проверьте наличие свободных ресурсов на виртуальной машине или сервере, где запущено приложение, подключаемое к БД.