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
子句。有关日志文件组命名的规则,请参阅
第 9.2 节,“模式对象名称”。
所有 NDB Cluster 磁盘数据对象共享相同的命名空间。这意味着每个磁盘数据对象必须唯一命名(而不仅仅是给定类型的每个磁盘数据对象)。例如,表空间和日志文件组不能同名,表空间和数据文件不能同名。
在 MySQL NDB Cluster 7.3 及更高版本中,在任何给定时间,每个 Cluster 只能有一个日志文件组。(参见错误 #16386)
可选INITIAL_SIZE
参数设置
UNDO
文件的初始大小;如果未指定,则默认为128M
(128 兆字节)。可选
UNDO_BUFFER_SIZE
参数设置UNDO
日志文件组缓冲区使用的大小;默认值为UNDO_BUFFER_SIZE
(
8M
八兆字节);该值不能超过可用的系统内存量。这两个参数都以字节为单位指定。在 MySQL NDB Cluster 7.3.2 及更高版本中,您可以选择在其中一个或两个后面加上一个字母缩写来表示一个数量级,类似于
my.cnf
. 通常,这是字母之一M
(表示兆字节)或
G
(千兆字节)。在 MySQL NDB Cluster 7.3.2 之前,这些选项的值只能使用数字指定。(错误#13116514、错误#16104705、错误#62858)
用于的内存UNDO_BUFFER_SIZE
来自全局池,其大小由
SharedGlobalMemory
数据节点配置参数的值决定。InitialLogFileGroup
这包括数据节点配置参数
的设置为此选项隐含的任何默认值
。
允许的最大值为UNDO_BUFFER_SIZE
629145600 (600 MB)。
在 32 位系统上,支持的最大值为
INITIAL_SIZE
4294967296 (4 GB)。(漏洞 #29186)
允许的最小值为INITIAL_SIZE
1048576 (1 MB)。
该ENGINE
选项决定了该日志文件组使用的存储引擎,with
engine_name
是存储引擎的名称。在 MySQL 5.6 中,这必须是
NDB
(or
NDBCLUSTER
)。如果
ENGINE
未设置,MySQL 会尝试使用
default_storage_engine
服务器系统变量指定的引擎(以前称为
storage_engine
)。在任何情况下,如果未将引擎指定为NDB
或
NDBCLUSTER
,则该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_SIZE
、
NODEGROUP
、WAIT
和
COMMENT
被解析但被忽略,因此在 MySQL 5.6 中没有影响。这些选项旨在用于未来的扩展。
与 一起使用时,会在每个 Cluster 数据节点上创建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 Cluster 的磁盘数据存储有用。请参阅
第 18.6.11 节,“NDB Cluster 磁盘数据表”。