MySQL 5.1 リファレンスマニュアル :: 14 MySQL Cluster :: 14.11 MySQL Cluster ディスク データ ストレージ
« 14.10.9.1 スレーブのマスタ binlog への自動同期

14.12 MySQL Cluster での高速インターコネクトを使用する »
Section Navigation      [Toggle]
  • 14 MySQL Cluster
  • 14.1 MySQL Cluster の概要
  • 14.2 基本的な MySQL Cluster のコンセプト
  • 14.3 簡単なマルチ コンピューターの手引き
  • 14.4 MySQL Cluster の設定
  • 14.5 MySQL Cluster のアップグレードおよびダウンロード
  • 14.6 MySQL Cluster のプロセス管理
  • 14.7 MySQL Cluster の管理
  • 14.8 MySQL Cluster のオンライン バックアップ
  • 14.9 クラスタ ユーティリティ プログラム
  • 14.10 MySQL Cluster レプリケーション
  • 14.11 MySQL Cluster ディスク データ ストレージ
  • 14.12 MySQL Cluster での高速インターコネクトを使用する
  • 14.13 MySQL Cluster の既知の制限
  • 14.14 MySQL Cluster 開発ロードマップ
  • 14.15 MySQL Cluster の用語

14.11. MySQL Cluster ディスク データ ストレージ

MySQL 5.1.6 では、ディスクの NDB テーブルの非インデックスのカラムを、以前のバージョンの MySQL Cluster の RAM 以外に保存できるようになりました。

クラスタ ディスク データの作業の一貫で、ノードのリカバリおよび再起動時に多量(テラ バイト)のデータの取扱い効率を上げるための多くの改善を加えています。これらの改善点の中には非常に大きなデータセットを持つノードの起動の同期する 「no-steal」 アルゴリズムが含まれています。詳細については MySQL Cluster の開発者 Mikael Ronström および Jonas Oreland による説明書 Recovery Principles of MySQL Cluster 5.1 を参照してください。

MYSQL 5.1.6 あるいはそれ以降で稼動する MySQL Cluster をすべてのノード (マネジメント および SQL ノードを含む) を設定したと仮定すると、ディスクでクラスタ テーブル作成の基本的なステップは以下のようになります。

  1. log file group を作成し、1つ以上の UNDO ログ ファイルをそれに割り当て (UNDO ログ ファイルは UNDOFILE とも言われます) ます。.

  2. tablespace を作成し、1 つい上のデータ ファイルおよびログ ファイル グループをそれに割り当てます。

  3. データのストレージにテーブルスペースを使用するあディスク データ テーブルを作成します。

