• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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名为“undo_file”的文件。一条CREATE LOGFILE GROUP语句只有一个ADD UNDOFILE子句。有关覆盖日志文件组命名的规则,请参见“模式对象名称”。

    注意

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

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

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

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

    允许的最大数量UNDO_BUFFER_SIZE为629145600(600 MB)。

    在32位系统上,最大支持值为INITIAL_SIZE4294967296(4 GB)。(缺陷号29186)

    最小允许值为INITIAL_SIZE1048576(1 MB)。

    ENGINE选项确定此日志文件组要使用的存储引擎,并engine_name为该存储引擎的名称。在MySQL 8.0中,必须为NDB(或NDBCLUSTER)。如果ENGINE未设置,则MySQL尝试使用default_storage_engine服务器系统变量(以前称为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)
    

    CREATE LOGFILE GROUP当非NDB存储引擎被命名时,该语句实际上并没有返回错误,而是看起来成功了,这一事实是一个已知问题,我们希望在以后的NDB Cluster版本中解决。

    REDO_BUFFER_SIZENODEGROUPWAIT,和COMMENT被分析,但是被忽略,所以有在MySQL 8.0没有影响。这些选项旨在用于将来的扩展。

    与结合使用时ENGINE[=] NDB,将UNDO在每个“群集”数据节点上创建一个日志文件组和关联的日志文件。您可以验证UNDO文件是否已创建并通过查询INFORMATION_SCHEMA.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群集的磁盘数据存储有用。请参见“ NDB群集磁盘数据表”。