Mysql

NDB 引擎中的最大 DATAFILE 大小

  • December 7, 2018

我的數據庫設置在 CentOS 上使用具有 2-3 個節點的 NDB 集群。在嘗試測試性能時,我嘗試將大約 700 萬條記錄(大約 2GB 大小)儲存到其中一張表中。在大約 200k 時,它失敗並發出通知:

ERROR 1114 (HY000): The table 'my_request' is full

這些是 LOGFILE GROUP 和 TABLESPACE:

CREATE LOGFILE GROUP lg_1
   ADD UNDOFILE 'undo_1.log'
   ENGINE NDBCLUSTER;

ALTER LOGFILE GROUP lg_1
   ADD UNDOFILE 'undo_2.log'
   ENGINE NDBCLUSTER;

CREATE TABLESPACE ts_1
   ADD DATAFILE 'data_1.dat'
   USE LOGFILE GROUP lg_1
   ENGINE NDBCLUSTER;

ALTER TABLESPACE ts_1
   ADD DATAFILE 'data_2.dat'
   ENGINE NDBCLUSTER;

懷疑問題出在 DATAFILE 中,我在其中又添加了 2 個:data_3.datand data_4.dat這解決了問題

所以根據這個頁面,在我目前的版本中被忽略了AUTOEXTEND_SIZEMAX_SIZE該表預計將保存 700GB 以上的數據,然後在預定時間後轉儲到磁碟中。因此,有沒有辦法設置這個 DATADISK 的大小來計算它的未來使用量?這些數據儲存在哪裡?(我試圖簽入datadir, exec find,但一無所獲)。如果您能分享一些解釋如何與 NDB 合作的好資訊/策略,將不勝感激。

注意:不是新開發銀行的專家,請假設我在解釋時一無所知。大泰。

要獲取撤消/數據文件大小:

SELECT TABLESPACE_NAME, LOGFILE_GROUP_NAME, FILE_NAME, FILE_TYPE, EXTRA, 
INITIAL_SIZE/1000000 size_init_mb, 
MAXIMUM_SIZE/1000000 size_max_mb, 
TOTAL_EXTENTS - FREE_EXTENTS AS extents_used, 
(TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE/1000000 AS mb_used, 
FREE_EXTENTS * EXTENT_SIZE/1000000 AS mb_free
FROM INFORMATION_SCHEMA.FILES WHERE EXTRA IS NOT NULL;

要更改數據文件的 MAX_SIZE,只需設置 INITIAL_SIZE

ALTER TABLESPACE ts_1
ADD DATAFILE 'data_4.dat'
INITIAL_SIZE 1G
ENGINE=NDBCLUSTER;

即使文件指出可以通過檢查配置中的 datadir 來定位該數據文件,但不知何故我無法在我的系統中找到它(預設情況下它位於 /var/lib/mysql/)。

引用自:https://dba.stackexchange.com/questions/222959