暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 - 数据定义语句(10)- CREATE LOGFILE GROUP 语句

数据库杂货铺 2021-04-12
1049
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' UNDO 文件。CREATE LOGFILE GROUP 语句只有一个ADD UNDOFILE子句。
     
    注意
     
    所有 NDB 集群磁盘数据对象共享同一命名空间。这意味着每个磁盘数据对象必须具有唯一的名称(而不仅仅是给定类型的每个磁盘数据对象)。例如,不能有同名的表空间和日志文件组,也不能有同名的表空间和数据文件。
     
    在任何给定时间,每个NDB集群实例只能有一个日志文件组。
     
    可选的 INITIAL_SIZE 参数设置 UNDO 文件的初始大小;如果未指定,则默认为128M128兆字节)。可选的 UNDO_BUFFER_SIZE 参数设置用于日志文件组的 UNDO 缓冲区大小;UNDO_BUFFER_SIZE 的默认值为8M8 MB);此值不能超过可用的系统内存量。这两个参数都是以字节单位指定的。可以选择在其中一个或两个后面加上表示数量级的一个字母缩写,类似于my.cnf文件中所用. 通常,这是字母M(表示兆字节)或G(表示千兆字节)之一。
     
    用于 UNDO_BUFFER_SIZE 的内存来自全局池,其大小由 SharedGlobalMemory 数据节点配置参数的值确定。这包括通过设置 InitialLogFileGroup 数据节点配置参数为该选项表明的任何默认值。
     
    UNDO_BUFFER_SIZE 允许的最大值为629145600600 MB)。
     
    在32位系统上,INITIAL_SIZE 支持的最大值为42949672964 GB)。
     
    INITIAL_SIZE 允许的最小值为10485761 MB)。
     
    ENGINE选项确定此日志文件组要使用的存储引擎,其中 engine_name 是存储引擎的名称。在MySQL 8.0中,它必须是NDB(或NDBCLUSTER)。如果未设置 ENGINEMySQL会尝试使用服务器系统变量 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)
       
      当命名非NDB存储引擎时,CREATE LOGFILE GROUP语句实际上并没有返回错误,而是看起来成功了,这是一个已知的问题,我们希望在NDB Cluster的未来版本中解决这个问题。
       
      REDO_BUFFER_SIZENODEGROUPWAITCOMMENT被解析但被忽略,因此在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)
         
         
        官方文档:
        https://dev.mysql.com/doc/refman/8.0/en/create-logfile-group.html

        文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论