これらの各タスクは以下の例に示すように SQL ステートメントで実行できます。

  1. lg_1 の名前のログ ファイル グループを CREATE LOGFILE GROUP を使用して作成します。このログ ファイルのグループは 2 つの UNDO ログ ファイルで構成され、それぞれの名前を undo_1.dat および undo_2.dat とし、それらの初期サイズはそれぞれ 16 MB および 12 MB です。(ログ ファイルをログ ファイル グループに追加する際はそれらの初期サイズを指定する必要があります。オプションで、ログ ファイル グループの UNDO バッファのサイズを指定するか、デフォルト値の 8 MB のまま使用することもできます。この例では、UNDO バッファのサイズを 2 MB にしています。UNDO ログ ファイルと一緒にログ ファイルのグループを作成する必要があります。ここでは undo_1.dat を lg_1 にこの CREATE LOGFILE GROUP ステートメントで追加します。

    CREATE LOGFILE GROUP lg_1
        ADD UNDOFILE 'undo_1.dat'
        INITIAL_SIZE 16M
        UNDO_BUFFER_SIZE 2M
        ENGINE NDB;
    

    undo_2.dat をログ ファイルのグループに追加するには、以下の ALTER LOGFILE GROUP ステートメントを使用します。

    ALTER LOGFILE GROUP lg_1
        ADD UNDOFILE 'undo_2.dat'
        INITIAL_SIZE 12M
        ENGINE NDB;
    

    いくつかの項目に関する備考

    • ここで使用されている.dat のファイル拡張は必要ありません。ここで使用しているのはログおよびデータ ファイルが分かり易いように使用しているだけです。

    • すべての CREATE LOGFILE GROUP および ALTER LOGFILE GROUP ステートメントには ENGINE 節を含める必要があります。MySQL 5.1 では、この節に許可された値は NDB および NDBCLUSTER です。

      重要MySQL 5.1.8 およびそれ以降では、所定の時間ではログ ファイル グループは 1 つだけです。

    • UNDO ログ ファイルをログ ファイル グループに ADD UNDOFILE 'filename'を使用して追加するときに、filename の名前のファイルがクラスタの各データ ノードの Data Directory の ndb_nodeid_fs ディレクトリで作成されます。そこでは nodeid はデータ ノードのノード ID です。

    • UNDO_BUFFER_SIZE は利用できるシステム メモリの容量によって制限されます。

    • CREATE LOGFILE GROUP ステートメントの詳細に関しては 項12.1.9. 「CREATE LOGFILE GROUP 構文」 を参照してください。.ALTER LOGFILE GROUP の詳細は、 項12.1.3. 「ALTER LOGFILE GROUP 構文」 を参照してください。

  2. ここでテーブルスペースを作成します。テーブルスペースは MySQL Cluster ディスク データ テーブルで使用されるそれらのデータを保存するファイルを含みます。テーブルスペースは特定のログ ファイルのグループに関連付けられています。新たにテーブルスペースを作成する際は、UNDO ロギングで使用されるログ ファイルのグループを指定する必要があります。データ ファイルも指定する必要があります。テーブルスペースを作成した後にさらにテーブルスペースを追加することもできます。データスペースからデータ ファイルを削除することもできます (データ ファイルの削除の例はこの項で後ほど提供します)。

    ts_1 の名前で lg_1 でログ ファイルのグループとして使用されるテーブルスペースを作成するものとします。このテーブルスペースは 2 つのデータ ファイル data_1.dat および data_2.dat を含むものとし、それぞれの初期のサイズをそれぞれ 32 MB および 48 MB とします。これを 2 つの SQL ステートメントを使用して行います。CREATE TABLESPACE、ts_1 をデータ ファイル data_1.dat で作成し、ts_1 をログ ファイル グループ lg_1 に関連付けし、 ALTER TABLESPACE は 2 番目のデータ ファイルを追加します。以下のこれらのステートメントを示します。

    CREATE TABLESPACE ts_1
        ADD DATAFILE 'data_1.dat'
        USE LOGFILE GROUP lg_1
        INITIAL_SIZE 32M
        ENGINE NDB;
    
    ALTER TABLESPACE ts_1
        ADD DATAFILE 'data_2.dat'
        INITIAL_SIZE 48M
        ENGINE NDB;
    

    いくつかの項目に関する備考

    • ここで UNDO ログ ファイルに使用されたファイル名の場合と同様、.dat ファイル拡張の特別な重要性はありません。分かり易くするためにのみ使用しています。

    • すべての CREATE TABLESPACE および ALTER TABLESPACE ステートメントは ENGINE 節を含む必要があり、テーブルスペースと同じストレージ エンジンを使用しているテーブルのみがテーブルスペースで作成されます。MySQL 5.1 では、この節に許可された値は NDB および NDBCLUSTER だけです。

      CREATE TABLESPACE および ALTER TABLESPACE ステートメントに関する詳細は、 項12.1.10. 「CREATE TABLESPACE 構文」 、および 項12.1.4. 「ALTER TABLESPACE 構文」 を参照してください。

  3. ここで非インデックスのカラムがテーブルスペース ts_1 のディスクの保存されるテーブルを作成できます。

    CREATE TABLE dt_1 (
        member_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
        last_name VARCHAR(50) NOT NULL,
        first_name VARCHAR(50) NOT NULL,
        dob DATE NOT NULL,
        joined DATE NOT NULL,
        INDEX(last_name, first_name)
        )
        TABLESPACE ts_1 STORAGE DISK
        ENGINE NDB;
    

    TABLESPACE ...STORAGE DISK 節が NDB Cluster ストレージ エンジンにテーブルスペース ts_1 をディスク データ ストレージに使用するよう指示します。

    以下のようにテーブル ts_1 が以下のように作成されたら、他の MySQL テーブルでするように INSERT、SELECT、UPDATE、および DELETE ステートメントを実行できます。

    テーブル dt_1 にはここで定義されたように、dob および joined カラムのみがディスクに保存できます。これは id にインデックスがあるからで、last_name、および first_name カラム、並びにこれらのカラムに所属するが RAM に保存されます。MySQL 5.1 では、非インデックスカラムのみがディスクの保存されます。インデックスおよびインデックスの付いたカラムはメモリに保存されます。このインデックスと RAM の保存間の兼ね合いはディスク データ テーブルを設計する際に忘れてはならないものです。

    重要MySQL 5.1 のディスク データ テーブルには、変数長カラムがある一定のスペースを使用します。各行では、そのカラムの一番大きな値を保存するのに必要なスペースに相当します。(これらの計算に関するヘルプに関しては、項10.5. 「データタイプが必要とする記憶容量」 を参照してください。)

    注:クラスタを --initial オプションで起動するとディスク データ ファイルは削除されません。クラスタを最初の再起動を実行するときに手動でそうする必要があります。

これらを使用しているログ ファイル グループ、テーブルスペース、およびディスク データ テーブルは特別な順序で作成する必要があります。これらのオブジェクトを削除する際も同様です。

  • ログ ファイル グループはテーブルスペースがそれを使用しいる場合は削除できません。

  • テーブルスペースはそれがデータ ファイルを含んでいる場合には削除できません。

  • テーブルスペースを使用しているテーブルが残っている限りテーブルスペースからデータ ファイルを削除することはできません。

  • MySQL 5.1.12 以降では、ファイルが作成されたもの以外の異なるテーブルスペースに関連して作成されたファイルは削除できなくなりました。(Bug#20053)

例えば、この項でこれまで作成してきたすべてのオブジェクトを削除するには、以下のステートメントを使用します。

mysql> DROP TABLE dt_1;

mysql> ALTER TABLESPACE ts_1
    -> DROP DATAFILE 'data_2.dat'
    -> ENGINE NDB;

mysql> ALTER TABLESPACE ts_1
    -> DROP DATAFILE 'data_1.dat'
    -> ENGINE NDB;

mysql> DROP TABLESPACE ts_1
    -> ENGINE NDB;

mysql> DROP LOGFILE GROUP lg_1
    -> ENGINE NDB;

これらのステートメントは表示された順序で実行する必要があります。ALTER TABLESPACE ...DROP DATAFILE のこの 2 つのステートメントはどちらの順序でも実行できる場合があります。

INFOMATION_SCHEMA データベースで FILES テーブルにクエリしてディスク データ テーブルに使用されるデータ ファイルに関する情報を取得できます。undo ログ ファイルに関する情報を提供するために特別な 「NULL 行」 が MySQL 5.1.14 に追加されています。使用例に関する詳細は、 項21.21. 「INFORMATION_SCHEMA FILES テーブル」 を参照してください。.

パラメータの設定により以下を含むディスク データ の振る舞いに影響を及ぼします。

  • DiskPageBufferMemory

    これによりディスクのキャッシュ ページに使用されるスペースを決め、config.ini ファイルの [NDBD] あるいは [NDBD DEFAULT] セクションに設定されます。そのスペースはバイトで測定されます。各ページは 32k です。このことはN が負の整数以外の場合、クラスタ デスク データ ストレージは常に N * 32k メモリを使用することを意味します。

  • SharedGlobalMemory

    これはログ バッファに使用されるメモリ容量、ディスク オペレーション(ページ リクエストおよび待ちキューなど)、およびテーブルスペースのメタデータ、ログ ファイル グループ、UNDO ファイル、ならびにデータ ファイルを決めます。それはconfig.ini 設定ファイルの [NDBD] あるいは [NDBD DEFAULT] セクションで設定され、バイトで測定されます。

注:OPTIMIZE TABLE ステートメントはディスク データ テーブルには影響を及ぼしません。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates