15.1.6 更改日志文件组语句
ALTER LOGFILE GROUP logfile_group
ADD UNDOFILE 'file_name'
[INITIAL_SIZE [=] size]
[WAIT]
ENGINE [=] engine_name
该语句将名为'file_name'的UNDO文件添加到现有日志文件组logfile_group中。一个ALTER LOGFILE GROUP语句只能包含一个ADD UNDOFILE子句当前不支持DROP UNDOFILE子句。
所有 NDB 集群磁盘数据对象共享同一个命名空间。这意味着每个磁盘数据对象都必须唯一命名(而不是每种类型的磁盘数据对象)。例如,你不能有一个表空间和一个回滚日志文件具有相同名称,或者一个回滚日志文件和一个数据文件具有相同名称。
可选的INITIAL_SIZE参数设置UNDO文件的初始大小,以字节为单位;如果不指定,初始大小默认为134217728(128 MB)。你可以在size后面跟一个一位的缩写,类似于my.cnf文件中使用的缩写。通常,这是一个字母M(兆)或G(GB)。(Bug #13116514、Bug #16104705、Bug #62858)
在 32 位系统上,INITIAL_SIZE的最大支持值为4294967296(4 GB)。(Bug #29186)
INITIAL_SIZE的最小允许值为1048576(1 MB)。(Bug #29574)
WAIT被解析,但否则被忽略。这关键字当前无效,旨在未来扩展。
ENGINE子句(必需)确定了该日志文件组使用的存储引擎,engine_name是存储引擎名称。当前,只接受“NDBCLUSTER”和“NDB”这两个值是等价的。
以下是一个示例,假设日志文件组lg_3已经使用CREATE LOGFILE GROUP创建了(见第15.1.16节,“CREATE LOGFILE GROUP 语句”):
ALTER LOGFILE GROUP lg_3
ADD UNDOFILE 'undo_10.dat'
INITIAL_SIZE=32M
ENGINE=NDBCLUSTER;
使用ALTER LOGFILE GROUP时,指定ENGINE = NDBCLUSTER(或者ENGINE = NDB),在每个NDB集群数据节点上创建了undo日志文件。可以通过查询信息SchemaFILES表来验证undo文件是否创建成功,并获取它们的信息,例如:
mysql> SELECT FILE_NAME, LOGFILE_GROUP_NUMBER, EXTRA
-> FROM INFORMATION_SCHEMA.FILES
-> WHERE LOGFILE_GROUP_NAME = 'lg_3';
+-------------+----------------------+----------------+
| FILE_NAME | LOGFILE_GROUP_NUMBER | EXTRA |
+-------------+----------------------+----------------+
| newdata.dat | 0 | CLUSTER_NODE=3 |
| newdata.dat | 0 | CLUSTER_NODE=4 |
| undo_10.dat | 11 | CLUSTER_NODE=3 |
| undo_10.dat | 11 | CLUSTER_NODE=4 |
+-------------+----------------------+----------------+
4 rows in set (0.01 sec)
(参见第28.3.15节,“INFORMATION_SCHEMA FILES 表”。)
UNDO_BUFFER_SIZE所占用的内存来自全局池,大小由SharedGlobalMemory数据节点配置参数确定。包括了通过InitialLogFileGroup数据节点配置参数隐含的默认值。
ALTER LOGFILE GROUP仅适用于 NDB 集群磁盘存储。更多信息,见第25.6.11节,“NDB 集群磁盘数据表”。