MySQL Cluster:表格已满

时间:2016-02-03 13:54:04

标签: mysql cluster-computing innodb mysql-management mysql-cluster

我已经了解了MySQL Cluster。

我有一张表

  • 总共38个字段
  • 22个字段被描述为22个索引(字段类型:int)
  • 其他字段double和bigint值
  • 该表没有已定义的主键

我的环境(10个节点)

  • 数据节点:8(AWS EC2实例,m4.xlarge 16GB RAM,750GB HDD)
  • 管理节点:2(AWS EC2实例,m4.2xlarge 32GB RAM)
  • sql nodes:2(与管理节点中的VM相同)

MySQL群集设置(config.ini)设置为

[NDBD DEFAULT]
NoOfReplicas=2
ServerPort=2200
Datadir=/storage/data/mysqlcluster/
FileSystemPathDD=/storage/data/mysqlcluster/
BackupDataDir=/storage/data/mysqlcluster//backup/
#FileSystemPathUndoFiles=/storage/data/mysqlcluster/
#FileSystemPathDataFiles=/storage/data/mysqlcluster/
DataMemory=9970M
IndexMemory=1247M
LockPagesInMainMemory=1

MaxNoOfConcurrentOperations=100000
MaxNoOfConcurrentTransactions=16384

StringMemory=25
MaxNoOfTables=4096
MaxNoOfOrderedIndexes=2048
MaxNoOfUniqueHashIndexes=512
MaxNoOfAttributes=24576
MaxNoOfTriggers=14336

### Params for REDO LOG 
FragmentLogFileSize=256M
InitFragmentLogFiles=SPARSE
NoOfFragmentLogFiles=39
RedoBuffer=64M

TransactionBufferMemory=8M

TimeBetweenGlobalCheckpoints=1000
TimeBetweenEpochs=100

TimeBetweenEpochsTimeout=0

### Params for LCP 
MinDiskWriteSpeed=10M
MaxDiskWriteSpeed=20M
MaxDiskWriteSpeedOtherNodeRestart=50M
MaxDiskWriteSpeedOwnRestart=200M
TimeBetweenLocalCheckpoints=20

### Heartbeating 
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000

### Params for setting logging 
MemReportFrequency=30
BackupReportFrequency=10
LogLevelStartup=15
LogLevelShutdown=15
LogLevelCheckpoint=8
LogLevelNodeRestart=15

### Params for BACKUP 
BackupMaxWriteSize=1M
BackupDataBufferSize=24M
BackupLogBufferSize=16M
BackupMemory=40M

### Params for ODIRECT 
#Reports indicates that odirect=1 can cause io errors (os err code 5) on some systems. You must test.
#ODirect=1

### Watchdog 
TimeBetweenWatchdogCheckInitial=60000

### TransactionInactiveTimeout  - should be enabled in Production 
TransactionInactiveTimeout=60000
### New 7.1.10 redo logging parameters 
RedoOverCommitCounter=3
RedoOverCommitLimit=20
### REALTIME EXTENSIONS 
#RealTimeScheduler=1
### REALTIME EXTENSIONS FOR 6.3 ONLY
#SchedulerExecutionTimer=80
#SchedulerSpinTimer=40

### DISK DATA 
SharedGlobalMemory=20M
DiskPageBufferMemory=64M
BatchSizePerLocalScan=512

75M 记录导入我的表后,我收到错误( 表'test_table'已满 )并且无法导入任何数据更多的是表。 我不知道为什么会这样。

我查看information_scheme,可以看到 avg_record_size 244 。完整的表格大小为: ~19G

另外,如果我查看每个数据节点上使用的DataMemory,我会看到: ~94%。 使用的IndexMemory是: ~22%

但是我有8个数据节点,DataMemory总数为* 8 * 9970M = 80GB *

我的桌子只有19GB。所以即使我有复制品。使用的记忆是:19 * 2 = 38GB。

有人可以解释一下我的情况。如何配置群集并导入最大可能记录。 生产中的完整表格将包含: 33亿记录。

对于给定群集的测试,我需要测试 100M 1B 数据集。

感谢。

0 个答案:

没有答案