14.21.8 Устранение неполадок плагина InnoDB memcached
В этом разделе описываются проблемы, которые могут возникнуть при использовании плагина InnoDB memcached.
-
Если в журнале ошибок MySQL вы видите следующую ошибку, сервер может не запуститься:
не удалось установить ограничение rlimit для открытых файлов. Попробуйте запустить как root или запросите меньшее значение maxconns.
Сообщение об ошибке исходит от демона memcached. Одним из решений является увеличение системного ограничения на количество открытых файлов. Команды проверки и увеличения лимита на открытые файлы различаются в зависимости от операционной системы. Этот пример демонстрирует команды для Linux и macOS:
# Linux $>
ulimit -n1024 $>ulimit -n 4096$>ulimit -n4096 # macOS $>ulimit -n256 $>ulimit -n 4096$>ulimit -n4096Другим решением является уменьшение количества одновременных соединений, разрешенных для демона memcached. Для этого закодируйте параметр
-cmemcached в параметре конфигурацииdaemon_memcached_optionв файле конфигурации MySQL. Параметр-cимеет значение по умолчанию 1024.[mysqld] ... loose-daemon_memcached_option='-c 64'
-
Для устранения проблем, когда демон memcached не может хранить или извлекать данные таблицы
InnoDB, закодируйте параметр-vvvmemcached в параметре конфигурации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_idinnodb_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.