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

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

林员外聊编程 2020-08-04
406
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论