NDB群集共享内存连接
通常使用TCP / IP处理NDB群集节点之间的通信。共享内存(SHM)传输器的特征在于,信号是通过写入而不是在套接字上进行传输的。当在同一主机上同时运行API节点(通常是SQL节点)和数据节点时,共享内存传输器(SHM)可以通过减少TCP连接所需的开销的20%来提高性能。您可以通过以下两种方式之一启用共享内存连接:
- 通过将
UseShm
数据节点配置参数1
设置HostName
为,并将数据节点和HostName
API节点设置为相同的值。 - 通过使用
[shm]
集群配置文件中的部分,每个部分都包含NodeId1
和的设置NodeId2
。此方法将在本节后面详细介绍。
假设群集在同一主机10.0.0.1上运行具有节点ID 1的数据节点和具有节点ID 51的SQL节点。要在这两个节点之间启用SHM连接,所需要做的就是确保群集配置文件中包含以下条目:
[ndbd] NodeId=1 HostName=10.0.0.1 UseShm=1 [mysqld] NodeId=51 HostName=10.0.0.1
重要刚刚显示的两个条目是集群所需的任何其他条目和参数设置的补充。本节稍后将显示一个更完整的示例。
在启动使用SHM连接的数据节点之前,还必须确保承载该数据节点的每台计算机上的操作系统都有足够的内存分配给共享内存段。有关此信息,请参阅您的操作平台的文档。在多个主机分别运行一个数据节点和一个API节点的设置UseShm
中,可以[ndbd default]
通过在配置文件的部分中进行设置,在所有此类主机上启用共享内存。这将在本节后面的示例中显示。
尽管不是严格要求,但可以通过[shm default]
在集群配置(config.ini
)文件的部分中设置以下一个或多个参数来完成集群中所有SHM连接的调整:
ShmSize
:共享内存大小ShmSpinTime
:睡眠前以微秒为单位旋转的时间SendBufferMemory
:从此节点发送的信号的缓冲区大小,以字节为单位。SendSignalId
:表示通过传输器发送的每个信号中都包含一个信号ID。Checksum
:表示通过传输器发送的每个信号中都包含一个校验和。PreSendChecksum
:在发送信号之前检查校验和;校验和也必须启用才能起作用
本示例显示了一个简单的设置,其中在NDB群集中使用在主机上列出的3种计算机在NDB群集中定义了多个主机上的SHM连接,该主机托管所示的节点类型:
10.0.0.0
:管理服务器10.0.0.1
:一个数据节点和一个SQL节点10.0.0.2
:一个数据节点和一个SQL节点
在这种情况下,每个数据节点都使用TCP传输器与管理服务器和另一个数据节点进行通信。每个SQL节点都使用共享内存传输器与它本地的数据节点进行通信,并使用TCP传输器与远程数据节点进行通信。反映此设置的基本配置由config.ini文件启用,其内容如下所示:
[ndbd default] DataDir=/path/to/datadir UseShm=1 [shm default] ShmSize=8M ShmSpintime=200 SendBufferMemory=4M [tcp default] SendBufferMemory=8M [ndb_mgmd] NodeId=49 Hostname=10.0.0.0 DataDir=/path/to/datadir [ndbd] NodeId=1 Hostname=10.0.0.1 DataDir=/path/to/datadir [ndbd] NodeId=2 Hostname=10.0.0.2 DataDir=/path/to/datadir [mysqld] NodeId=51 Hostname=10.0.0.1 [mysqld] NodeId=52 Hostname=10.0.0.2 [api] [api]
在此[shm default]
部分中设置了影响所有共享内存传输器的参数。可以在每个连接的一个或多个[shm]
部分中覆盖这些功能。每个这样的部分必须使用NodeId1
和与给定的SHM连接相关联NodeId2
。这些参数所需的值是由传输器连接的两个节点的节点ID。您也可以使用HostName1
和通过主机名标识节点HostName2
,但是这些参数不是必需的。
未设置主机名的API节点使用TCP传输器与独立于其启动主机的数据节点进行通信。[tcp default]
配置文件部分中设置的参数和值适用于群集中的所有TCP传输器。
为了获得最佳性能,您可以为SHM传输器(ShmSpinTime
参数)定义一个旋转时间。这会影响中的数据节点接收者线程和轮询所有者(接收线程或用户线程)NDB
。
Checksum
该表提供了校验和共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 真正 范围 真假 重新启动类型 ñ 此参数是默认情况下禁用的布尔值(
Y
/N
)参数。启用后,将计算所有消息的校验和,然后将其放入发送缓冲区。此功能可防止在发送缓冲区中等待消息时损坏消息。它还可以检查传输过程中数据是否损坏。
Group
该表提供了组共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 35 范围 0-200 重新启动类型 ñ 确定组的接近度;较小的值被解释为更接近。对于大多数情况,默认值就足够了。
HostName1
该表提供了HostName1共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 名称或IP地址 默认 [没有] 范围 ... 重新启动类型 ñ 的
HostName1
和HostName2
参数可用于指定要用于在两个节点之间一个给定的SHM连接的特定网络接口。这些参数使用的值可以是主机名或IP地址。HostName2
该表提供了HostName1共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 名称或IP地址 默认 [没有] 范围 ... 重新启动类型 ñ 的
HostName1
和HostName2
参数可用于指定要用于在两个节点之间一个给定的SHM连接的特定网络接口。这些参数使用的值可以是主机名或IP地址。NodeId1
该表提供了NodeId1共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 [没有] 范围 1-255 重新启动类型 ñ 为了识别两个节点之间的连接,有必要为每个节点提供节点ID,如
NodeId1
和NodeId2
。NodeId2
该表提供了NodeId2共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 [没有] 范围 1-255 重新启动类型 ñ 为了识别两个节点之间的连接,有必要为每个节点提供节点ID,如
NodeId1
和NodeId2
。NodeIdServer
该表提供了NodeIdServer共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 [没有] 范围 1-63 重新启动类型 ñ 标识共享内存连接的服务器端。默认情况下,这是数据节点的节点ID。
OverloadLimit
该表提供了OverloadLimit共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 当发送缓冲区中的未发送字节数超过此数目时,该连接被视为过载。有关更多信息,请参见“配置NDB群集发送缓冲区参数”和“ ndbinfo传输器表”。
PreSendChecksum
该表提供了PreSendChecksum共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 小号 如果
Checksum
同时启用了此参数,请执行预发送校验和检查,并检查节点之间的所有SHM信号是否有错误。如果Checksum
未同时启用,则无效。SendBufferMemory
该表提供了SendBufferMemory共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 2M 范围 256K-4294967039(0xFFFFFEFF) 重新启动类型 ñ 使用共享内存连接从该节点发送的信号的共享内存缓冲区的大小(以字节为单位)。
SendSignalId
该表提供了SendSignalId共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 ñ 要回溯分布式消息的路径,必须为每个消息提供唯一的标识符。将此参数设置
Y
为也会导致这些消息ID也通过网络传输。默认情况下,此功能在生产版本中被禁用,而在-debug
版本中被启用。ShmKey
该表提供了ShmKey共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 设置共享内存段时,将用整数表示的节点ID用于唯一标识要用于通信的共享内存段。没有默认值。如果
UseShm
启用,则共享存储密钥由自动计算NDB
。ShmSize
该表提供了ShmSize共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 4M 范围 64K-4294967039(0xFFFFFEFF) 重新启动类型 ñ 每个SHM连接都有一个共享内存段,其中节点之间的消息由发送方放置并由阅读器读取。该段的大小由定义
ShmSize
。默认值为4MB。ShmSpinTime
该表提供了ShmSpinTime共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-2000 重新启动类型 小号 接收时,等待进入睡眠状态的时间(以微秒为单位)。
SigNum
该表提供Signum共享内存配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 [没有] 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 以前,此参数用于覆盖操作系统信号号;在NDB 8.0中,不再使用它,并且它的任何设置都将被忽略。
重新启动类型。下表显示了本节中的参数说明所使用的有关重新启动类型的信息:
NDB群集重新启动类型
符号 | 重新启动类型 | 描述 |
---|---|---|
ñ | 节点 | 可以使用滚动重启来更新参数(请参见“执行NDB群集的滚动重启”) |
小号 | 系统 | 必须完全关闭所有群集节点,然后重新启动,以更改此参数 |
一世 | 初始 | 必须使用--initial 选项重新启动数据节点 |