13.1.15 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
文件。 创建日志文件组语句只有一个ADD UNDOFILE
子句。有关覆盖日志文件组命名的规则,请参见第 9.2 节“架构对象名称”。
Note
所有 NDB 群集磁盘数据对象共享相同的名称空间。这意味着“每个磁盘数据对象”必须被唯一命名(而不仅仅是给定类型的每个磁盘数据对象)。例如,您不能具有相同名称的 table 空间和日志文件组,或具有相同名称的 table 空间和数据文件。
在任何给定时间,每个 NDB 群集实例只能有一个日志文件组。
可选的INITIAL_SIZE
参数设置UNDO
文件的初始大小;如果未指定,则默认为128M
(128 兆字节)。可选的UNDO_BUFFER_SIZE
参数设置UNDO
缓冲区用于日志文件组的大小。 UNDO_BUFFER_SIZE
的默认值为8M
(八兆字节);此值不能超过可用的系统内存量。这两个参数均以字节为单位指定。您可以选择在其中一个或两个后面加上一个字母的缩写,table 示一个数量级,类似于my.cnf
中使用的缩写。通常,这是字母M
(对于兆字节)或G
(对于千兆字节)之一。
用于UNDO_BUFFER_SIZE
的内存来自全局池,该全局池的大小由SharedGlobalMemory数据节点配置参数的值确定。这包括InitialLogFileGroup数据节点配置参数的设置对此选项隐含的任何默认值。
UNDO_BUFFER_SIZE
允许的最大数量为 629145600(600 MB)。
在 32 位系统上,INITIAL_SIZE
的最大支持值为 4294967296(4 GB)。错误 29186)
INITIAL_SIZE
的最小允许值为 1048576(1 MB)。
ENGINE
选项确定此日志文件组要使用的存储引擎,其中* engine_name
*是存储引擎的名称。在 MySQL 5.7 中,该值必须为NDB(或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)
当希望命名非NDB
存储引擎时CREATE LOGFILE GROUP
语句实际上没有返回错误,而是看起来成功了,这一事实是一个已知问题,我们希望在 NDB Cluster 的 Future 版本中解决该问题。
REDO_BUFFER_SIZE
*,NODEGROUP
,WAIT
和COMMENT
被解析但被忽略,因此在 MySQL 5.7 中无效。这些选项旨在用于将来的扩展。
与ENGINE [=] NDB
一起使用时,将在每个“群集”数据节点上创建一个日志文件组和关联的UNDO
日志文件。您可以验证UNDO
文件已创建并通过查询INFORMATION_SCHEMA.FILEStable 获取有关它们的信息。例如:
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)
创建日志文件组仅对 NDB 群集的磁盘数据存储有用。参见第 21.5.10 节“ NDB 群集磁盘数据 table”。