10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

21.3.3.2 NDB集群启动配置推荐

实现新开发银行集群的最佳性能取决于许多因素,包括以下几点:

  • NDB集群软件版本

  • 数据节点和SQL节点的个数

  • 硬件

  • 操作系统

  • 要存储的数据量

  • 集群要运行的负载的大小和类型

因此,获得最优配置可能是一个迭代的过程,其结果可能因每次NDB集群部署的具体情况而大不相同。当运行集群的平台或使用NDB集群数据的应用程序发生更改时,配置中的更改也可能会被指示出来。由于这些原因,不可能提供适合所有使用场景的单一配置。但是,在本节中,我们提供一个推荐的基本配置。

。从config . ini文件以下config.ini对于运行NDB cluster 7.5的集群,建议从配置文件开始:

# TCP PARAMETERS [TCP default] SendBufferMemory=2M ReceiveBufferMemory=2M #增加这两个缓冲区的大小超过默认值#有助于防止由于磁盘I/O较慢而导致的瓶颈。#管理节点参数[ndb_mgmd default] DataDir= .路径/ /管理/服务器/数据/目录中可以为每个管理服务器使用不同的数据目录,但为了便于管理,最好保持一致。ndb_mgmd主机名=management-server-A-hostname# NodeId =management-server-A-nodeidndb_mgmd主机名=management-server-B-hostname# NodeId =management-server-B-nodeid使用2个管理服务器有助于确保在网络分区时始终有一个#仲裁器,因此推荐使用#以实现高可用性。每个管理服务器必须用主机名#标识。为了方便,你可以为任何管理服务器指定#一个NodeId,尽管一个是自动分配的#;如果这样做,它必须在1- 255#的范围内,并且必须在为群集#节点指定的所有id中唯一。#数据节点参数[ndbd default] NoOfReplicas=2 #建议使用两个片段副本来保证数据的可用性;#只使用一个片段副本不会提供任何冗余,这意味着#单个数据节点的故障将导致整个集群#关闭。我们不建议使用两个以上的片段副本,因为# 2已经足够提供高可用性了,并且我们目前没有对这个参数使用更大的值测试#。LockPagesInMainMemory=1 #在Linux和Solaris系统上,设置该参数将数据节点#进程锁定到内存中。这样做会阻止它们交换到磁盘,#这会严重降低集群性能。DataMemory=3072M IndexMemory=384M #为DataMemory和IndexMemory提供的值假设每个数据节点为4gb RAM #。 However, for best results, you should first calculate # the memory that would be used based on the data you actually plan to # store (you may find the ndb_size.pl utility helpful in estimating # this), then allow an extra 20% over the calculated values. Naturally, # you should ensure that each data node host has at least as much # physical memory as the sum of these two values. # NOTE: IndexMemory is deprecated in NDB 7.6 and later. # ODirect=1 # Enabling this parameter causes NDBCLUSTER to try using O_DIRECT # writes for local checkpoints and redo logs; this can reduce load on # CPUs. We recommend doing so when using NDB Cluster on systems running # Linux kernel 2.6 or later. NoOfFragmentLogFiles=300 DataDir=路径/ /数据/节点/数据/目录中MaxNoOfConcurrentOperations=100000 schedulersptiner =400 SchedulerExecutionTimer=100 realtimesscheduler =1 #设置这些参数可以使您在使用ndbd时利用NDB线程的实时调度#来实现更高的吞吐量。它们#在使用ndbmtd时不需要;特别是,你不应该为ndbmtd数据节点设置# realtimesscheduler。timebetweenglobal检查点=1000 TimeBetweenEpochs=200 RedoBuffer= 32m# CompressedLCP=1 # CompressedBackup=1 #启用CompressedLCP和CompressedBackup分别导致本地检查点文件和备份文件被压缩,这可以比未压缩的lcp和备份节省高达50%的空间。# MaxNoOfLocalScans=64 MaxNoOfTables=1024 MaxNoOfOrderedIndexes=256 [ndbd] HostName=data-node-A-hostname# NodeId =data-node-A-nodeidLockExecuteThreadToCPU=1 LockMaintThreadsToCPU=0 #在有多个cpu的系统上,这些参数可以用来将NDBCLUSTER #线程锁定到特定的cpu [ndbd] HostName=data-node-B-hostname# NodeId =data-node-B-nodeidLockExecuteThreadToCPU=1 LockMaintThreadsToCPU=0 #必须为集群中的每个数据节点设置一个[ndbd]节;每个部分都必须包含一个主机名。为了方便起见,每个部分可以选择性地包括一个NodeId,但在大多数情况下,它足以允许集群动态分配节点id。如果您指定了数据节点的节点ID,它必须在1 #到48的范围内,并且必须在为# cluster节点指定的所有ID中唯一。# SQL NODE / API NODE参数[mysqld] # HostName=sql-node-A-hostname# NodeId =sql-node-A-nodeid[mysqld] [mysqld] #每个连接到集群的API或SQL节点都需要自己的[mysqld] #或[API]部分。每个这样的节定义了一个连接# " slot ";在# config.ini文件中,这些部分的数量应该至少与您希望在任何给定时间连接到集群的API节点和SQL节点的总数相同。如果您以后发现需要或需要更多的API或SQL节点以同时连接到集群,那么在#中使用额外的插槽不会带来#性能或其他损失。#如果没有为给定的[mysqld]或[api]部分指定主机名,# then任何API或SQL节点可以使用该槽位连接到# cluster。您可能希望为一个连接槽#使用显式的HostName,以确保来自该主机的API或SQL节点始终#连接到集群。如果你想阻止API或SQL节点从一个或多个其他的主机进行#连接,那么在config.ini文件中的每个[mysqld]或[API]部分使用# HostName。#你可以为任何API或# SQL节点定义节点ID (NodeId参数),但这不是必要的;如果这样做,它必须在#范围内,包括1到255,并且必须在所有指定的集群节点的# id中唯一。

推荐SQL节点使用my.cnf选项。作为NDB集群的MySQL服务器SQL节点必须总是以——ndbcluster而且——ndb-connectstring选项,要么在命令行上,要么在my.cnf.此外,为所有选项设置以下选项mysqld集群中的进程,除非你的设置另有要求:

  • ——ndb-use-exact-count = 0

  • ——ndb-index-stat-enable = 0

  • ——ndb-force-send = 1

  • ——optimizer-switch = engine_condition_pushdown =