MySQL8 中文参考(八十九)(2)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL8 中文参考(八十九)

MySQL8 中文参考(八十九)(1)https://developer.aliyun.com/article/1565913


影响所有共享内存传输器的参数在 [shm default] 部分设置;这些可以在一个或多个 [shm] 部分中按连接覆盖。每个这样的部分必须使用 NodeId1NodeId2 关联给定 SHM 连接的节点 ID;也可以使用 HostName1HostName2 通过主机名标识节点,但这些参数不是必需的。

对于未设置主机名的 API 节点,使用 TCP 传输器与数据节点通信,独立于它们启动的主机;配置文件中 [tcp default] 部分设置的参数和值适用于集群中的所有 TCP 传输器。

为了获得最佳性能,您可以为 SHM 传输器定义一个自旋时间(ShmSpinTime 参数);这会影响数据节点接收线程和 NDB 中的轮询所有者(接收线程或用户线程)。

  • Checksum
版本(或更高版本) NDB 8.0.13
类型或单位 布尔型
默认 true
范围 true, false
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 这个参数是一个布尔型(Y/N)参数,默认情况下是禁用的。启用后,在将消息放入发送缓冲区之前会计算所有消息的校验和。
    此功能可防止消息在等待发送缓冲区时被损坏。它还可用作在传输过程中检查数据是否被损坏的检查。
版本(或更高版本) NDB 8.0.13
类型或单位 无符号
默认值 35
范围 0 - 200
重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13)
  • 确定组的接近程度;较小的值被解释为更接近。默认值对大多数情况足够。
  • HostName1
版本(或更高版本) NDB 8.0.13
类型或单位 名称或 IP 地址
默认值 […]
范围
重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13)
  • HostName1HostName2参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。
  • HostName2
版本(或更高版本) NDB 8.0.13
类型或单位 名称或 IP 地址
默认值 […]
范围
重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13)
  • HostName1HostName2参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。
  • NodeId1
版本(或更高版本) NDB 8.0.13
类型或单位 数字
默认值 [无]
范围 1 - 255
重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13)
  • 要识别两个节点之间的连接,需要为每个节点提供节点标识符,如NodeId1NodeId2
  • NodeId2
版本(或更高版本) NDB 8.0.13
类型或单位 数字
默认值 [无]
范围 1 - 255
重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13)
  • 要识别两个节点之间的连接,需要为每个节点提供节点标识符,如NodeId1NodeId2
  • NodeIdServer
版本(或更高版本) NDB 8.0.13
类型或单位 数字
默认值 [无]
范围 1 - 63
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 识别共享内存连接的服务器端。默认情况下,这是数据节点的节点 ID。
  • OverloadLimit
版本(或更高) NDB 8.0.13
类型或单位 字节
默认值 0
范围 0 - 4294967039 (0xFFFFFEFF)
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 当发送缓冲区中有超过这么多未发送字节时,连接被视为过载。有关更多信息,请参阅第 25.4.3.14 节,“配置 NDB 集群发送缓冲区参数”和第 25.6.16.65 节,“ndbinfo transporters 表”。
  • PreSendChecksum
版本(或更高) NDB 8.0.13
类型或单位 布尔值
默认值 false
范围 真,假
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 如果启用此参数和Checksum,则执行预发送校验和检查所有节点之间的所有 SHM 信号是否存在错误。如果未启用Checksum,则不起作用。
  • SendBufferMemory
版本(或更高) NDB 8.0.13
类型或单位 整数
默认值 2M
范围 256K - 4294967039 (0xFFFFFEFF)
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 从此节点使用共享内存连接发送的信号的共享内存缓冲区大小(以字节为单位)。
  • SendSignalId
版本(或更高) NDB 8.0.13
类型或单位 布尔值
默认值 false
范围 真,假
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 为了追踪分布式消息的路径,需要为每个消息提供唯一标识符。将此参数设置为Y会导致这些消息 ID 也通过网络传输。此功能在生产构建中默认禁用,在-debug构建中启用。
  • ShmKey
版本(或更高) NDB 8.0.13
类型或单位 无符号
默认值 0
范围 0 - 4294967039 (0xFFFFFEFF)
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 在设置共享内存段时,使用一个表示为整数的节点 ID 来唯一标识用于通信的共享内存段。没有默认值。如果启用了UseShm,则共享内存键会由NDB自动计算。
  • ShmSize
