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
' 的單一復原檔。CREATE LOGFILE GROUP
陳述式只有一個 ADD UNDOFILE
子句。如需記錄檔群組命名規則,請參閱第 11.2 節「結構描述物件名稱」。
所有 NDB Cluster 磁碟資料物件共用相同的命名空間。這表示每個磁碟資料物件都必須是唯一命名(而不僅僅是給定類型的每個磁碟資料物件)。例如,您不能讓資料表空間和記錄檔群組具有相同的名稱,或讓資料表空間和資料檔案具有相同的名稱。
在任何給定的時間點,每個 NDB Cluster 實例只能有一個日誌檔案群組。
可選的 INITIAL_SIZE
參數設定還原檔案的初始大小;如果未指定,則預設為 128M
(128 百萬位元組)。可選的 UNDO_BUFFER_SIZE
參數設定日誌檔案群組所使用的還原緩衝區的大小;UNDO_BUFFER_SIZE
的預設值為 8M
(八百萬位元組);此值不得超過可用的系統記憶體量。這兩個參數都以位元組為單位指定。您可以選擇性地在其中一個或兩個參數後面加上一個代表數量級的字母縮寫,類似於 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
是儲存引擎的名稱。這必須是 NDB
(或 NDBCLUSTER
)。如果未設定 ENGINE
,MySQL 會嘗試使用 default_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 中解決。
REDO_BUFFER_SIZE
、NODEGROUP
、WAIT
和 COMMENT
會被解析但被忽略,因此在 MySQL 8.4 中沒有作用。這些選項旨在用於未來的擴展。
當與 ENGINE [=] NDB
一起使用時,會在每個 Cluster 資料節點上建立日誌檔案群組和相關的還原日誌檔案。您可以透過查詢 Information Schema FILES
表格來驗證是否已建立還原檔案並取得相關資訊。例如
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)
CREATE LOGFILE GROUP
僅適用於 NDB Cluster 的磁碟資料儲存。請參閱第 25.6.11 節,「NDB Cluster 磁碟資料表」。