我的数据库设置是在CentOS上使用带有2-3个节点的NDB集群。在尝试测试性能时,我尝试将大约700万条记录(约2GB大小)存储到其中一个表中。在大约200 K时,它失败了,通知:
ERROR 1114 (HY000): The table 'my_request' is full这些是LOGFILE组和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中,我又在其中添加了两个:data_3.dat和data_4.dat,它们解决了这个问题。
因此,根据此页,AUTOEXTEND_SIZE和MAX_SIZE在我的当前版本中被忽略了。预计该表将在预先确定的时间后转储到磁盘前保存700GB+数据。因此,是否有任何方法来设置这个DATADISK的大小来计算它的未来用途?这些数据存储在哪里?(我试图签入datadir,执行find,但一无所获)。如果您能分享一些很好的信息/策略来解释如何使用NDB,我将非常感激。
注:不是NDB的专家,请假设我在解释时什么也不知道。大块头。
发布于 2018-11-21 02:36:58
要获得撤消/数据文件大小,请执行以下操作:
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/)。
发布于 2018-11-22 12:14:29
下面是手册中的一个部分:
可选的INITIAL_SIZE参数设置撤销文件的初始大小;如果未指定,则默认为128 M (128 if )。可选的UNDO_BUFFER_SIZE参数设置日志文件组的撤销缓冲区使用的大小;UNDO_BUFFER_SIZE的默认值为8M (8 of );此值不能超过可用的系统内存量。这两个参数都以字节为单位指定。您也可以选择使用一个字母的缩写,表示一个数量级,类似于my.cnf中使用的缩写。一般来说,这是一个字母M(代表兆字节)或G(代表千兆字节)。
因此,默认情况下撤销缓冲区的大小为8M,默认情况下撤销日志的大小为128 m。可以通过添加更多的撤消日志文件来扩展撤消日志的大小。
类似地,对于DATAFILE,默认数据文件大小为128 MB。正如前面的答案中所指定的,可以通过设置INITIAL_SIZE来设置数据文件的大小。可以通过添加更多的数据文件来扩展表空间大小。
数据文件还需要设置EXTENT_SIZE (默认为1M字节)。这指定当表片段需要在表空间中分配磁盘空间时分配多少空间。
https://dba.stackexchange.com/questions/222959
复制相似问题