我有一个 mysql ndb 集群(详情如下)。问题是当我做最简单的事情时,例如恢复使用 mysqldump 转储的数据库,它需要一个绝对的时间!IE 6 小时来恢复一个大小为 745MB 的数据库,在大约 30 个表中大约有 270 万行,所有这些都是非常标准的东西。
我一直在寻找瓶颈,没有 1 个 cpu 核心超载,也没有磁盘,也没有网络,为什么这么慢?
仅供参考,在导入数据库时,网络的使用速度约为 2Mbit/s,ndb 节点以每秒约 1MB 的速度写入磁盘......几乎没有被利用。没有交换...数据库完全在内存中...没有单个内核被进程最大化...没有等待状态要注意...。
我有两台机器,每台机器都有 4 个四核至强 CPU,32GB 内存。它们之间托管一个mysql集群,节点托管在virtualbox上,规格如下:
sql API * 2: 4GB ram 4 cores
sql NDB * 2: 19GB ram 8 cores
management node: 4GB 4 cores
注意:我使用 ndbmtd 运行 NDB 节点,sql api 节点使用 ndb-cluster-connection-pool=4 参数。
有谁知道为什么它这么慢?我根本找不到一个瓶颈?!?
配置文件
[ndb_mgmd default]
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
HostName=mgm-alpha
NodeId=1
[TCP DEFAULT]
SendBufferMemory=12M
ReceiveBufferMemory=12M
[ndbd default]
NoOfReplicas=2
DataMemory=15000M
IndexMemory=1048M
MaxNoOfConcurrentOperations=100000
RedoBuffer=32M
MaxNoOfAttributes=5000
MaxNoOfOrderedIndexes=1000
TimeBetweenEpochs=500
DiskCheckpointSpeed=20M
DiskCheckpointSpeedInRestart=100M
MaxNoOfExecutionThreads=8
DataDir=/var/lib/mysql-cluster
[ndbd]
HostName=cl1-alpha
NodeId=2
[ndbd]
HostName=cl2-bravo
NodeId=3
[mysqld]
HostName=sq1-alpha
NodeId=4
[mysqld]
HostName=sq1-alpha
NodeId=5
[mysqld]
HostName=sq1-alpha
NodeId=6
[mysqld]
HostName=sq1-alpha
NodeId=7
[mysqld]
HostName=sq2-bravo
NodeId=8
[mysqld]
HostName=sq2-bravo
NodeId=9
[mysqld]
HostName=sq2-bravo
NodeId=10
[mysqld]
HostName=sq2-bravo
NodeId=11
mysql api 节点上的 my.cnf
[mysqld]
# Options for mysqld process:
ndbcluster
ndb-connectstring=mgm-alpha
default_storage_engine=ndbcluster
ndb-mgmd-host = mgm-alpha:1186
ndb-cluster-connection-pool=4
[mysql_cluster]
# Options for MySQL Cluster processes:
ndb-connectstring=mgm-alpha # location of management server