CREATE LOGFILE GROUP logfile_group
ADD UNDOFILE 'undo_file'
[INITIAL_SIZE [=] initial_size]
[UNDO_BUFFER_SIZE [=] undo_buffer_size]
[REDO_BUFFER_SIZE [=] redo_buffer_size]
[NODEGROUP [=] nodegroup_id]
[WAIT]
[COMMENT [=] comment_text]
ENGINE [=] engine_name
このステートメントは、'undo_file
' という名前の 1 つの UNDO
ファイルを持つ logfile_group
という名前の新しいログファイルグループを作成します。CREATE LOGFILE GROUP
ステートメントには、ADD UNDOFILE
句が 1 つだけ存在します。ログファイルグループの命名を管理するルールについては、セクション9.2「スキーマオブジェクト名」を参照してください。
すべての MySQL Cluster ディスクデータオブジェクトが同じ名前空間を共有します。つまり、各ディスクデータオブジェクトは (単に、特定の型の各ディスクデータオブジェクトというだけでなく)、一意の名前が付けられている必要があります。たとえば、テーブルスペースとログファイルグループを同じ名前にしたり、テーブルスペースとデータファイルを同じ名前にしたりすることはできません。
MySQL Cluster NDB 7.3 以降では、クラスタあたり、常に 1 つのログファイルグループしか作成できません。(Bug #16386 を参照してください)
オプションの INITIAL_SIZE
パラメータは、UNDO
ファイルの初期サイズを設定します。指定されていない場合は、デフォルトで 128M
(128M バイト) になります。オプションの UNDO_BUFFER_SIZE
パラメータは、ログファイルグループの UNDO
バッファーで使用されるサイズを設定します。UNDO_BUFFER_SIZE
のデフォルト値は 8M
(8M バイト) です。この値が、使用可能なシステムメモリーの量を超えることはできません。これらのパラメータは、どちらもバイト単位で指定されます。MySQL Cluster NDB 7.3.2 以降では、これらの両方またはどちらか一方のあとにオプションで、my.cnf
で使用されるのと同様の、桁を示す 1 文字の略語を指定できます。一般に、これは M
(M バイト) または G
(G バイト) のどちらかの文字です。MySQL Cluster NDB 7.3.2 より前は、これらのオプションの値は数字でしか指定できませんでした。(Bug #13116514、Bug #16104705、Bug #62858)
INITIAL_SIZE
と UNDO_BUFFER_SIZE
の両方に使用されるメモリーは、サイズが SharedGlobalMemory
データノード構成パラメータの値によって決定されるグローバルプールから取得されます。これには、InitialLogFileGroup
データノード構成パラメータの設定により、これらのオプションに暗黙的に指定されるデフォルト値もすべて含まれます。
UNDO_BUFFER_SIZE
に許可される最大値は 629145600 (600M バイト) です。
32 ビットシステム上では、INITIAL_SIZE
のサポートされる最大値は 4294967296 (4G バイト) です。(Bug #29186)
INITIAL_SIZE
の許可される最小値は 1048576 (1M バイト) です。
ENGINE
オプションは、このログファイルグループによって使用されるストレージエンジンを決定します。ここで、engine_name
はそのストレージエンジンの名前です。MySQL 5.6 では、これは NDB
(または NDBCLUSTER
) である必要があります。ENGINE
が設定されていない場合、MySQL は、default_storage_engine
サーバーシステム変数 (以前の storage_engine
) で指定されたエンジンを使用しようとします。いずれにしても、エンジンが NDB
または NDBCLUSTER
として指定されていない場合、CREATE LOGFILE GROUP
ステートメントは成功したように見えますが、次に示すように、実際にはログファイルグループの作成に失敗します。
mysql> CREATE LOGFILE GROUP lg1
-> ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10M;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW WARNINGS;
+-------+------+------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+-------+------+------------------------------------------------------------------------------------------------+
| Error | 1478 | Table storage engine 'InnoDB' does not support the create option 'TABLESPACE or LOGFILE GROUP' |
+-------+------+------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> DROP LOGFILE GROUP lg1 ENGINE = NDB;
ERROR 1529 (HY000): Failed to drop LOGFILE GROUP
mysql> CREATE LOGFILE GROUP lg1
-> ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10M
-> ENGINE = NDB;
Query OK, 0 rows affected (2.97 sec)
NDB
以外のストレージエンジンが指定されたときに CREATE LOGFILE GROUP
ステートメントが実際にはエラーを返さず、成功したように見えるという事実は、MySQL Cluster の将来のリリースで対処したいと考えている既知の問題です。
REDO_BUFFER_SIZE
、NODEGROUP
、WAIT
、および COMMENT
は解析されますが、無視されるため、MySQL 5.6 では何の効果もありません。これらのオプションは、将来の拡張のために用意されています。
ENGINE [=] NDB
とともに使用された場合は、ログファイルグループとそれに関連付けられた UNDO
ログファイルが各クラスタデータノード上に作成されます。INFORMATION_SCHEMA.FILES
テーブルをクエリーすることによって、UNDO
ファイルが作成されたことを確認したり、それらに関する情報を取得したりできます。例:
mysql> SELECT LOGFILE_GROUP_NAME, LOGFILE_GROUP_NUMBER, EXTRA
-> FROM INFORMATION_SCHEMA.FILES
-> WHERE FILE_NAME = 'undo_10.dat';
+--------------------+----------------------+----------------+
| LOGFILE_GROUP_NAME | LOGFILE_GROUP_NUMBER | EXTRA |
+--------------------+----------------------+----------------+
| lg_3 | 11 | CLUSTER_NODE=3 |
| lg_3 | 11 | CLUSTER_NODE=4 |
+--------------------+----------------------+----------------+
2 rows in set (0.06 sec)
CREATE LOGFILE GROUP
は、MySQL Cluster のディスクデータストレージでのみ有効です。セクション18.5.12「MySQL Cluster ディスクデータテーブル」を参照してください。