• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • NDB群集共享内存连接

    通常使用TCP / IP处理NDB群集节点之间的通信。共享内存(SHM)传输器的特征在于,信号是通过写入而不是在套接字上进行传输的。当在同一主机上同时运行API节点(通常是SQL节点)和数据节点时,共享内存传输器(SHM)可以通过减少TCP连接所需的开销的20%来提高性能。您可以通过以下两种方式之一启用共享内存连接:

    • 通过将UseShm数据节点配置参数1设置HostName为,并将数据节点和HostNameAPI节点设置为相同的值。
    • 通过使用[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连接,该主机托管所示的节点类型:

    1. 10.0.0.0:管理服务器
    2. 10.0.0.1:一个数据节点和一个SQL节点
    3. 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地址
      默认[没有]
      范围...
      重新启动类型ñ

      HostName1HostName2参数可用于指定要用于在两个节点之间一个给定的SHM连接的特定网络接口。这些参数使用的值可以是主机名或IP地址。

    • HostName2

      该表提供了HostName1共享内存配置参数的类型和值信息

      属性
      版本(或更高版本)NDB 8.0.13
      类型或单位名称或IP地址
      默认[没有]
      范围...
      重新启动类型ñ

      HostName1HostName2参数可用于指定要用于在两个节点之间一个给定的SHM连接的特定网络接口。这些参数使用的值可以是主机名或IP地址。

    • NodeId1

      该表提供了NodeId1共享内存配置参数的类型和值信息

      属性
      版本(或更高版本)NDB 8.0.13
      类型或单位数字
      默认[没有]
      范围1-255
      重新启动类型ñ

      为了识别两个节点之间的连接,有必要为每个节点提供节点ID,如NodeId1NodeId2

    • NodeId2

      该表提供了NodeId2共享内存配置参数的类型和值信息

      属性
      版本(或更高版本)NDB 8.0.13
      类型或单位数字
      默认[没有]
      范围1-255
      重新启动类型ñ

      为了识别两个节点之间的连接,有必要为每个节点提供节点ID,如NodeId1NodeId2

    • 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选项重新启动数据节点