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 MB)。選用的 UNDO_BUFFER_SIZE
參數設定日誌檔案群組復原緩衝區使用的大小;UNDO_BUFFER_SIZE
的預設值為 8M
(8 MB);此值不能超過可用的系統記憶體量。這兩個參數都以位元組為單位指定。您可以選擇性地在任一或兩個參數後面加上一個字母縮寫,表示數量級,類似於 my.cnf
中使用的縮寫。一般而言,這是一個字母 M
(表示 MB)或 G
(表示 GB)。
用於 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 9.0 中沒有任何作用。這些選項用於未來的擴充。
當與 ENGINE [=] NDB
一起使用時,會在每個叢集資料節點上建立一個日誌檔案群組和相關聯的復原日誌檔案。您可以查詢資訊結構描述 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 磁碟資料表」。