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 集群磁盘数据表”。