文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  CREATE LOGFILE GROUP 语句

15.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

此语句创建一个名为 logfile_group 的新日志文件组,其中包含一个名为 'undo_file' 的撤消文件。一个 CREATE LOGFILE GROUP 语句只有一个 ADD UNDOFILE 子句。有关日志文件组命名的规则,请参见 第 11.2 节,“架构对象名称”

注意

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

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

可选的 INITIAL_SIZE 参数设置撤消文件的初始大小;如果未指定,则默认为 128M(128 兆字节)。可选的 UNDO_BUFFER_SIZE 参数设置撤消缓冲区为日志文件组使用的空间大小;UNDO_BUFFER_SIZE 的默认值为 8M(8 兆字节);此值不能超过可用的系统内存量。这两个参数都以字节为单位指定。您可以选择在其中一个或两个参数后面添加一个用于表示数量级的字母缩写,类似于 my.cnf 中使用的字母缩写。通常,这个字母是 M(表示兆字节)或 G(表示吉字节)。

用于 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 指定的引擎。在任何情况下,如果引擎未指定为 NDBNDBCLUSTER,则 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_SIZENODEGROUPWAITCOMMENT 会被解析但被忽略,因此在 MySQL 8.4 中没有效果。这些选项是为了将来扩展而设计的。

当与 ENGINE [=] NDB 一起使用时,会在每个集群数据节点上创建一个日志文件组和关联的撤消日志文件。您可以通过查询信息模式 FILES 表来验证撤消文件是否已创建并获取有关它们的信息。例如

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 集群磁盘数据表”