このページは機械翻訳したものです。
このセクションでは、InnoDB memcached プラグインの使用時に発生する可能性のある問題について説明します。
-
MySQL エラーログで次のエラーが発生した場合、サーバーの起動に失敗する可能性があります:
開いているファイルの rlimit を設定する failed。 root として実行するか、小さい maxconns value. をリクエストしてください
エラーメッセージは、memcached デーモンからのものです。 1 つの解決策は、開くファイルの数について OS での制限を引き上げることです。 オープンファイル制限をチェックして増やすためのコマンドは、オペレーティングシステムによって異なります。 この例は、Linux および macOS のコマンドを示しています:
# Linux shell> ulimit -n 1024 shell> ulimit -n 4096 shell> ulimit -n 4096 # macOS shell> ulimit -n 256 shell> ulimit -n 4096 shell> ulimit -n 4096もう 1 つの解決策は、memcached デーモンで許可される同時接続の数を減らすことです。 これを行うには、MySQL 構成ファイルの
daemon_memcached_option構成パラメータで-cmemcached オプションをエンコードします。-cオプションのデフォルト値は 1024 です。[mysqld] ... loose-daemon_memcached_option='-c 64' -
memcached デーモンが
InnoDBテーブルデータを格納または取得できない問題をトラブルシューティングするには、MySQL 構成ファイルのdaemon_memcached_option構成パラメータで-vvvmemcached オプションをエンコードします。 MySQL エラーログを調べて、memcached 操作に関係するデバッグ出力がないか検査します。[mysqld] ... loose-daemon_memcached_option='-vvv' memcached 値を保持するために指定されたカラムのデータ型が間違っている場合 (文字列型ではなく数値型など)、キーと値のペアを格納しようとすると失敗し、特定のエラーコードまたはメッセージが表示されません。
-
daemon_memcachedプラグインによって MySQL サーバーの起動の問題が発生した場合は、MySQL 構成ファイルの[mysqld]グループの下に次の行を追加することで、トラブルシューティング中にdaemon_memcachedプラグインを一時的に無効にできます:daemon_memcached=OFFたとえば、
innodb_memcached_config.sql構成スクリプトを実行して必要なデータベースとテーブルを設定する前にINSTALL PLUGINステートメントを実行すると、サーバーが予期せず終了し、起動に失敗することがあります。innodb_memcache.containersテーブルのエントリを誤って構成すると、サーバーの起動に失敗する可能性もあります。MySQL インスタンスの memcached プラグインをアンインストールするには、次のステートメントを発行します:
mysql> UNINSTALL PLUGIN daemon_memcached; 各インスタンスで
daemon_memcachedプラグインが有効になっている同じマシンで MySQL の複数のインスタンスを実行する場合は、daemon_memcached_option構成パラメータを使用して、daemon_memcachedプラグインごとに一意の memcached ポートを指定します。SQL ステートメントで
InnoDBテーブルが見つからない場合、またはテーブルにデータが見つからず、memcached API コールで必要なデータが取得される場合、innodb_memcache.containersテーブルのInnoDBテーブルのエントリが欠落しているか、@@テーブル記法を使用してtable_idgetまたはsetリクエストを発行して正しいInnoDBテーブルに切り替えられていない可能性があります。 この問題は、後で MySQL サーバーを再起動せずにinnodb_memcache.containersテーブルの既存のエントリを変更した場合にも発生する可能性があります。 フリーフォーム記憶域メカニズムは柔軟性があるため、デーモンが単一のカラムに値を格納するtest.demo_testテーブルを使用している場合でも、col1|col2|col3などの複数カラム値を格納または取得するリクエストは引き続き機能します。daemon_memcachedプラグインで使用する独自のInnoDBテーブルを定義し、テーブルのカラムがNOT NULLとして定義されている場合は、innodb_memcache.containersテーブルにテーブルのレコードを挿入するときにNOT NULLカラムに値が指定されていることを確認します。innodb_memcache.containersレコードのINSERTステートメントに含まれるデリミタ付きの値が、マップされたカラムより少ない場合、未入力のカラムはNULLに設定されます。NULL値をNOT NULLカラムに挿入しようとするとINSERTが失敗し、daemon_memcachedプラグインを再初期化してinnodb_memcache.containersテーブルに変更を適用した後にのみ明らかになる場合があります。-
innodb_memcached.containersテーブルのcas_columnおよびexpire_time_columnフィールドがNULLに設定されている場合、memcached プラグインをロードしようとすると次のエラーが返されます:InnoDB_Memcached: column 6 in the entry for config table 'containers' in database 'innodb_memcache' has an invalid NULL value.memcached プラグインは、
cas_columnおよびexpire_time_columnカラムでのNULLの使用を拒否します。 カラムが使用されていない場合は、これらのカラムの値を0に設定します。 -
memcached のキーと値の長さが増加するにつれて、サイズと長さの制限が生じる場合があります。
キーが 250 バイトを超えると、memcached 操作はエラーを返します。 これは memcached 内での現在の固定制限値です。
InnoDBテーブルの制限は、サイズが 768 バイト、サイズが 3072 バイトまたはinnodb_page_size値の半分を超える場合に発生することがあります。 これらの制限は主に、SQL を使用して値カラムにインデックスを作成し、そのカラムに対してレポート生成クエリーを実行する場合に適用されます。 詳細は、セクション15.22「InnoDB の制限」 を参照してください。キーと値の組合せの最大サイズは 1 MB です。
異なるバージョンの MySQL サーバー間で構成ファイルを共有する場合、
daemon_memcachedプラグインの最新の構成オプションを使用すると、古い MySQL バージョンで起動エラーが発生する可能性があります。 互換性の問題を回避するには、オプション名とともにloose接頭辞を使用します。 たとえば、daemon_memcached_option='-c 64'のかわりにloose-daemon_memcached_option='-c 64'を使用します。文字セットの設定を検証するための制約もチェックもありません。memcached は、キーおよび値をバイト形式で格納および取得するため、文字セットの違いは区別されません。 ただし、memcached クライアントと MySQL テーブルで、同じ文字セットを使用する必要があります。
memcached 接続は、インデックス付けされた仮想カラムを含むテーブルへのアクセスをブロックされます。 インデックス付き仮想カラムにアクセスするにはサーバーへのコールバックが必要ですが、memcached 接続にはサーバーコードへのアクセス権がありません。