MySQL Cluster 透過 Disk Data Objects 實現磁碟表,核心三大物件:
所有物件共享命名空間,名稱必須唯一。Undo log 与 data files 為實體檔案,預設置於 DataDir 指定的 ndb_node_id_fs 目錄。
CREATE LOGFILE GROUP lg_cloudstor
ADD UNDOFILE 'cloudstor_undo_1.log'
INITIAL_SIZE 200M
UNDO_BUFFER_SIZE 20M
ENGINE NDBCLUSTER;
-- 新增第二個 undo file
ALTER LOGFILE GROUP lg_cloudstor
ADD UNDOFILE 'cloudstor_undo_2.log'
INITIAL_SIZE 100M
ENGINE NDBCLUSTER;
注意:若出現語法錯誤 (ERROR 1064),先執行 SET character_set_client=latin1; 再建立。
CREATE TABLESPACE ts_cloudstore
ADD DATAFILE 'cloudstore_data_1.dbf'
USE LOGFILE GROUP lg_cloudstor
INITIAL_SIZE 100M
AUTOEXTEND_SIZE 10M
ENGINE NDBCLUSTER;
-- 新增第二個 data file
ALTER TABLESPACE ts_cloudstore
ADD DATAFILE 'cloudstore_data_2.dbf'
INITIAL_SIZE 100M
AUTOEXTEND_SIZE 10M
ENGINE NDBCLUSTER;
CREATE TABLE Disktable (
id INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR(50) NOT NULL,
c2 VARCHAR(30) DEFAULT NULL,
c3 DATE DEFAULT NULL,
INDEX(c1)
) TABLESPACE ts_cloudstore STORAGE DISK ENGINE NDBCLUSTER;
關鍵規則:只有無索引的欄位才能儲存於磁碟。上例中 c2、c3 存磁碟,id、c1(有索引)仍駐記憶體。
DROP TABLE Disktable;ALTER TABLESPACE ... DROP DATAFILE ...(逐個刪除)DROP TABLESPACE ts_cloudstore ENGINE NDBCLUSTER;DROP LOGFILE GROUP lg_cloudstor ENGINE NDBCLUSTER;TEXT/BLOB 前 256 bytes 存記憶體,餘下存磁碟--initial 啟動集群不會刪除磁碟資料檔,需手動清理INFORMATION_SCHEMA.FILES 檢視磁碟表資訊