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 [=] 'string']
ENGINE [=] engine_name
このステートメントは、'undo_file
' という名前の 1 つの UNDO
ファイルを持つ logfile_group
という名前の新しいログファイルグループを作成します。 CREATE LOGFILE GROUP
ステートメントには、ADD UNDOFILE
句が 1 つだけ存在します。 ログファイルグループの命名を管理するルールについては、セクション9.2「スキーマオブジェクト名」を参照してください。
NDB Cluster ディスクデータオブジェクトはすべて同じ名前空間を共有します。 つまり、各ディスクデータオブジェクトは (単に、特定の型の各ディスクデータオブジェクトというだけでなく)、一意の名前が付けられている必要があります。 たとえば、テーブルスペースとログファイルグループを同じ名前にしたり、テーブルスペースとデータファイルを同じ名前にしたりすることはできません。
NDB Cluster インスタンスごとに一度に 1 つのログファイルグループしか存在できません。
オプションの INITIAL_SIZE
パラメータは、UNDO
ファイルの初期サイズを設定します。指定されていない場合は、デフォルトで 128M
(128M バイト) になります。 オプションの UNDO_BUFFER_SIZE
パラメータは、ログファイルグループの UNDO
バッファーで使用されるサイズを設定します。UNDO_BUFFER_SIZE
のデフォルト値は 8M
(8M バイト) です。この値が、使用可能なシステムメモリーの量を超えることはできません。 これらのパラメータは、どちらもバイト単位で指定されます。 オプションで、これらのいずれかまたは両方の後に、my.cnf
で使用されるものと同様に、大きさの順に 1 文字の略称を付けることができます。 一般に、これは M
(M バイト) または G
(G バイト) のどちらかの文字です。
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 8.0 では、これは 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
ステートメントは実際にはエラーを返しません。これは NDB Cluster の将来のリリースで対処することを希望している既知の問題です。
REDO_BUFFER_SIZE
、NODEGROUP
、WAIT
、および COMMENT
は解析されますが、無視されるため、MySQL 8.0 では何の効果もありません。 これらのオプションは、将来の拡張のために用意されています。
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
は NDB Cluster のディスクデータストレージでのみ役立ちます。 セクション23.5.10「NDB Cluster ディスクデータテーブル」を参照してください。