版本(或更高) NDB 8.0.13
类型或单位 字节
默认 4M
范围 64K - 4294967039 (0xFFFFFEFF)
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 每个 SHM 连接都有一个共享内存段,发送者将消息放入其中,读者从中读取消息。该段的大小由ShmSize定义。默认值为 4MB。
  • ShmSpinTime
版本(或更高) NDB 8.0.13
类型或单位 整数
默认 0
范围 0 - 2000
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 接收时,等待睡眠之前的时间,单位为微秒。
  • SigNum
版本(或更高) NDB 8.0.13
类型或单位 无符号
默认 […]
范围 0 - 4294967039 (0xFFFFFEFF)
已弃用 是(在 NDB 7.6 中)
重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13)
  • 此参数以前用于覆盖操作系统信号编号;在 NDB 8.0 中不再使用,对其进行的任何设置都将被忽略。

重启类型。 本节参数描述中使用的重启类型信息如下表所示:

表 25.22 NDB 集群重启类型

符号 重启类型 描述
N 节点 可以使用滚动重启更新该参数(参见第 25.6.5 节,“执行 NDB 集群的滚动重启”)
S 系统 必须完全关闭所有集群节点,然后重新启动,以更改此参数
I 初始 数据节点必须使用--initial选项重新启动

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-data-node-memory-management.html

25.4.3.13 数据节点内存管理

所有数据节点的内存分配都在节点启动时执行。这确保数据节点可以稳定运行,而不使用交换内存,以便NDB可用于延迟敏感(实时)应用程序。数据节点启动时分配以下类型的内存:

  • 数据内存
  • 共享全局内存
  • 重做日志缓冲区
  • 作业缓冲区
  • 发送缓冲区
  • 用于磁盘数据记录的页缓存
  • 模式事务内存
  • 事务内存
  • 撤销日志缓冲区
  • 查询内存
  • 块对象
  • 模式内存
  • 块数据结构
  • 长信号内存
  • 共享内存通信缓冲区

