Spec-Zone.ru › MySQL 5.7

14.21.8 Устранение неполадок плагина InnoDB memcached

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

  • Если в журнале ошибок MySQL вы видите следующую ошибку, сервер может не запуститься:

    не удалось установить ограничение rlimit для открытых файлов. Попробуйте запустить как root или запросите меньшее значение maxconns.

    Сообщение об ошибке исходит от демона memcached. Одним из решений является увеличение системного ограничения на количество открытых файлов. Команды проверки и увеличения лимита на открытые файлы различаются в зависимости от операционной системы. Этот пример демонстрирует команды для Linux и macOS:

    # Linux
    $> ulimit -n
    1024
    $> ulimit -n 4096
    $> ulimit -n
    4096
    
    # macOS
    $> ulimit -n
    256
    $> ulimit -n 4096
    $> ulimit -n
    4096
    

    Другим решением является уменьшение количества одновременных соединений, разрешенных для демона memcached. Для этого закодируйте параметр -c memcached в параметре конфигурации daemon_memcached_option в файле конфигурации MySQL. Параметр -c имеет значение по умолчанию 1024.

    [mysqld]
    ...
    loose-daemon_memcached_option='-c 64'
    
  • Для устранения проблем, когда демон memcached не может хранить или извлекать данные таблицы InnoDB, закодируйте параметр -vvv memcached в параметре конфигурации daemon_memcached_option в файле конфигурации MySQL. Проверьте журнал ошибок MySQL на наличие отладочных сообщений, связанных с операциями memcached.

    [mysqld]
    ...
    loose-daemon_memcached_option='-vvv'
    
  • Если столбцы, предназначенные для хранения значений memcached, имеют неправильный тип данных (например, числовой вместо строкового), попытки сохранить пары ключ-значение завершаются без конкретного кода или сообщения об ошибке.

  • Если плагин daemon_memcached вызывает проблемы при запуске сервера MySQL, вы можете временно отключить плагин daemon_memcached во время устранения неполадок, добавив эту строку в раздел [mysqld] файла конфигурации MySQL:

    daemon_memcached=OFF
    

    Например, если вы выполняете операцию INSTALL PLUGIN до запуска скрипта конфигурации innodb_memcached_config.sql для настройки необходимой базы данных и таблиц, сервер может неожиданно завершить работу и не запуститься. Сервер также может не запуститься, если вы неправильно настроите запись в таблице innodb_memcache.containers.

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

    mysql> UNINSTALL PLUGIN daemon_memcached;
    
  • Если вы запускаете более одного экземпляра MySQL на одном компьютере с включенным плагином daemon_memcached в каждом экземпляре, используйте параметр конфигурации daemon_memcached_option для указания уникального порта memcached для каждого плагина daemon_memcached.

  • Если SQL-запрос не находит таблицу InnoDB или не находит данных в таблице, но вызовы API memcached возвращают ожидаемые данные, возможно, отсутствует запись для таблицы InnoDB в таблице innodb_memcache.containers, или вы не переключились на правильную таблицу InnoDB, выполнив запрос get или set с использованием обозначений @@table_id. Эта проблема также может возникнуть, если вы измените существующую запись в таблице innodb_memcache.containers без перезапуска сервера MySQL после этого. Механизм хранения в свободном формате достаточно гибкий, чтобы ваши запросы на хранение или извлечение многоколоночного значения, такого как col1|col2|col3, все еще работали, даже если демон использует таблицу test.demo_test, которая хранит значения в одном столбце.

  • При определении собственной таблицы InnoDB для использования с плагином daemon_memcached и столбцах таблицы определены как NOT NULL, убедитесь, что значения предоставлены для столбцов NOT NULL при вставке записи в таблицу innodb_memcache.containers. Если оператор INSERT для записи innodb_memcache.containers содержит меньше разделителей, чем сопоставленных столбцов, незаполненные столбцы устанавливаются в NULL. Попытка вставки значения NULL в столбец NOT NULL приводит к ошибке оператора INSERT, которая может стать очевидной только после повторной инициализации плагина daemon_memcached для применения изменений к таблице innodb_memcache.containers.

  • Если поля cas_column и expire_time_column таблицы innodb_memcached.containers установлены в NULL, при попытке загрузить плагин memcached возвращается следующая ошибка:

    InnoDB_Memcached: column 6 in the entry for config table 'containers' in
    database 'innodb_memcache' has an invalid NULL value.
    

    Плагин memcached отклоняет использование NULL в столбцах cas_column и expire_time_column. Установите значение этих столбцов в 0, когда эти столбцы не используются.

  • По мере увеличения длины ключа и значений memcached могут возникнуть ограничения по размеру и длине.

    • При превышении длины ключа 250 байт операции memcached возвращают ошибку. Это текущее ограничение внутри memcached.

    • Возможно возникновение ограничений таблицы InnoDB, если значения превышают 768 байт, 3072 байта или половину значения innodb_page_size. Эти ограничения в основном применяются, если вы планируете создать индекс в столбце со значениями для выполнения запросов отчётов по этому столбцу с помощью SQL. Подробности см. в Разделе 14.23, «Ограничения InnoDB».

    • Максимальный размер комбинации ключ-значение составляет 1 МБ.

  • Если вы используете файлы конфигурации в разных версиях серверов MySQL, использование последних опций конфигурации для плагина daemon_memcached может вызвать ошибки запуска в более старых версиях MySQL. Чтобы избежать проблем совместимости, используйте префикс loose с именами опций. Например, используйте loose-daemon_memcached_option='-c 64' вместо daemon_memcached_option='-c 64'.

  • Нет ограничений или проверок для проверки настроек набора символов. memcached хранит и извлекает ключи и значения в байтах и поэтому не чувствителен к набору символов. Однако необходимо убедиться, что клиент memcached и таблица MySQL используют один и тот же набор символов.

  • Соединения memcached заблокированы от доступа к таблицам, содержащим индексированный виртуальный столбец. Доступ к индексированному виртуальному столбцу требует обратного вызова к серверу, но соединение memcached не имеет доступа к коду сервера.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/innodb-memcached-troubleshoot.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API