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 Cluster 磁盘数据对象共享同一个命名空间。这意味着每个磁盘数据对象必须具有唯一的名称(而不仅仅是每个给定类型的磁盘数据对象)。例如,您不能拥有名称相同的表空间和撤消日志文件,也不能拥有名称相同的撤消日志文件和数据文件。
可选的 INITIAL_SIZE
参数设置 UNDO
文件的初始大小(以字节为单位);如果未指定,则初始大小默认为 134217728(128 MB)。您可以选择在 size
后面添加一个用于表示数量级的单个字母缩写,类似于在 my.cnf
中使用的缩写。通常,此字母缩写为 M
(兆字节)或 G
(千兆字节)。(错误 #13116514,错误 #16104705,错误 #62858)
在 32 位系统上,INITIAL_SIZE
支持的最大值为 4294967296(4 GB)。(错误 #29186)
INITIAL_SIZE
的最小允许值为 1048576(1 MB)。(错误 #29574)
WAIT
被解析但会被忽略。此关键字目前没有效果,旨在为将来的扩展保留。
ENGINE
子句(必需)确定此日志文件组使用的存储引擎,engine_name
是存储引擎的名称。目前,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 Cluster 数据节点上创建一个撤销日志文件。您可以通过查询 Information Schema 的 FILES
表来验证撤销文件是否已创建并获取有关它们的的信息。例如
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 Cluster 的磁盘数据存储有用。有关更多信息,请参见 第 25.6.11 节,“NDB Cluster 磁盘数据表”。