Rechercher dans le manuel MySQL
15.19.9 Troubleshooting the InnoDB memcached Plugin
This section describes issues that you may encounter when using
the InnoDB memcached plugin.
If you encounter the following error in the MySQL error log, the server might fail to start:
failed to set rlimit for open files. Try running as root or requesting smaller maxconns value.
The error message is from the memcached daemon. One solution is to raise the OS limit for the number of open files. The commands for checking and increasing the open file limit varies by operating system. This example shows commands for Linux and OS X:
# Linux shell> ulimit -n 1024 shell> ulimit -n 4096 shell> ulimit -n 4096 # OS X shell> ulimit -n 256 shell> ulimit -n 4096 shell> ulimit -n 4096The other solution is to reduce the number of concurrent connections permitted for the memcached daemon. To do so, encode the
-cmemcached option in thedaemon_memcached_optionconfiguration parameter in the MySQL configuration file. The-coption has a default value of 1024.[mysqld] ... loose-daemon_memcached_option='-c 64'To troubleshoot problems where the memcached daemon is unable to store or retrieve
InnoDBtable data, encode the-vvvmemcached option in thedaemon_memcached_optionconfiguration parameter in the MySQL configuration file. Examine the MySQL error log for debug output related to memcached operations.[mysqld] ... loose-daemon_memcached_option='-vvv'If columns specified to hold memcached values are the wrong data type, such as a numeric type instead of a string type, attempts to store key-value pairs fail with no specific error code or message.
If the
daemon_memcachedplugin causes MySQL server startup issues, you can temporarily disable thedaemon_memcachedplugin while troubleshooting by adding this line under the[mysqld]group in the MySQL configuration file:daemon_memcached=OFFFor example, if you run the
INSTALL PLUGINstatement before running theinnodb_memcached_config.sqlconfiguration script to set up the necessary database and tables, the server might crash and fail to start. The server could also fail to start if you incorrectly configure an entry in theinnodb_memcache.containerstable.To uninstall the memcached plugin for a MySQL instance, issue the following statement:
- mysql> UNINSTALL PLUGIN daemon_memcached;
If you run more than one instance of MySQL on the same machine with the
daemon_memcachedplugin enabled in each instance, use thedaemon_memcached_optionconfiguration parameter to specify a unique memcached port for eachdaemon_memcachedplugin.If an SQL statement cannot find the
InnoDBtable or finds no data in the table, but memcached API calls retrieve the expected data, you may be missing an entry for theInnoDBtable in theinnodb_memcache.containerstable, or you may have not switched to the correctInnoDBtable by issuing agetorsetrequest using@@notation. This problem could also occur if you change an existing entry in thetable_idinnodb_memcache.containerstable without restarting the MySQL server afterward. The free-form storage mechanism is flexible enough that your requests to store or retrieve a multi-column value such ascol1|col2|col3may still work, even if the daemon is using thetest.demo_testtable which stores values in a single column.When defining your own
InnoDBtable for use with thedaemon_memcachedplugin, and columns in the table are defined asNOT NULL, ensure that values are supplied for theNOT NULLcolumns when inserting a record for the table into theinnodb_memcache.containerstable. If theINSERTstatement for theinnodb_memcache.containersrecord contains fewer delimited values than there are mapped columns, unfilled columns are set toNULL. Attempting to insert aNULLvalue into aNOT NULLcolumn causes theINSERTto fail, which may only become evident after you reinitialize thedaemon_memcachedplugin to apply changes to theinnodb_memcache.containerstable.If
cas_columnandexpire_time_columnfields of theinnodb_memcached.containerstable are set toNULL, the following error is returned when attempting to load the memcached plugin:InnoDB_Memcached: column 6 in the entry for config table 'containers' in database 'innodb_memcache' has an invalid NULL value.The memcached plugin rejects usage of
NULLin thecas_columnandexpire_time_columncolumns. Set the value of these columns to0when the columns are unused.As the length of the memcached key and values increase, you might encounter size and length limits.
When the key exceeds 250 bytes, memcached operations return an error. This is currently a fixed limit within memcached.
InnoDBtable limits may be encountered if values exceed 768 bytes in size, 3072 bytes in size, or half of theinnodb_page_sizevalue. These limits primarily apply if you intend to create an index on a value column to run report-generating queries on that column using SQL. See Section 15.6.1.6, “Limits on InnoDB Tables” for details.The maximum size for the key-value combination is 1 MB.
If you share configuration files across MySQL servers of different versions, using the latest configuration options for the
daemon_memcachedplugin could cause startup errors on older MySQL versions. To avoid compatibility problems, use thelooseprefix with option names. For example, useloose-daemon_memcached_option='-c 64'instead ofdaemon_memcached_option='-c 64'.There is no restriction or check in place to validate character set settings. memcached stores and retrieves keys and values in bytes and is therefore not character set sensitive. However, you must ensure that the memcached client and the MySQL table use the same character set.
memcached connections are blocked from accessing tables that contain an indexed virtual column. Accessing an indexed virtual column requires a callback to the server, but a memcached connection does not have access to the server code.
Traduction non disponible
Le manuel MySQL n'est pas encore traduit en français sur l'infobrol. Seule la version anglaise est disponible pour l'instant.
Document créé le 26/06/2006, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/mysql-rf-innodb-memcached-troubleshoot.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.