MySQL Cluster7.2.4初步安裝部署新特性效能測試等

小亮520cl發表於2015-12-15

1.1 mysql-cluster簡介 

 

    簡單的說,MySQLCluster實際上是在無共享儲存裝置的情況下實現的一種完全分散式資料庫系統,其主要通過NDBCluster(簡稱NDB)儲存引擎來實現。

 

       MySQLCluster剛剛誕生的時候可以說是一個可以對資料進行持久化的記憶體資料庫,所有資料和索引都必須裝載在記憶體中才能夠正常運 行,但是最新的MySQLCluster版本已經可以做到僅僅將所有索引和索引資料裝載在記憶體中即可,實際的資料可以不用全部裝載到記憶體中,架構如下圖所 示:

 

1.2 請看Cluster結構圖

 

1.3 Cluster主要結構

 

  1、管理(MGM)節點:

 

  這類節點的作用是管理MySQLCluster內的其他節點,如提供配 置資料、啟動並停止節點、執行備份等。由於這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟 動這類節點。MGM節點是用命令“ndb_mgmd”啟動的。

  對硬體沒什麼要求,差一點的機器完全能夠勝任。預設埠1186。

 
 2、資料節點:

  這類節點用於儲存Cluster的資料。資料節點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本有兩個片段,那麼就有4個資料節點。不過沒有必要設定多個副本。資料節點是用命令“ndbd”啟動的。

  可以選擇大記憶體,cpu也相對來講不錯的,尤其是以後ndbmtd對多核Cpu的支援。預設埠2202

 
?3、SQL節點:

  這是用來訪問Cluster資料的節點。對於MySQLCluster,客戶端節點是使用NDBCluster儲存引擎的傳統MySQL伺服器。通 常,SQL節點是使用命令“mysqld–ndbcluster”啟動的,或將“ndbcluster”新增到“my.cnf”後使用“mysqld”啟 動。

  對cpu要求較高,選擇多核,高頻CPU較好

1.4 Cluster特性

 

  分散式:分散式儲存引擎,可以由多個NDBCluster儲存引擎組成叢集分別存放整體資料的一部分
支援事務:和Innodb一樣,支援事務
可與mysqld不在一臺主機:可以和mysqld分開存在於獨立的主機上,然後通過網路和mysqld通訊互動。
記憶體需求量巨大:新版本索引以及被索引的資料必須存放在記憶體中,老版本所有資料和索引必須存在與記憶體中
 
 Cluster使用自動鍵值識別資料分片方案,使用者無需關心資料切片方案(在5.1及以後提供了分割槽鍵規則),透明實現分散式資料庫,資料分片規則根據 1、主鍵、2唯一索引、3自動行標識rowid完成,再叢集個數進行分佈,其訪問資料猶如RAID訪問機制一樣,能並行從各個節點抽取資料,雜湊資料,當 使用非主鍵或分割槽鍵訪問時,將導致所有簇節點掃描,影響效能(這是Cluster面對的核心挑戰)
 
  適用場景:

 

    具有非常高的併發需求
對單個請求的響應並不是非常的critical
查詢簡單,過濾條件較為固定,每次請求資料量較少,又不希望自己進行水平Sharding

 

   最佳實踐

   儘可能讓查詢簡單,避免資料的跨節點傳輸;儘可能滿足SQL節點的計算效能,大一點的叢集SQL節點會明顯多餘Data節點;在各節點之間儘可能使用萬兆網路環境互聯,以減少資料在網路層傳輸過程中的延時

1.5 mysql-cluster的優缺點

 

 

 優點:
 

  1)        99.999 %的高可用性

  2)        快速的自動失效切換

  3)        靈活的分散式體系結構,沒有單點故障

  4)        高吞吐量和低延遲

  5)        可擴充套件性強,支援線上擴容

 
 缺點

  1)        存在很多限制,比如:不支援外來鍵,資料行不能超過8K(不包括BLOB和text中的資料)

  2)        部署、管理、配置很複雜

  3)        佔用磁碟空間大,記憶體大

  4)        備份和恢復不方便

  5)       複雜的sql查詢效能一般

 

