CREATE LOGFILE GROUP 语句
1. CREATE LOGFILE GROUP logfile_group
2. ADD UNDOFILE 'undo_file'
3. [INITIAL_SIZE [=] initial_size]
4. [UNDO_BUFFER_SIZE [=] undo_buffer_size]
5. [REDO_BUFFER_SIZE [=] redo_buffer_size]
6. [NODEGROUP [=] nodegroup_id]
7. [WAIT]
8. [COMMENT [=] 'string']
9. ENGINE [=] engine_name
此语句创建一个名为 logfile_group 的新日志文件组,其中有一个名为 'undo_file' 的 UNDO 文件。CREATE LOGFILE GROUP 语句只有一个ADD UNDOFILE子句。
注意
所有 NDB 集群磁盘数据对象共享同一命名空间。这意味着每个磁盘数据对象必须具有唯一的名称(而不仅仅是给定类型的每个磁盘数据对象)。例如,不能有同名的表空间和日志文件组,也不能有同名的表空间和数据文件。
在任何给定时间,每个NDB集群实例只能有一个日志文件组。
可选的 INITIAL_SIZE 参数设置 UNDO 文件的初始大小;如果未指定,则默认为128M(128兆字节)。可选的 UNDO_BUFFER_SIZE 参数设置用于日志文件组的 UNDO 缓冲区大小;UNDO_BUFFER_SIZE 的默认值为8M(8 MB);此值不能超过可用的系统内存量。这两个参数都是以字节单位指定的。可以选择在其中一个或两个后面加上表示数量级的一个字母缩写,类似于my.cnf文件中所用. 通常,这是字母M(表示兆字节)或G(表示千兆字节)之一。
用于 UNDO_BUFFER_SIZE 的内存来自全局池,其大小由 SharedGlobalMemory 数据节点配置参数的值确定。这包括通过设置 InitialLogFileGroup 数据节点配置参数为该选项表明的任何默认值。
UNDO_BUFFER_SIZE 允许的最大值为629145600(600 MB)。
在32位系统上,INITIAL_SIZE 支持的最大值为4294967296(4 GB)。
INITIAL_SIZE 允许的最小值为1048576(1 MB)。
ENGINE选项确定此日志文件组要使用的存储引擎,其中 engine_name 是存储引擎的名称。在MySQL 8.0中,它必须是NDB(或NDBCLUSTER)。如果未设置 ENGINE,MySQL会尝试使用服务器系统变量 default_storage_engine(以前称为 storage_engine)指定的引擎。在任何情况下,如果没有将引擎指定为NDB或NDBCLUSTER,则CREATE LOGFILE GROUP语句看似执行成功,但实际上无法创建日志文件组,如下所示:
1. mysql> CREATE LOGFILE GROUP lg1
2. -> ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10M;
3. Query OK, 0 rows affected, 1 warning (0.00 sec)
4.
5. mysql> SHOW WARNINGS;
6. +-------+------+-----------------------------------------------------------------------------------------------+
7. | Level | Code | Message |
8. +-------+------+------------------------------------------------------------------------------------------------+
9. | Error | 1478 | Table storage engine 'InnoDB' does not support the create option 'TABLESPACE or LOGFILE GROUP' |
10. +-------+------+------------------------------------------------------------------------------------------------+
11. 1 row in set (0.00 sec)
12.
13. mysql> DROP LOGFILE GROUP lg1 ENGINE = NDB;
14. ERROR 1529 (HY000): Failed to drop LOGFILE GROUP
15.
16. mysql> CREATE LOGFILE GROUP lg1
17. -> ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10M
18. -> ENGINE = NDB;
19. Query OK, 0 rows affected (2.97 sec)
当命名非NDB存储引擎时,CREATE LOGFILE GROUP语句实际上并没有返回错误,而是看起来成功了,这是一个已知的问题,我们希望在NDB Cluster的未来版本中解决这个问题。
REDO_BUFFER_SIZE、NODEGROUP、WAIT和COMMENT被解析但被忽略,因此在MySQL 8.0中没有任何影响。这些选项用于将来的扩展。
与 ENGINE [=] NDB 一起使用时,将在每个集群数据节点上创建日志文件组和关联的 UNDO 日志文件。可以验证 UNDO 文件是否已创建,并通过查询 INFORMATION_SCHEMA.FILES 表获取有关它们的信息。例如:
1. mysql> SELECT LOGFILE_GROUP_NAME, LOGFILE_GROUP_NUMBER, EXTRA
2. -> FROM INFORMATION_SCHEMA.FILES
3. -> WHERE FILE_NAME = 'undo_10.dat';
4. +--------------------+----------------------+----------------+
5. | LOGFILE_GROUP_NAME | LOGFILE_GROUP_NUMBER | EXTRA |
6. +--------------------+----------------------+----------------+
7. | lg_3 | 11 | CLUSTER_NODE=3 |
8. | lg_3 | 11 | CLUSTER_NODE=4 |
9. +--------------------+----------------------+----------------+
10. 2 rows in set (0.06 sec)
阅读 3