### 13.1.16 CREATE LOGFILE GROUP 语句

[](<>)

```
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
```

此语句创建一个名为的新日志文件组*`日志文件组`*有一个`撤消`文件名为'*`撤消文件`*'。一种[`创建日志文件组`](create-logfile-group.html)语句只有一个`添加撤销文件`条款。有关日志文件组命名的规则，请参见[第 9.2 节，“架构对象名称”](identifiers.html).

笔记

所有 NDB Cluster 磁盘数据对象共享相同的命名空间。这意味着*每个磁盘数据对象*必须唯一命名（而不仅仅是给定类型的每个磁盘数据对象）。例如，您不能拥有同名的表空间和日志文件组，或者同名的表空间和数据文件。

在任何给定时间，每个 NDB Cluster 实例只能有一个日志文件组。

可选的`INITIAL_SIZE`参数设置`撤消`文件的初始大小；如果未指定，则默认为`128M`（128 兆字节）。可选的`UNDO_BUFFER_SIZE`参数设置使用的大小`撤消`日志文件组的缓冲区；默认值为`UNDO_BUFFER_SIZE`是`8M`（八兆字节）；此值不能超过可用的系统内存量。这两个参数都以字节为单位。您可以选择在其中一个或两个后面加上一个数量级的单字母缩写，类似于在`我的.cnf`.通常，这是其中一个字母`米`（兆字节）或`G`（千兆字节）。

用于的内存`UNDO_BUFFER_SIZE`来自全局池，其大小由[`共享全局内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-sharedglobalmemory)数据节点配置参数。这包括通过设置为该选项隐含的任何默认值[`初始日志文件组`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-initiallogfilegroup)数据节点配置参数。

允许的最大值`UNDO_BUFFER_SIZE`是 629145600 (600 MB)。

在 32 位系统上，支持的最大值为`INITIAL_SIZE`是 4294967296 (4 GB)。（错误 #29186）

允许的最小值`INITIAL_SIZE`是 1048576 (1 MB)。

这`引擎`选项确定此日志文件组要使用的存储引擎，其中*`引擎名称`*是存储引擎的名称。在 MySQL 8.0 中，这必须是[`新开发银行`](mysql-cluster.html)（要么[`NDBCLUSTER`](mysql-cluster.html)）。如果`引擎`未设置，MySQL 会尝试使用指定的引擎[`default_storage_engine`](server-system-variables.html#sysvar_default_storage_engine)服务器系统变量（以前[`存储引擎`](https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_storage_engine)）。在任何情况下，如果引擎未指定为[`新开发银行`](mysql-cluster.html)要么[`NDBCLUSTER`](mysql-cluster.html)， 这`创建日志文件组`语句看似成功但实际上未能创建日志文件组，如下所示：

```
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 Cluster 的未来版本中解决的已知问题。

*`REDO_BUFFER_SIZE`*,`节点组`,`等待`， 和`评论`被解析但被忽略，因此在 MySQL 8.0 中无效。这些选项旨在用于未来的扩展。

当与`引擎 [=] NDB`, 一个日志文件组和相关联的`撤消`在每个集群数据节点上创建日志文件。您可以验证`撤消`创建文件并通过查询[`INFORMATION_SCHEMA.FILES`](information-schema-files-table.html)桌子。例如：

```
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.html)仅对 NDB Cluster 的磁盘数据存储有用。看[第 23.6.10 节，“NDB Cluster 磁盘数据表”](mysql-cluster-disk-data.html).