2 安裝 

2.1 環境介紹

 

 mysqlcluster7.2.4安裝配置
 準備64位版本 5臺伺服器4G記憶體60G硬碟2cpu
 10.100.200.36  64位
 10.100.200.37  64位
 10.100.200.38  64位
 10.100.200.39  64位
 10.100.200.41  64位
 管理節點(ndb_mgmd)10.100.200.36  64位
 資料節點(ndbd)     10.100.200.37  64位  10.100.200.38  64位
 SQL節點(mysqld/api)    10.100.200.39  64位   10.100.200.41  64位
 
 下載安裝包:mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
 http://mirror.services.wisc.edu/mysql/Downloads/MySQL-Cluster-7.2/
 
2.1 安裝管理節點(10.100.200.36) 
 2.1.1解壓檔案

 

    shell> tar -xvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz

 2.1.2建立安裝目錄

    shell> mkdir-p /usr/local/mysql/bin

    shell> mkdir-p /usr/local/mysql/ndbdata

 2.1.3新增執行檔案路徑

    shell> vi ~/.bash_profile

  PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

 

 2.1.4拷貝執行檔案

  shell> cdmysql-cluster-gpl-7.2.4-linux2.6-x86_64

  shell> cp bin/ndb_mgmd/usr/local/mysql/bin

  shell> cp bin/ndb_mgm/usr/local/mysql/bin

 2.1.5建立日誌檔案儲存目錄

  shell> mkdir/var/lib/mysql-cluster

 2.1.6建立配置檔案目錄及修改配置檔案

  shell> mkdir/usr/local/mysql/cluster-conf

  shell> vi /usr/local/mysql/cluster-conf/config.ini 

 

2.2 管理節點配置檔案

[NDBDDEFAULT]

#TotalSendBufferMemory= 256M

NoOfReplicas=2

DataMemory=2500M

IndexMemory=256M

DataDir=/var/lib/mysql-cluster

#FileSystemPath=/data/dbdata

 

#Redolog

FragmentLogFileSize=32M

InitFragmentLogFiles=SPARSE

NoOfFragmentLogFiles=8

RedoBuffer=1024M

 

StringMemory=25

LockPagesInMainMemory=1

MaxNoOfTables=4096

MaxNoOfOrderedIndexes=2048

MaxNoOfUniqueHashIndexes=1024

MaxNoOfAttributes=24576

MaxNoOfTriggers=14336

ODirect=1

 

 

MaxNoOfConcurrentTransactions=10000

MaxNoOfConcurrentOperations=50000

MaxNoOfLocalOperations=55000

TimeBetweenGlobalCheckpoints=1000

TimeBetweenEpochs=100

TimeBetweenWatchdogCheckInitial=60000

TransactionBufferMemory=10M

DiskCheckpointSpeed=10M

DiskCheckpointSpeedInRestart=100M

TimeBetweenLocalCheckpoints=20

 

SchedulerSpinTimer=400

SchedulerExecutionTimer=100

RealTimeScheduler=1

 

BackupMaxWriteSize=1M

BackupDataBufferSize=16M

BackupLogBufferSize=4M

BackupMemory=20M

 

 

MaxNoOfExecutionThreads=4

TransactionDeadLockDetectionTimeOut=10000

BatchSizePerLocalScan=512

 

###Increasing the LongMessageBufferb/c of a bug (20090903)

LongMessageBuffer=8M

 

###Heartbeating

HeartbeatIntervalDbDb=15000

HeartbeatIntervalDbApi=15000

 

[MGMDEFAULT]

PortNumber:1186

DataDir:/var/lib/mysql-cluster1

 

[TCPDEFAULT]

SendBufferMemory:64M

 

 

#######################################

#Change HOST1 to the name of the NDB_MGMD host

#Change HOST8 to the name of the NDBD host

#Change HOST9 to the name of the NDBD host

#######################################

 

[NDB_MGMD]

NodeId:1

HostName:10.100.200.36

ArbitrationRank:1

 

[NDBD]

NodeId:4

HostName:10.100.200.37

 

[NDBD]

NodeId:5

HostName:10.100.200.38

 

 

######################################################

#Note: The following can be MySQLDconnections or   #

#      NDB API application connecting to thecluster #

######################################################

 

[API]

NodeId:10

HostName:10.100.200.39

ArbitrationRank:2

 

[API]

NodeId:11

HostName:10.100.200.39

ArbitrationRank:2

 

[API]

NodeId:12

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:13

HostName:10.100.200.39

ArbitrationRank:2


[API]

NodeId:14

HostName:10.100.200.39

ArbitrationRank:2

 

[API]

NodeId:15

HostName:10.100.200.41

ArbitrationRank:2

 

[API]

NodeId:16

HostName:10.100.200.41

ArbitrationRank:2

[API]

NodeId:17

HostName:10.100.200.41

ArbitrationRank:2

 
3 安裝資料節點(10.100.200.37  10.100.200.38)
 解壓檔案
 shell>tar -zxvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
 建立安裝目錄
 shell>mkdir -p /usr/local/mysql/bin
 shell>mkdir -p /usr/local/mysql/ndbdata
 拷貝執行檔案
 shell>cp mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndbd/usr/local/mysql/bin
 
 新增執行檔案路徑
 shell>vim ~/.bash_profile
 PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
 建立配置檔案:
 shell>vim /etc/my.cnf
 分別在主機新增如下內容:
 [mysql_cluster]
 #配置資料節點連線管理節點
 ndb-connectstring=10.100.200.36
 
4 安裝SQL節點1(10.100.200.39  10.100.200.41)
 解壓檔案
 shell>tar -zxvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
 拷貝安裝檔案
 shell>mvmysql-cluster-gpl-7.2.4-linux2.6-x86_64 /usr/local/mysql
 新增mysql使用者
 shell>groupaddmysql
 shell>useradd-gmysqlmysql
 新增許可權
 shell>chown -Rmysql:mysql/usr/local/mysql
 拷貝配置檔案
 shell>cp /usr/local/mysql/support-files/my-large.cnf/etc/my.cnf
 初始化資料庫
 shell>cd /usr/local/mysql
 shell>scripts/mysql_install_db--user=mysql
 拷貝守護程式所需檔案
 shell>cp /usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld
 配置守護程式
 shell>chkconfig--addmysqld
 shell>chkconfig--level 35mysqld on
 新增執行檔案路徑
 shell>vim~/.bash_profile
 PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
 更改配置檔案
 shell>vim /etc/my.cnf
 分別編輯如下資訊:
 [mysqld]#配置SQL節點與管理節點連線
 port= 3307
 socket= /tmp/mysql.sock
 ndbcluster
 ndb-connectstring=10.100.200.36
 
 
5啟動以及關閉cluster
 啟動順序管理節點->資料節點->SQL節點
 a、啟動管理節點

  [root@banggocluster-conf]#ndb_mgmd-f /usr/local/mysql/cluster-conf/config.ini

 b、啟動資料節點

  ndbd–initial #(第一次啟動必須新增選項,另外備份/恢復,修改配置檔案也需要執行)

  ndbd    #不是第一次啟動需要執行的命令

 c、啟動SQL節點

  /etc/rc.d/init.d/mysqldstart或servicemysqldstart

  啟動後可以用mysql-uroot -p驗證mysql服務狀態

 
 關閉順序:SQL節點->管理節點
 a、關閉SQL節點

  /etc/rc.d/init.d/mysqldstop或servicemysqld stop

 b、關閉資料節點

  ndbdstop

 c、關閉管理節點

  ndb_mgm〉shutdown

 
 
6驗證cluster的狀態

驗證配置的正確性

1、在管理節點執行:ndb_mgm-> show

[root@banggo~]# ndb_mgm

--NDB Cluster -- Management Client --

ndb_mgm>show

Connectedto Management Server at: localhost:1186

ClusterConfiguration

---------------------

[ndbd(NDB)]     2 node(s)

id=4    @10.100.200.37  (mysql-5.5.19 ndb-7.2.4, Nodegroup:0, Master)

id=5    @10.100.200.38  (mysql-5.5.19 ndb-7.2.4, Nodegroup:0)

 

[ndb_mgmd(MGM)]1 node(s)

id=1    @10.100.200.36  (mysql-5.5.19 ndb-7.2.4)

 

[mysqld(API)]   2 node(s)

id=10   @10.100.200.39  (mysql-5.5.19 ndb-7.2.4)

………

id=14   @10.100.200.41  (mysql-5.5.19 ndb-7.2.4)

………

 

7 ndbcluster儲存引擎功能測試(與innoDB對比)

 

 

 

8 MySQLClster備份與恢復

 

備份

  採用ndb_mgm管理客戶端來備份,在管理節點執行ndb_mgm即可進入管理命令列,輸入startbackup開始備份所有節點,如果後面還跟著對應資料節點的id就只備份對應的資料節點

恢復(參考:http://xxtianxiaxing.iteye.com/blog/563063)

  使用命令ndb_restore進行恢復,具體過程如下:

   啟動管理節點

     /usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini--reload

  啟動資料節點:

  /usr/bin/ndbd --initial

  第一個節點恢復的時候

  在第一個節點恢復表結構(恢復的時候如果不涉及到表結構的變更,不用使用引數-m)

  /usr/bin/ndb_restore  -c 10.100.200.37-n 11 -b 1 -m --backup_path=/data/backup/backup-1/

  恢復資料,恢復資料的時候可以幾個ndb節點一起執行,速度會快一點!

  /usr/bin/ndb_restore  -c 10.100.200.37-n 11 -b 1  -r --backup_path=/data/backup/backup-1/

  其他節點恢復的時候(以後的節點不需要加-m引數)

  /usr/bin/ndb_restore  -c 192.168.100.223 -n 11 -b 1 -r --backup_path=/data/dbdata1/BACKUP/BACKUP-1/

  

9 MySQLClster線上新增節點1

 

 增加或減少資料節點的數量和NoOfReplicas有關,一般來說NoOfReplicas是2,那麼增加或減少的數量也應該是成對的,否則要設定另外的NoOfReplicas。
 首先是在配置檔案中新增兩個節點的設定,如下:
?viconfig.ini  新增

 

  [NDBD]

  id=21

  HostName=10.100.200.37

 

  [NDBD]

  id=22

  HostName=10.100.200.38

 
 用ndb_mgm工具,停掉管理節點,然後重新啟動管理節點
 執行ndb_mgm進入管理命令介面,找到管理節點的id,然後執行管理節點idstop,退出
 
 執行
 /usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini  --reload 重新啟動管理節點
 
 登陸上去用show命令檢視,是否出現了新新增的兩個節點!
 環狀重啟(一次重啟資料節點和sql節點)
 
 初始化新新增的兩個節點:
 ndbd--initial (執行初始化之後會自動建立資料檔案,undo日誌檔案等等)
 通過ndb_mgm建立nodegroup
 CREATENODEGROUP 21,22s
 
 重新分配cluster的資料
 SELECTTABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE ='NDBCLUSTER';
 ALTERONLINE TABLE table_nameREORGANIZE PARTITION;
 alteronline table card_packagereorganize partition;
 
 然後通過show命令或者使用ndb_desc命令檢視
 ndb_desc-c 10.80.30.39 -dbgcarddbcard_package-p
 -c後面跟管理節點的ip,-d跟資料庫的名字,table_name為表名,-p輸出分割槽的詳細資訊


10 MySQLClster使用者許可權共享

 

 在sql節點41上面執行mysql -uroot-p < /usr/local/mysql/share/ndb_dist_priv.sql
 
 在mysql終端呼叫名字為mysql_cluster_move_privileges的儲存過程,這個儲存過程的功能是備份許可權表,然後將表的儲存引擎轉換為ndbcluster引擎。
mysql>CALLmysql.mysql_cluster_move_privileges();
 
 自動備份許可權表

 

   shell>mysqldumpmysql userdbtables_privcolumns_privprocs_priv>backup_file.sql

 

 驗證許可權表

  mysql>show create tablemysql.user;看engine是否為ndbcluster。

 

 在41上面加測試賬號

  mysql>grant all on *.* to test@'10.100.200.%' identified by 'test123';

  [root@banggo~]#mysql-h10.100.200.39 -utest-ptest123 -P3307; 

  OK,能連上,測試成功!

 

11.1 MySQLClster備份與恢復擴充套件(操作見No8)

 

 1、簇備份
備份指的是在給定時間對資料庫的快照。備份包含三個主要部分:
(1)Metadata(後設資料):所有資料庫表的名稱和定義。
(2)Tablerecords(表記錄):執行備份時實際儲存在資料庫表中的資料。
(3)Transactionlog(事務日誌):指明如何以及何時將資料儲存在資料庫中的連續記錄。
每一部分(這三部分)均會儲存在參與備份的所有資料節點上。在備份過程中,每個節點均會將這三個部分儲存在磁碟上的三個檔案中(意思是說,有幾個節點,將會把相同的資料,儲存幾份.例如,2個資料節點,那麼就會分別在2個節點上,儲存2次,儲存目錄預設為
[NDBD]
DateDir=/usr/local/mysql/BACKUP
 
(4)BACKUP-backup_id.node_id.ctl
包含控制資訊和後設資料的控制檔案。每個節點均會將相同的表定義(對於簇中的所有表)儲存在自己的該檔案中

(5)BACKUP-backup_id-0.node_id.data
包含表記錄的資料檔案,它是按片段儲存的,也就是說,在備份過程中,不同的節點會儲存不同的片段。每個節點儲存的檔案以指明瞭記錄所屬表的標題開始。在記錄清單後面有一個包含關於所有記錄校驗和的腳註。


            (6)BACKUP-backup_id.node_id.log
               包含已提交事務的記錄的日誌檔案。在日誌中,僅儲存已在備份中儲存的表上的事務。參與備份的節點將儲存不同的記錄,這是因為,不同的節點容納了不同的資料庫片段。
              在上面所列的內容中,backup_id指的是備份ID,node_id是建立檔案的節點的唯一ID。
              使用管理伺服器建立備份開始備份前,請確保已為備份操作恰當地配置了簇。

 

 

 2、備份引數(以下引數,都寫在mgmd的config.ini配置檔案中)
本節討論的引數定義了與線上備份執行有關的記憶體緩衝集。
(1)BackupDataBufferSize
在建立備份的過程中,為了將資料傳送到磁碟,將使用兩類緩衝。備份資料緩衝用於填充由掃描節點的表而記錄的資料。一旦將該緩衝填充到了指定的水平 BackupWriteSize(請參見下面的介紹),就會將頁傳送至磁碟。在將頁寫入磁碟的同時,備份程式能夠繼續填充該緩衝,直至其空間消耗完為止。 出現該情況時,備份程式將暫停掃描,直至一些磁碟寫入操作完成並釋放了記憶體為止,然後掃描繼續。
該引數的預設值為2MB。
(2)BackupLogBufferSize
備份日誌緩衝扮演的角色類似於備份資料緩衝,不同之處在於,它用於生成備份執行期間進行的所有表寫入的日誌。相同的原理也適用於備份資料緩衝情形下的頁寫 入,不同之處在於,當備份日誌緩衝中沒有多餘空間時,備份將失敗。出於該原因,備份日誌緩衝的大小應足以處理執行備份時產生的負載。
該引數的預設值對於大多數應用程式均是適當的。事實上,備份失敗的原因更可能是因為磁碟寫入速度不夠,而不是備份日誌緩衝變滿。如果沒有為應用程式產生的 寫負載配置磁碟子系統,簇很可能無法執行所需的操作。最好按恰當的方式配置簇,使得處理器成為瓶頸而不是磁碟或網路連線。預設值是2MB。
(3)BackupMemory
該引數是BackupDataBufferSize和BackupLogBufferSize之和。預設值是2MB+ 2MB = 4MB。
(4)BackupWriteSize
該引數指定了由備份日誌緩衝和備份資料緩衝寫入磁碟的訊息大小。預設值是32KB.
(5)BackupDataDir
#可更改預設的備份目錄,BackupDataDir=/mysqlback
#當然前提,mkdir/mysqlback,需要在所有資料節點上執行
也能指定存放備份的目錄。預設情況下,該目錄是FileSystemPath/BACKUP
(6)FileSystemPath
該引數指定了存放為後設資料建立的所有檔案、REDO日誌、UNDO日誌和資料檔案的目錄。預設目錄是由DataDir指定的。注意,啟動ndbd程式之前,該目錄必須已存在。
(7)DataDir
該引數指定了存放跟蹤檔案、日誌檔案、pid檔案以及錯誤日誌的目錄。

 

 

12.1 Join的改進1

 

      在現在的mysqlcluster 7.2測試版本中,對join的功能進行了重大改進,可以說是一個里程碑的版本,由於前段時間做測試發現mysqlcluster 7.1.10對join的效能很不好,另外如果jion的表比較大的時候會導致節點之間的資料傳輸非常大。
    我們知道在7.2之前的版本都是將jion在mysqld節點執行,這樣就需要從資料節點進行互動傳輸資料,造成join的效能非常差。現在7.2版本將join放到了資料節點執行,並行處理,較少了資料在sql節點的互動,因此效能大幅提升。
  
   匯入資料測試(省略,參見join.txt)首先將ndb_join_pushdown引數關掉進行測試

點選(此處)摺疊或開啟

  1. mysql>set ndb_join_pushdown=0;
  2. mysql>show variables like \'%ndb_join_pushdown%\';
  3. +-------------------+-------+
  4. | Variable_name | Value |
  5. +-------------------+-------+
  6. | ndb_join_pushdown | OFF |
  7. +-------------------+-------+
  8.  mysql>SELECT sql_no_cacheCOUNT(*) FROM residents,postcodesWHERE residents.postcode=postcodes.postcodeAND postcodes.town=\"MAIDENHEAD\";
  9.  +----------+
  10.  |COUNT(*) |
  11.  +----------+
  12.  | 20000 |
  13.  +----------+
  14.  1row in set (17.68 sec)
  15.  mysql>set ndb_join_pushdown=1;
  16.  mysql>show variables like \'%ndb_join_pushdown%\';
  17.  +-------------------+-------+
  18.  |Variable_name | Value |
  19.  +-------------------+-------+
  20.  |ndb_join_pushdown| ON |
  21.  +-------------------+-------+
  22.  
  23.  mysql>SELECT sql_no_cacheCOUNT(*) FROM residents,postcodesWHERE residents.postcode=postcodes.postcodeAND postcodes.town=\"MAIDENHEAD\";
  24.  +----------+
  25.  |COUNT(*) |
  26.  +----------+
  27.  | 20000 |
  28.  +----------+
  29.  1row in set (1.72 sec)
 參考文章:http://www.clusterdb.com/mysql/dramatically-increased-mysql-cluster-join-performance-with-adaptive-query-localization/

 

 

13.1 磁碟儲存表

 

 #建立日誌檔案組,並undo日誌檔案

點選(此處)摺疊或開啟

  1.     CREATELOGFILE GROUP lg_2
  2.       ADD UNDOFILE \'undo_2.log\'
  3.       INITIAL_SIZE 536870912
  4.        UNDO_BUFFER_SIZE 67108864
  5.       ENGINE NDBCLUSTER;

#建立表空間,新增資料檔案


點選(此處)摺疊或開啟

  1.     CREATETABLESPACE ts_2
  2.       ADDDATAFILE \'data_2.dat\'
  3.       USE LOGFILE GROUP lg_2
  4.       INITIAL_SIZE 536870912
  5.       ENGINE NDBCLUSTER;
  6.  
  7.      CREATETABLE `bgtdisk`( #建立使用磁碟儲存的表:
  8.      `Name` varchar(50) NOT NULL,
  9.       `ProviderName`varchar(200) NOT NULL,
  10.       PRIMARY KEY (`Name`)
  11.       ) tablespace ts_2 storage disk ENGINE=ndbcluster DEFAULT CHARSET=utf8;

 

 可以去information_schema.FILES和ndbinfo.logspaces裡面獲取日誌檔案和資料檔案的資訊。
 修改表的儲存引擎:altertable test.t1tablespacets_1 storage disk ENGINE=ndbclusterDEFAULT CHARSET=utf8;
 錄入資料

 

點選(此處)摺疊或開啟

  1. mysql>insert intobgtdiskselect * from postcodes;
  2. Query OK, 100000 rows affected (9.68 sec)
  3. Records: 100000 Duplicates: 0 Warnings: 0

 

 

 

 再去資料節點,檢視儲存情況,資料檔案已經增長,如圖所示:
 這裡面有totalsize 還有freesize 一減就是已經儲存佔用的大小
 mysql>SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 ASTOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROMinformation_schema.FILESWHERE FILE_TYPE="DATAFILE";
 +-----------------+------------+--------------+--------------+----------------+
 |TABLESPACE_NAME | FILE_NAME  |TOTAL_MB     | FREE_MB      | EXTRA          |
 +-----------------+------------+--------------+--------------+----------------+
 |ts_1            | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=4 |
 |ts_1            | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=5 |
 |ts_1            | data_1.dat |512.00000000 | 300.00000000 | CLUSTER_NODE=6 |
 +-----------------+------------+--------------+--------------+----------------+
 3rows in set (0.05 sec)
 #UNDO_BUFFER_SIZE不能超過config.ini的配置RedoBuffer=32M大小,否則建立失敗,
   CREATELOGFILE GROUP lg_1
   ADD UNDOFILE 'undo_2.log‘ INITIAL_SIZE634217728 UNDO_BUFFER_SIZE 33554432 ENGINE NDBCLUSTER;
  
 CREATETABLESPACE ts_1 ADD DATAFILE 'data_11.dat' USE LOGFILE GROUP lg_1 INITIAL_SIZE4294967296 EXTENT_SIZE 33554432 ENGINE NDBCLUSTER;
 
      執行結束之後,需要去資料目錄/var/lib/mysql-cluster/裡面看看undo檔案和data檔案,如果存在,那麼就證明建立成功了。
 
   可以建立2個表空間
    CREATE TABLESPACE  ts_2
     ADD DATAFILE 'data_20.dat‘ USE LOGFILEGROUP lg_1 INITIAL_SIZE 1073741824
      EXTENT_SIZE 33554432 ENGINE NDBCLUSTER;
 
    alter table bguserdb.MvpCardtablespacets_1 storage disk ENGINE=ndbclusterDEFAULT CHARSET=utf8;
    mysql>insert intobguserdb.MvpCardselect * fromtest.MvpCardlimit 100000,1000000;

      Query OK, 1000000 rows affected (1 min 55.28sec)  Records: 1000000  Duplicates: 0 Warnings: 0

 

 這裡面有totalsize 還有freesize 一減就是已經儲存佔用的大小,如下所示:

 

點選(此處)摺疊或開啟

  1.    mysql>SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 ASTOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS  FREE_MB, EXTRA FROMinformation_schema.FILESWHERE FILE_TYPE=\"DATAFILE\";
  2.     +-----------------+------------+--------------+--------------+----------------+
  3.     |TABLESPACE_NAME | FILE_NAME |TOTAL_MB | FREE_MB | EXTRA |
  4.     +-----------------+------------+--------------+--------------+----------------+
  5.     |ts_1 | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=4 |
  6.     |ts_1 | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=5 |
  7.     |ts_1 | data_1.dat |512.00000000 | 300.00000000 | CLUSTER_NODE=6 |
  8.     +-----------------+------------+--------------+--------------+----------------+
  9.      3rows in set (0.05 sec)

相關文章