Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  CREATE LOGFILE GROUP Statement

15.1.16 创建日志文件组语句

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

该语句创建一个名为 logfile_group 的新日志文件组,拥有单个名为 'undo_file' 的回滚文件。CREATE LOGFILE GROUP 语句只有一个ADD UNDOFILE子句。关于日志文件组命名的规则,请参见第11.2节,“模式对象名称”

Note

所有 NDB 集群磁盘数据对象共享同一个命名空间。这意味着每个磁盘数据对象必须是唯一的(而不是每种类型的磁盘数据对象)。例如,你不能有一个表空间和日志文件组具有相同名称,或者一个表空间和数据文件具有相同名称。

在任何时候,只能存在一个 NDB 集群实例中的一个日志文件组。

可选的INITIAL_SIZE参数设置回滚文件的初始大小;如果不指定,默认为128M(128兆字节)。可选的UNDO_BUFFER_SIZE参数设置日志文件组中的回滚缓冲区大小;UNDO_BUFFER_SIZE的默认值为8M(八兆字节);这个值不能超过系统可用内存。这些参数都以字节为单位。你可以在这两个参数后面跟一个一位的缩写,类似于my.cnf文件中使用的一样,通常是M(兆字节)或G(GB)。

用于UNDO_BUFFER_SIZE的内存来自全局池,大小由SharedGlobalMemory数据节点配置参数确定,这包括InitialLogFileGroup数据节点配置参数隐含的默认值。

UNDO_BUFFER_SIZE的最大限制为629145600(600 MB).

在32位系统上,INITIAL_SIZE的最大支持值为4294967296(4 GB)。(Bug #29186)

INITIAL_SIZE的最小允许值为1048576(1 MB).

ENGINE选项确定了日志文件组使用的存储引擎,engine_name是存储引擎的名称。这必须是NDB(或NDBCLUSTER)。如果ENGINE未设置,MySQL将尝试使用default_storage_engine服务器系统变量指定的引擎。无论如何,如果引擎不指定为NDBNDBCLUSTERCREATE 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集群中解决。

REDO_BUFFER_SIZENODEGROUPWAITCOMMENT将被解析但忽略,因此在MySQL 8.4中没有任何影响。这些选项旨在未来扩展。

当与ENGINE [=] NDB一起使用时,在每个集群数据节点上创建了日志文件组和关联的undo日志文件。您可以通过查询信息_schemaFILES表来验证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集群中的磁盘数据存储。见第25.6.11节,“NDB 集群磁盘数据表”