MySQL Cluster若何創立磁盤表辦法解讀。本站提示廣大學習愛好者:(MySQL Cluster若何創立磁盤表辦法解讀)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL Cluster若何創立磁盤表辦法解讀正文
1、概念
MySQL Cluster采取一系列的Disk Data objects來完成磁盤表。
Tablespaces:感化是作為其他Disk Data objects的容器。
Undo log files:存儲事務停止回滾須要的信息,一個或許多個undo log files構成一個log files group,最初,該log file group聯系關系到一個tablespaces。
Data files:感化是存儲表中的數據,data file直接聯系關系到tablespaces。
在每個數據節點上undo log files和data files都是現實的文件,默許的,寄存在ndb_node_id_fs文件夾下,該途徑是在MySQL Cluster的config.ini頂用DataDir指定的,node_id是data node的node ID。可以用相對途徑或許絕對途徑指定undo log或許data file的途徑。tablespaces和log file group則不是現實的文件。
留意:雖然不是一切的Disk Data Object都作為文件存儲,然則他們同享統一的定名空間,這意味著每一個Disk Data Object必需獨一定名。
2、創立步調
MySQL Cluster創立一個磁盤表須要包括以下幾步:
2.1、創立一個log file group,將一個或許多個undo log files聯系關系到它下面(undo log file也叫做 undofile)。留意,undo log file只是在創立磁盤表的時刻才須要,創立ndb的內存表的時刻不須要。
2.2、創立一個tablespaces,聯系關系一個log file group和一個或許多個data files到下面。
2.3、應用該tablespaces創立一個磁盤表存儲數據。
上面做一個例子:
2.4、創立log file group:
我們創立一個名為lg_cloudstor的log file group,包括cloudstor_undo_1.log和cloudstor_undo_2.log兩個undo log file。初始年夜小分離為200M和100M(默許的undo log file的初始年夜小為128M),你還可以指定log file group的重寫緩沖年夜小(默許為8M),這裡我們設置為20M。創立log file group的時刻必需和一個undo log file一路創立。以下:
CREATE LOGFILE GROUP lg_cloudstor
ADD UNDOFILE 'cloudstor_undo_1.log'
INITIAL_SIZE 200M
UNDO_BUFFER_SIZE 20M
ENGINE NDBCLUSTER;
該語句能夠會失足,湧現ERROR 1064 (42000)語法毛病的信息,緣由是字符集的成績,先履行:set character_set_client=latin1; 在履行:
添加新的undo log file:
ALTER LOGFILE GROUP lg_cloudstor
ADD UNDOFILE 'cloudstor_undo_2.log'
INITIAL_SIZE 100M
ENGINE NDBCLUSTER;
2.5、創立tablespace
上去我們創立一個tablespace,創立tablespace必需指明一個log file group用於存儲undo log。還必需指定一個data file,tablespace創立完成後,你可以稍後添加更多的data file到tablespace。上去我們創立一個應用log file group為lg_cloudstor名為 ts_cloudstore的表空間,這個表空間包括cloudstore_data_1.dbf和cloudstore_data_2.dbf兩個data file,初始年夜小為100M(默許為128M),主動擴大為10M。
CREATE TABLESPACE ts_cloudstore
ADD DATAFILE 'cloudstore_data_1.dbf'
USE LOGFILE GROUP lg_cloudstor
INITIAL_SIZE 100M
AUTOEXTEND_SIZE 10M
ENGINE NDBCLUSTER;
添加新的datafile
ALTER TABLESPACE ts_cloudstore
ADD DATAFILE 'cloudstore_data_2.dbf'
INITIAL_SIZE 100M
AUTOEXTEND_SIZE 10M
ENGINE NDBCLUSTER;
上去我們可以看下新建的這些文件在物理磁盤上的數據文件:
2.6、創立磁盤表
上去創立一個將沒有索引的列存儲在表空間ts_cloudstore的磁盤表。
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的數據仍會存儲在內存中,由於只要沒有索引的列能力存儲在磁盤上。創立完成後,便可以停止正常的數據操作了。
log file group,tablespaces,Disk Data tables須要依照必定的次序履行,刪除這些的時刻也是如許,刪除規矩為:有任何表空間應用log file group時,log file group不克不及刪除;表空間含有任何data files的時刻,不克不及刪除表空間;Data files含有任何表殘存的時刻,不克不及從表空間刪除數據文件。
2.7、刪除數據表
drop table Disktable;
2.8、刪除數據文件
當沒有表在聯系關系到表空間的時刻,我們一個一個刪除data files。
alter tablespace ts_cloudstore
drop datafile 'cloudstore_data_1.dbf'
engine ndbcluster;
alter tablespace ts_cloudstore
drop datafile 'cloudstore_data_2.dbf'
engine ndbcluster;
2.9、刪除表空間
drop tablespace ts_cloudstore
engine ndbcluster;
2.10、刪除日記組
drop logfile group lg_cloudstor
engine ndbcluster;
上去檢查物理文件能否曾經刪除:
可以在INFORMATION_SCHEMA數據庫中的FILES表中檢查磁盤表的信息。
2.11、幾點留意的
在磁盤數據表中,TEXT和BLOB列的前256bytes存儲在內存中,殘剩內容存儲在磁盤上;磁盤表中的每行須要在內存中存儲8bytes的數據用於指向磁盤上的數據,應用--initial選項啟動集群時,不會刪除磁盤上的數據文件,必需手動刪除。