NDB内存管理器,管理大部分数据节点内存,处理以下内存资源:

  • 数据内存(DataMemory
  • 重做日志缓冲区(RedoBuffer
  • 作业缓冲区
  • 发送缓冲区(SendBufferMemoryTotalSendBufferMemoryExtraSendBufferMemory
  • 磁盘数据记录页缓存(DiskPageBufferMemoryDiskPageBufferEntries
  • 事务内存(TransactionMemory
  • 查询内存
  • 磁盘访问记录
  • 文件缓冲区

每个资源都设置了一个保留内存区域和一个最大内存区域。保留内存区域只能被其保留的资源使用,不能与其他资源共享;给定资源永远不能分配超过为其允许的最大内存的内存。没有最大内存的资源可以扩展使用内存管理器中的所有共享内存。

这些资源的全局共享内存大小由SharedGlobalMemory配���参数控制(默认值:128 MB)。

数据内存始终保留,从共享内存中不获取任何内存。它使用DataMemory配置参数进行控制,其最大值为 16384 GB。DataMemory是记录存储的地方,包括哈希索引(每行约 15 字节)、有序索引(每个索引每行 10-12 字节)和行头(每行 16-32 字节)。

重做日志缓冲区也仅使用保留内存;这由RedoBuffer配置参数控制,该参数设置每个 LDM 线程的重做日志缓冲区大小。这意味着实际使用的内存量是此参数值乘以数据节点中的 LDM 线程数。

作业缓冲区仅使用保留内存;此内存的大小由NDB根据各种类型线程的数量计算而得。

发送缓冲区有一个保留部分,但也可以分配额外的共享全局内存的 25%。发送缓冲区的保留大小分两步计算:

  1. 使用TotalSendBufferMemory配置参数的值(无默认值)或所有单个连接到数据节点的单个连接使用的所有单个发送缓冲区的总和。数据节点连接到所有其他数据节点,所有  API 节点和所有管理节点。这意味着,在具有 2 个数据节点,2 个管理节点和每个数据节点连接到 10 个 API  节点的集群中,每个数据节点有 13 个节点连接。由于数据节点连接的SendBufferMemory的默认值为 2 兆字节,因此总计为 26 MB。
  2. 要获取发送缓冲区的总保留大小,需要将ExtraSendBufferMemory配置参数的值(如果有,默认值为 0)与前一步得到的值相加。

换句话说,如果已设置TotalSendBufferMemory,则发送缓冲区大小为TotalSendBufferMemory + ExtraSendBufferMemory;否则,发送缓冲区的大小等于([*节点连接数*] * SendBufferMemory) + ExtraSendBufferMemory

用于磁盘数据记录的页面缓存仅使用保留资源;此资源的大小由DiskPageBufferMemory配置参数控制(默认为 64 MB)。还分配了 32 KB 磁盘页面条目的内存;其数量由DiskPageBufferEntries配置参数确定(默认为 10)。

事务内存有一个保留部分,可以由NDB计算,也可以使用在 NDB 8.0 中引入的TransactionMemory配置参数显式设置(以前,此值始终由NDB计算);事务内存还可以使用无限量的共享全局内存。事务内存用于处理所有操作资源,包括事务、扫描、锁定、扫描缓冲区和触发器操作。它还在更新表行时保存表行,然后在下一次提交时将它们写入数据内存。

以前,操作记录使用专用资源,其大小由多个配置参数控制。在 NDB 8.0 中,所有这些资源都从一个公共事务内存资源分配,并且还可以使用全局共享内存资源。可以使用单个TransactionMemory配置参数来控制此资源的大小。

保留用于撤销日志缓冲区的内存可以使用InitialLogFileGroup配置参数进行设置。如果撤销日志缓冲区是作为CREATE LOGFILE GROUP SQL 语句的一部分创建的,则内存来自事务内存。

与磁盘数据资源相关的一些元数据资源也没有保留部分,仅使用共享全局内存。因此,共享全局共享内存在发送缓冲区、事务内存和磁盘数据元数据之间共享。

如果未设置TransactionMemory,则根据以下参数计算:

  • MaxNoOfConcurrentOperations
  • MaxNoOfConcurrentTransactions
  • MaxNoOfFiredTriggers
  • MaxNoOfLocalOperations
  • MaxNoOfConcurrentIndexOperations
  • MaxNoOfConcurrentScans
  • MaxNoOfLocalScans
  • BatchSizePerLocalScan
  • TransactionBufferMemory

当显式设置TransactionMemory时,上述配置参数都不用于计算内存大小。此外,参数MaxNoOfConcurrentIndexOperationsMaxNoOfFiredTriggersMaxNoOfLocalOperationsMaxNoOfLocalScansTransactionMemory不兼容,不能与之同时设置;如果在config.ini配置文件中设置了TransactionMemory并且这四个参数中的任何一个也被设置,管理服务器将无法启动。注意:在 NDB 8.0.29 之前,对于MaxNoOfFiredTriggersMaxNoOfLocalScansMaxNoOfLocalOperations,这个限制并未强制执行(Bug #102509,Bug #32474988)。

MaxNoOfConcurrentIndexOperationsMaxNoOfFiredTriggersMaxNoOfLocalOperationsMaxNoOfLocalScans参数在 NDB 8.0 中已弃用;您应该期望它们在将来的 MySQL NDB Cluster 版本中被移除。

在 NDB 8.0.29 之前,不可能同时设置MaxNoOfConcurrentTransactionsMaxNoOfConcurrentOperationsMaxNoOfConcurrentScansTransactionMemory

事务内存资源包含大量内存池。每个内存池代表一个对象类型,并包含一组对象;每个池在启动时包括一个分配给池的保留部分;这些保留内存永远不会返回到共享全局内存。使用仅具有单个级别的数据结构来查找保留记录,以便快速检索,这意味着每个池中应该保留一定数量的记录。每个池中保留的记录数量对性能和保留内存分配有一定影响,但通常只在某些非常高级的用例中需要显式设置保留大小。

可通过设置以下配置参数来控制池的保留部分的大小:

  • ReservedConcurrentIndexOperations
  • ReservedFiredTriggers
  • ReservedConcurrentOperations
  • ReservedLocalScans
  • ReservedConcurrentTransactions
  • ReservedConcurrentScans
  • ReservedTransactionBufferMemory

对于上述列出的任何未在config.ini中明确设置的参数,保留设置将计算为相应最大设置的 25%。例如,如果未设置,ReservedConcurrentIndexOperations将计算为MaxNoOfConcurrentIndexOperations的 25%,ReservedLocalScans将计算为MaxNoOfLocalScans的 25%。

注意

如果未设置ReservedTransactionBufferMemory,则将计算为TransactionBufferMemory的 25%。

保留记录数是每个数据节点的;这些记录在每个节点上处理它们的线程(LDM 和 TC 线程)之间分割。在大多数情况下,仅设置TransactionMemory就足够了,并且允许池中的记录数由其值控制。

MaxNoOfConcurrentScans 限制每个 TC 线程中可以活动的并发扫描数。这对防止集群过载很重要。

MaxNoOfConcurrentOperations 限制可以同时活动的更新事务中的操作数。(简单读取不受此参数影响。)需要限制此数字,因为需要为节点故障处理预分配内存,并且在处理最大数量的活动操作时必须为处理节点故障时一个 TC 线程中的最大数量的活动操作提供资源。MaxNoOfConcurrentOperations 必须在所有节点上设置为相同的数字(最简单的方法是在config.ini全局配置文件的[ndbd default]部分中一次设置它的值)。虽然可以使用滚动重启(参见第 25.6.5 节“执行 NDB Cluster 的滚动重启”)来增加其值,但由于在滚动重启期间可能发生节点故障的可能性,不建议以这种方式减少其值。

可以通过MaxDMLOperationsPerTransaction参数限制 NDB Cluster 中单个事务的大小。如果未设置此参数,则一个事务的大小受MaxNoOfConcurrentOperations限制,因为此参数限制每个 TC 线程的并发操作总数。

模式内存大小由以下一组配置参数控制:

  • MaxNoOfSubscriptions
  • MaxNoOfSubscribers
  • MaxNoOfConcurrentSubOperations
  • MaxNoOfAttributes
  • MaxNoOfTables
  • MaxNoOfOrderedIndexes
  • MaxNoOfUniqueHashIndexes
  • MaxNoOfTriggers

节点数和 LDM 线程数也对模式内存大小产生重大影响,因为每个表和每个分区(及其片段副本)的分区数必须在模式内存中表示。

此外,在启动期间还分配了一些其他记录。这些记录相对较小。每个线程中的每个块包含使用内存的块对象。与其他数据节点内存结构相比,这种内存大小通常也相当小。

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-config-send-buffers.html

25.4.3.14 配置 NDB Cluster 发送缓冲区参数

NDB 内核采用统一的发送缓冲区,其内存是动态分配的,来自所有传输器共享的池。这意味着发送缓冲区的大小可以根据需要进行调整。统一发送缓冲区的配置可以通过设置以下参数来完成:

  • **TotalSendBufferMemory. ** 此参数可为所有类型的 NDB Cluster 节点设置,即可在 config.ini 文件的 [ndbd][mgm][api](或 [mysql])部分中设置。它表示每个设置了该参数的节点为所有配置的传输器分配的总内存量(以字节为单位)。如果设置,其最小值为 256KB;最大值为 4294967039。
    为了向后兼容现有配置,此参数的默认值为所有配置传输器的最大发送缓冲区大小之和,再加上每个传输器额外的 32KB(一个页面)。最大值取决于传输器类型,如下表所示:
    表 25.23 具有最大发送缓冲区大小的传输器类型
传输器 最大发送缓冲区大小(字���)
TCP SendBufferMemory(默认值 = 2M)
SHM 20K
  • 这使得现有配置可以在与 NDB Cluster 6.3 及更早版本几乎相同的方式下运行,每个传输器都有相同数量的内存和发送缓冲区空间可用。然而,一个传输器未使用的内存对其他传输器不可用。
  • **OverloadLimit. ** 此参数用于 config.ini 文件中的 [tcp] 部分,表示在连接被认为过载之前必须存在于发送缓冲区中的未发送数据量(以字节为单位)。当发生这种过载情况时,影响过载连接的事务将因 NDB  API 错误 1218(NDB 内核中的发送缓冲区过载)而失败,直到过载状态消失。默认值为 0,此时对于给定连接,有效的过载限制计算为 SendBufferMemory * 0.8。此参数的最大值为 4G。
  • **SendBufferMemory. ** 此值表示单个传输器可以使用的内存量的硬限制,该内存量来自由 TotalSendBufferMemory 指定的整个池。然而,所有配置的传输器的 SendBufferMemory 总和可能大于为给定节点设置的 TotalSendBufferMemory。当许多节点在使用时,这是一种节省内存的方法,只要所有传输器在同一时间从未同时需要最大内存量。

你可以使用ndbinfo.transporters表来监控发送缓冲区内存使用情况,并检测可能对性能产生不利影响的减速和过载条件。

25.4.4 使用高速互连与 NDB 集群

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-interconnects.html

甚至在 1996 年设计NDBCLUSTER之前,就已经明显地意识到在构建并行数据库中将会遇到的一个主要问题是网络中节点之间的通信。因此,NDBCLUSTER从一开始就被设计成允许使用多种不同的数据传输机制或传输器。

NDB Cluster 8.0 支持其中三种(参见第 25.2.1 节,“NDB Cluster 核心概念”)。第四种传输器,可扩展一致性接口(SCI),也曾在非常旧的NDB版本中得到支持。这需要专门的硬件、软件和现在不再可用的 MySQL 二进制文件。

25.5 NDB 集群程序

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs.html

25.5.1 ndbd — NDB 集群数据节点守护程序

25.5.2 ndbinfo_select_all — 从 ndbinfo 表中选择

25.5.3 ndbmtd — NDB 集群数据节点守护程序(多线程)

25.5.4 ndb_mgmd — NDB 集群管理服务器守护程序

25.5.5 ndb_mgm — NDB 集群管理客户端

25.5.6 ndb_blob_tool — 检查和修复 NDB 集群表的 BLOB 和 TEXT 列

25.5.7 ndb_config — 提取 NDB 集群配置信息

25.5.8 ndb_delete_all — 从 NDB 表中删除所有行

25.5.9 ndb_desc — 描述 NDB 表

25.5.10 ndb_drop_index — 从 NDB 表中删除索引

25.5.11 ndb_drop_table — 删除 NDB 表

25.5.12 ndb_error_reporter — NDB 错误报告实用程序

25.5.13 ndb_import — 将 CSV 数据导入 NDB

25.5.14 ndb_index_stat — NDB 索引统计实用程序

25.5.15 ndb_move_data — NDB 数据复制实用程序

25.5.16 ndb_perror — 获取 NDB 错误消息信息

25.5.17 ndb_print_backup_file — 打印 NDB 备份文件内容

25.5.18 ndb_print_file — 打印 NDB 磁盘数据文件内容

25.5.19 ndb_print_frag_file — 打印 NDB 片段列表文件内容

25.5.20 ndb_print_schema_file — 打印 NDB 模式文件内容

25.5.21 ndb_print_sys_file — 打印 NDB 系统文件内容

25.5.22 ndb_redo_log_reader — 检查和打印集群重做日志的内容

25.5.23 ndb_restore — 恢复 NDB 集群备份

25.5.24 ndb_secretsfile_reader — 从加密的 NDB 数据文件中获取密钥信息

25.5.25 ndb_select_all — 打印 NDB 表中的行

25.5.26 ndb_select_count — 打印 NDB 表的行数

25.5.27 ndb_show_tables — 显示 NDB 表的列表

25.5.28 ndb_size.pl — NDBCLUSTER 大小需求估算器

25.5.29 ndb_top — 查看 NDB 线程的 CPU 使用信息

25.5.30 ndb_waiter — 等待 NDB 集群达到给定状态

25.5.31 ndbxfrm — 压缩、解压、加密和解密由 NDB 集群创建的文件

使用和管理 NDB 集群需要几个专门的程序,在本章中我们将对这些程序进行描述。我们讨论这些程序在 NDB 集群中的目的,如何使用这些程序以及每个程序可用的启动选项。

这些程序包括 NDB 集群数据、管理和 SQL 节点进程(ndbd, ndbmtd, ndb_mgmd, 和 mysqld) 以及管理客户端(ndb_mgm)。

有关将mysqld用作 NDB 集群进程的信息,请参阅第 25.6.10 节,“NDB 集群的 MySQL 服务器用法”。

其他NDB 实用程序、诊断和示例程序包含在 NDB 集群分发中。这些包括 ndb_restore, ndb_show_tables, 和 ndb_config. 这些程序也在本节中介绍。


MySQL8 中文参考(八十九)(3)https://developer.aliyun.com/article/1565915

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
关系型数据库 MySQL Unix
MySQL8 中文参考(二十三)(3)
MySQL8 中文参考(二十三)
116 4
|
存储 缓存 关系型数据库
MySQL8 中文参考(二十一)(5)
MySQL8 中文参考(二十一)
182 3
|
存储 监控 Java
MySQL8 中文参考(二十一)(4)
MySQL8 中文参考(二十一)
255 3
|
存储 安全 关系型数据库
MySQL8 中文参考(二十一)(1)
MySQL8 中文参考(二十一)
129 3
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十一)(3)
MySQL8 中文参考(二十一)
148 2
|
关系型数据库 MySQL Unix
MySQL8 中文参考(二十一)(2)
MySQL8 中文参考(二十一)
167 2
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL8 中文参考(二十五)(5)
MySQL8 中文参考(二十五)
126 2
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十四)(1)
MySQL8 中文参考(二十四)
148 2
|
NoSQL 关系型数据库 MySQL
MySQL8 中文参考(二十三)(2)
MySQL8 中文参考(二十三)
156 2
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十三)(1)
MySQL8 中文参考(二十三)
101 2

推荐镜像

更多