Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  InnoDB memcached プラグインのトラブルシューティング

14.18.8 InnoDB memcached プラグインのトラブルシューティング

次のリストは、InnoDB memcached プラグイン使用時に発生する潜在的な問題と、解決策または回避策があればそれを示しています。

  • MySQL エラーログにこのエラーが表示された場合、サーバーが起動に失敗することがあります。

    failed to set rlimit for open files. Try running as root or requesting
    smaller maxconns value.

    エラーメッセージは実際には memcached デーモンから出されたものです。1 つの解決策は、開くファイルの数について OS での制限を引き上げることです。コマンドはオペレーティングシステムによって異なります。たとえば、いくつかのオペレーティングシステム上で制限を確認して増加させるコマンドを、次に示します。

    # Linux
    $ ulimit -n
    1024
    ulimit -n 4096
    $ ulimit -n
    4096
    
    # OS X Lion (10.6)
    $ ulimit -n
    256
    ulimit -n 4096
    $ ulimit -n
    4096

    別の解決策は、-c オプションを使用して、memcached デーモンで使用可能な同時接続数を削減することで、デフォルトは 1024 です。MySQL 構成ファイル内の MySQL オプション daemon_memcached_option を使用して、この memcached オプションをエンコードします。

    [mysqld]
    ...
    loose-daemon_memcached_option='-c 64'
  • memcached デーモンが InnoDB テーブルにデータを格納したり、またはデータを取得したりできない場合に問題をトラブルシューティングするには、MySQL 構成オプション daemon_memcached_option を使用して、memcached オプション -vvv を指定します。MySQL エラーログを調べて、memcached 操作に関係するデバッグ出力がないか検査します。

  • memcached 項目値を保持するように指定されたカラムのデータ型が間違っている場合 (たとえば文字列型の代わりに数値型を指定するなど)、キー/値のペアを格納しようとすると、特定のエラーコードまたはメッセージを出さずに失敗します。

  • daemon_memcached プラグインで、MySQL Server の開始に関して何らかの問題が発生する場合、MySQL 構成ファイル内の [mysqld] グループの下に次の行を追加して、トラブルシューティング中にプラグインを無効にします。

    daemon_memcached=OFF

    たとえば、必要なデータベースおよびテーブルをセットアップするための innodb_memcached_config.sql 構成スクリプトを実行する前に install plugin コマンドを実行した場合、サーバーがクラッシュして開始できないことがあります。または、innodb_memcache.containers テーブルに正しくないエントリをセットアップした場合、サーバーは開始できないことがあります。

    MySQL インスタンス用の memcached プラグインを永続的にオフにするには、次のコマンドを発行します。

    mysql> uninstall plugin daemon_memcached;
  • 同じマシン上で MySQL の複数インスタンスを実行し、それぞれの memcached デーモンプラグインを有効にした場合、daemon_memcached_option 構成オプションを使用して、一意の memcached ポートを指定してください。

  • 期待するテーブルを SQL ステートメントで検出できなかったり、テーブル内にデータがなかったりする場合でも、memcached API 呼び出しが引き続き動作し、期待するデータを取得できる場合もあります。これが発生するのは、innodb_memcache.containers テーブル内にエントリをセットアップしなかったか、GET または SET リクエストにキー @@table_id を指定して発行することによってそのテーブルに切り換えなかったか、innodb_memcache.containers 内の既存のエントリに変更を加えたあとで MySQL Server を再起動しなかった場合です。すべてのデータを単一カラム内に格納する test.demo_test テーブルをデーモンが使用中であっても、自由形式のストレージメカニズムが柔軟なため、col1|col2|col3 のようなマルチカラム値を格納または取得するためのリクエストは、通常は引き続き機能します。

  • ユーザー独自の InnoDB テーブルを InnoDB memcached と一緒に使用するように定義し、テーブル内のカラムが NOT NULL に定義されている場合、InnoDB テーブル用のディスクリプタを memcached containers テーブル (innodb_memcached.containers) に挿入するとき、NOT NULL カラムに値を指定します。マップされたカラムよりも、ディスクリプタの INSERT ステートメントに含まれる区切られた値の方が少ない場合、入力値のないカラムは NULL に設定されます。NULL 値を NOT NULL カラムに挿入しようとすると、INSERT は失敗しますが、このことは InnoDB memcached プラグインを再初期化して変更内容を 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.

    プラグイン memcachedcas_column および expire_time_column カラムでの NULL の使用を拒否します。これらのカラムを使用しない場合は、カラムの値を 0 に設定してください。

  • memcached キーと値の長さが増加するにつれ、異なるポイントでサイズと長さの制限が発生します。

    • キーのサイズが 250 バイトを超える場合、memcached 操作はエラーを返します。これは memcached 内での現在の固定制限値です。

    • 値のサイズが 768 バイトを超えるか、3072 バイトを超えるか、innodb_page_size で指定されたサイズの 1/2 を超えた場合、InnoDB に関する制限が発生することがあります。これらの制限は、値カラムにインデックスを作成し、そのカラムで SQL からレポート生成クエリーを実行しようとするときに主に適用されます。詳細は、セクション14.6.7「InnoDB テーブル上の制限」を参照してください。

    • キーと値を組み合わせた最大サイズは 1M バイトです。

  • 異なるバージョンを持つ MySQL Server 間で構成ファイルを共有している場合、memcached プラグインの最新の構成オプションを使用すると、古い MySQL バージョンで起動エラーが発生する可能性があります。互換性の問題を回避するには、これらのオプション名の loose 形式を使用し、たとえば daemon_memcached_option='-c 64' でなく loose-daemon_memcached_option='-c 64' と指定します。

  • 文字セットの設定を検証するための制約もチェックもありません。memcached は、キーおよび値をバイト形式で格納および取得するため、文字セットの違いは区別されません。ただし、memcached クライアントと MySQL テーブルで、同じ文字セットを使用する必要があります。


User Comments
Sign Up Login You must be logged in to post a comment.