MySQL8 中文参考(八十七)(5)https://developer.aliyun.com/article/1565940
- 此参数为 NDB 集群复制的同步时期定义了一个超时。如果节点未能在此参数确定的时间内参与全局检查点,则关闭该节点。默认值为 0;换句话说,超时已禁用。
TimeBetweenEpochsTimeout
是“微型 GCPs”的实现的一部分,可用于改善 NDB 集群复制的性能。
每当 GCP 保存时间超过 1 分钟或 GCP 提交时间超过 10 秒时,当前此参数的值和警告都会写入集群日志。
将此参数设置为零会禁用由保存超时、提交超时或两者引起的 GCP 停止。此参数的最大可能值为 256000 毫秒。
MaxBufferedEpochs
- 订阅节点可以滞后的未处理时期数。超过此数字会导致滞后的订阅者被断开连接。
默认值 100 对于大多数正常操作已经足够。如果订阅节点滞后足够导致断开连接,则通常是由于与进程或线程相关的网络或调度问题。 (在极少情况下,问题可能是由于NDB
客户端中的错误引起的。)当时期较长时,可能希望将值设置为低于默认值。
断开连接可以防止客户端问题影响数据节点服务,导致内存不足以缓冲数据,最终关闭。相反,只有客户端受到断开连接的影响(例如二进制日志中的间隙事件),迫使客户端重新连接或重新启动进程。
MaxBufferedEpochBytes
- 由此节点分配用于缓冲时期的总字节数。
TimeBetweenInactiveTransactionAbortCheck
- 超时处理通过检查每个事务的计时器来执行,每隔由此参数指定的时间间隔检查一次。因此,如果将此参数设置为 1000 毫秒,则每个事务每秒检查一次超时。
默认值为 1000 毫秒(1 秒)。
TransactionInactiveTimeout
- 此参数规定了在同一事务中的操作之间允许经过的最长时间。
此参数的默认值为4G
(也是最大值)。对于需要确保没有事务保持锁定时间过长的实时数据库,应将此参数设置为相对较小的值。将其设置为 0 意味着应用程序永不超时。单位为毫秒。
TransactionDeadlockDetectionTimeout
- 当节点执行涉及事务的查询时,节点在继续之前等待集群中的其他节点响应。此参数设置了事务在数据节点内执行的时间,即事务协调器等待每个参与事务的数据节点执行请求的时间。未响应可能出现的原因包括:
- 节点已“死亡”
- 操作已进入锁定队列
- 请求执行操作的节点可能负载过重。
- 此超时参数规定了事务协调器在中止事务之前等待另一个节点的查询执行的时间,并且对于节点故障处理和死锁检测都很重要。
默认超时值为 1200 毫秒(1.2 秒)。
这个参数的最小值为 50 毫秒。
DiskSyncSize
- 这是在将数据刷新到本地检查点文件之前存储的最大字节数。 这样做是为了防止写入缓冲,这可能会显著影响性能。 此参数不旨在取代
TimeBetweenLocalCheckpoints
。
注意
当启用ODirect
时,不需要设置DiskSyncSize
;实际上,在这种情况下,其值会被简单地忽略。
默认值为 4M(4 兆字节)。
MaxDiskWriteSpeed
- 设置本 NDB 集群中没有重新启动(由此数据节点或任何其他数据节点)正在进行时,本地检查点和备份操作写入磁盘的最大速率,单位为字节每秒。
若要设置数据节点重新启动时允许的磁盘写入速率上限,请使用MaxDiskWriteSpeedOwnRestart
。 若要设置其他数据节点重新启动时允许的磁盘写入速率上限,请使用MaxDiskWriteSpeedOtherNodeRestart
。 可通过设置MinDiskWriteSpeed
来调整所有 LCP 和备份操作的磁盘写入的最小速度。
MaxDiskWriteSpeedOtherNodeRestart
- 设置本 NDB 集群中的一个或多个数据节点重新启动时,本地检查点和备份操作写入磁盘的最大速率,单位为字节每秒。
要设置数据节点重新启动时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeedOwnRestart
。要设置在集群中没有任何数据节点重新启动时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeed
。可以通过设置MinDiskWriteSpeed
来调整所有 LCP 和备份操作的最小磁盘写入速度。
MaxDiskWriteSpeedOwnRestart
- 设置数据节点重新启动时本地检查点和备份操作写入磁盘的最大速率,单位为每秒字节数。
要设置其他数据节点重新启动时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeedOtherNodeRestart
。要设置在集群中没有任何数据节点重新启动时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeed
。可以通过设置MinDiskWriteSpeed
来调整所有 LCP 和备份操作的最小磁盘写入速度。
MinDiskWriteSpeed
- 设置本地检查点和备份操作写入磁盘的最小速率,单位为每秒字节数。
可以使用参数MaxDiskWriteSpeed
、MaxDiskWriteSpeedOwnRestart
和MaxDiskWriteSpeedOtherNodeRestart
来调整各种条件下 LCP 和备份的最大磁盘写入速率。有关更多信息,请参阅这些参数的描述。
ArbitrationTimeout
- 此参数指定数据节点等待仲裁器对仲裁消息的响应的时间。如果超过此时间,网络将被视为已分裂。
默认值为 7500 毫秒(7.5 秒)。
Arbitration
Arbitration
参数使得可以选择仲裁方案,对应于此参数的 3 个可能值之一:
- 默认。 这使得仲裁可以按照管理和 API 节点的
ArbitrationRank
设置正常进行。这是默认值。
- 禁用。 在
config.ini
文件的[ndbd default]
部分设置Arbitration = Disabled
可以完成与在所有管理和 API 节点上设置ArbitrationRank
为 0 相同的任务。当以这种方式设置Arbitration
时,任何ArbitrationRank
设置都将被忽略。
- WaitExternal。
Arbitration
参数还可以配置仲裁,使得集群等待直到外部集群管理应用程序在ArbitrationTimeout
确定的时间之后执行仲裁,而不是在内部处理仲裁。这可以通过在config.ini
文件的[ndbd default]
部分中设置Arbitration = WaitExternal
来实现。对于WaitExternal
设置,建议ArbitrationTimeout
的时间间隔是外部集群管理器执行仲裁所需时间的 2 倍,以获得最佳效果。
- 重要
此参数应仅在集群配置文件的[ndbd default]
部分中使用。当对单个数据节点设置Arbitration
的值不同时,集群的行为是未指定的。
RestartSubscriberConnectTimeout
- 此参数确定数据节点等待订阅 API 节点连接的时间。一旦超时,任何“丢失”的 API 节点将从集群中断开连接。要禁用此超时,请将
RestartSubscriberConnectTimeout
设置为 0。
虽然此参数以毫秒为单位,但超时本身会解析为下一个最大的整秒。
KeepAliveSendInterval
- 从 NDB 8.0.27 开始,可以通过设置此参数来启用和控制数据节点之间发送的保持活动信号的间隔。
KeepAliveSendInterval
的默认值为 60000 毫秒(一分钟);将其设置为 0 可禁用保持活动信号。介于 1 和 10 之间的值被视为 10。
在监视和断开空闲 TCP 连接的环境中,此参数可能会证明其有用,可能会在集群空闲时导致不必要的数据节点故障。
管理节点和数据节点之间的心跳间隔始终为 100 毫秒,不可配置。
缓冲和日志记录。 几个 [ndbd]
配置参数使高级用户能够更好地控制节点进程使用的资源,并根据需要调整各种缓冲区大小。
当将日志记录写入磁盘时,这些缓冲区用作文件系统的前端。如果节点在无磁盘模式下运行,这些参数可以设置为最小值而不会受到惩罚,因为磁盘写入由 NDB
存储引擎的文件系统抽象层“伪造”。
- 此参数曾经设置撤销索引缓冲区的大小,但在当前版本的 NDB Cluster 中不起作用。
在 NDB 8.0.27 及更高版本中,将此参数用于集群配置文件会引发弃用警告;您应该期望它在未来的 NDB Cluster 版本中被移除。
UndoDataBuffer
- 此参数以前设置了撤销数据缓冲区的大小,但在当前版本的 NDB Cluster 中没有任何效果。
在 NDB 8.0.27 及更高版本中,集群配置文件中使用此参数会引发弃用警告;您应该期望它在未来的 NDB Cluster 版本中被移除。
RedoBuffer
- 所有更新活动也需要被记录。REDO 日志使得在系统重新启动时可以重放这些更新。NDB 恢复算法使用数据的“模糊”检查点以及 UNDO 日志,然后应用 REDO 日志以回放所有更改直到恢复点。
RedoBuffer
设置了写入 REDO 日志的缓冲区的大小。默认值为 32MB;最小值为 1MB。
如果此缓冲区太小,NDB
存储引擎会发出错误代码 1221(REDO 日志缓冲区超载)。因此,如果您尝试在集群配置的在线更改中减少RedoBuffer
的值,应该谨慎操作。
ndbmtd 为每个 LDM 线程分配一个单独的缓冲区(参见ThreadConfig
)。例如,使用 4 个 LDM 线程,一个ndbmtd") 数据节点实际上有 4 个缓冲区,并为每个缓冲区分配RedoBuffer
字节,总共为4 * RedoBuffer
字节。
EventLogBufferSize
- 控制数据节点内用于 NDB 日志事件的循环缓冲区的大小。
控制日志消息。 在管理集群时,能够控制发送到stdout
的各种事件类型的日志消息数量非常重要。对于每个事件类别,有 16 个可能的事件级别(编号为 0 到 15)。将给定事件类别的事件报告设置为级别 15 意味着该类别中的所有事件报告都会发送到stdout
;将其设置为 0 意味着该类别中不会产生任何事件报告。
默认情况下,只有启动消息发送到stdout
,其余事件报告级别默认设置为 0。原因是这些消息也发送到管理服务器的集群日志中。
可以为管理客户端设置类似的级别,以确定在集群日志中记录哪些事件级别。
- 进程启动期间生成的事件的报告级别。
默认级别为 1。
LogLevelShutdown
- 作为节点优雅关闭的一部分生成的事件的报告级别。
默认级别为 0。
LogLevelStatistic
- 统计事件的报告级别,例如主键读取次数、更新次数、插入次数、缓冲区使用情况等。
默认级别为 0。
LogLevelCheckpoint
- 本地和全局检查点生成的事件的报告级别。
默认级别为 0。
LogLevelNodeRestart
- 节点重启期间生成的事件的报告级别。
默认级别为 0。
LogLevelConnection
- 集群节点之间连接生成的事件的报告级别。
默认级别为 0。
LogLevelError
- 集群整体生成的错误和警告的事件的报告级别。这些错误不会导致任何节点故障,但仍被认为值得报告。
默认级别为 0。
LogLevelCongestion
- 拥塞生成的事件的报告级别。这些错误不会导致节点故障,但仍被认为值得报告。
默认级别为 0。
LogLevelInfo
- 集群一般状态的信息生成的事件的报告级别。
默认级别为 0。
MemReportFrequency
- 此参数控制数据节点内存使用报告在集群日志中记录的频率;它是一个整数值,表示报告之间的秒数。
每个数据节点的数据内存和索引内存使用情况都以DataMemory
中设置的 32 KB 页面的百分比和数量记录在日志中,如config.ini
文件中所示。例如,如果DataMemory
等于 100 MB,并且给定数据节点使用 50 MB 进行数据内存存储,则集群日志中的相应行可能如下所示:
2006-12-24 01:18:16 [MgmSrvr] INFO -- Node 2: Data usage is 50%(1280 32K pages of total 2560)
MemReportFrequency
不是必需的参数。如果使用,可以在config.ini
的[ndbd default]
部分为所有集群数据节点设置,并且也可以在配置文件的相应[ndbd]
部分为单个数据节点设置或覆盖。最小值(也是默认值)为 0,此时仅在内存使用达到一定百分比(80%、90%和 100%)时才记录内存报告,如 Section 25.6.3.2, “NDB Cluster Log Events”中所述的统计事件讨论中提到的。
StartupStatusReportFrequency
- 当使用
--initial
启动数据节点时,在启动阶段 4 期间初始化重做日志文件(参见 Section 25.6.4, “Summary of NDB Cluster Start Phases”)。当为NoOfFragmentLogFiles
、FragmentLogFileSize
或两者设置非常大的值时,此初始化可能需要很长时间。您可以通过StartupStatusReportFrequency
配置参数强制定期记录此过程的进度报告。在这种情况下,进度将在集群日志中报告,显示已初始化的文件数量和空间量,如下所示:
2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 1: Local redo log file initialization status:
#Total files: 80, Completed: 60
#Total MBytes: 20480, Completed: 15557
2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 2: Local redo log file initialization status:
#Total files: 80, Completed: 60
#Total MBytes: 20480, Completed: 15570
- 这些报告在启动阶段 4 期间每隔
StartupStatusReportFrequency
秒记录一次。如果StartupStatusReportFrequency
为 0(默认值),则仅在重做日志文件初始化过程的开始和完成时将报告写入集群日志中。
数据节点调试参数
以下参数仅用于数据节点的测试或调试,不适用于生产环境。
- 可以通过使用
DictTrace
导致为创建和删除表生成的事件进行跟踪记录。此参数仅在调试 NDB 内核代码时有用。DictTrace
接受一个整数值。默认值为 0,表示不执行任何记录;1 启用跟踪记录,2 启用额外的DBDICT
调试输出的记录。
WatchdogImmediateKill
- 通过启用
WatchdogImmediateKill
数据节点配置参数,可以在发生看门狗问题时立即终止线程。此参数仅在调试或故障排除时使用,以获取报告执行停止时发生的确切情况的跟踪文件。
备份参数。 本节讨论的 [ndbd]
参数定义了用于执行在线备份的内存缓冲区。
- 在创建备份时,有两个用于将数据发送到磁盘的缓冲区。备份数据缓冲区用于填充通过扫描节点表记录的数据。一旦此缓冲区填满到指定的
BackupWriteSize
级别,页面将被发送到磁盘。在将数据刷新到磁盘时,备份过程可以继续填充此缓冲区,直到空间用尽。当发生这种情况时,备份过程会暂停扫描并等待一些磁盘写入完成,释放内存以便扫描可以继续。
此参数的默认值为 16MB。最小值为 512K。
BackupDiskWriteSpeedPct
BackupDiskWriteSpeedPct
仅适用于单线程备份。随着 NDB 8.0.16 引入多线程备份,通常不再需要调整此参数,因为在多线程情况下没有影响。接下来的讨论特定于单线程备份。
在正常操作期间,数据节点尝试最大化用于本地检查点和备份的磁盘写入速度,同时保持在 MinDiskWriteSpeed
和 MaxDiskWriteSpeed
设置的范围内。磁盘写入限速使每个 LDM 线程均等分享总预算。这允许并行 LCP 在不超出磁盘 I/O 预算的情况下进行。因为备份仅由一个 LDM 线程执行,这实际上导致预算削减,导致备份完成时间更长,并且 - 如果变化速率足够高 - 在备份日志缓冲区填充速率高于可实现的写入速率时无法完成备份。
可通过使用 BackupDiskWriteSpeedPct
配置参数来解决此问题,该参数的取值范围为 0-90(包括边界),解释为在将剩余预算分配给 LCP 线程之前,保留节点最大写入速率预算的百分比。运行备份的 LDM 线程接收备份的整个写入速率预算,以及本地检查点的写入速率预算的(减少的)份额。
此参数的默认值为 50(解释为 50%)。
BackupLogBufferSize
- 备份日志缓冲区的作用类似于备份数据缓冲区,不同之处在于它用于生成在执行备份期间进行的所有表写入的日志。写入这些页面的原则与备份数据缓冲区相同,不同之处在于当备份日志缓冲区没有更多空间时,备份将失败。因此,备份日志缓冲区的大小必须足够大,以处理备份过程中写入活动造成的负载。参见 Section 25.6.8.3, “NDB 集群备份配置”。
对于大多数应用程序来说,默认值应该足够了。实际上,备份失败更可能是由于磁盘写入速度不足而不是备份日志缓冲区变满。如果磁盘子系统未配置为处理应用程序引起的写入负载,那么集群可能无法执行所需的操作。
最好配置集群节点,使处理器成为瓶颈,而不是磁盘或网络连接。
此参数的默认值为 16MB。
BackupMemory
- 此参数已弃用,并可能在将来的 NDB 集群版本中删除。对其进行的任何设置都将被忽略。
BackupReportFrequency
- 此参数控制备份状态报告在备份期间在管理客户端中发出的频率,以及这些报告写入集群日志的频率(前提是集群事件日志记录已配置允许—参见日志记录和检查点)。
BackupReportFrequency
表示备份状态报告之间的时间间隔(以秒为单位)。
默认值为 0。
BackupWriteSize
- 此参数指定备份日志和备份数据缓冲区写入磁盘的消息的默认大小。
此参数的默认值为 256KB。
BackupMaxWriteSize
- 此参数指定备份日志和备份数据缓冲区写入磁盘的消息的最大大小。
此参数的默认值为 1MB。
CompressedBackup
- 启用此参数会导致备份文件被压缩。所使用的压缩方式等同于gzip --fast,可以节省数据节点上存储未压缩备份文件所需空间的 50%或更多。可以为单个数据节点或所有数据节点启用压缩备份(通过在
config.ini
文件的[ndbd default]
部分设置此参数)。
重要
无法将压缩备份还原到不支持此功能的 MySQL 版本的集群中运行。
默认值为0
(禁用)。
RequireEncryptedBackup
- 如果设置为 1,则备份必须加密。虽然可以为每个数据节点单独设置此参数,但建议在全局配置文件
config.ini
的[ndbd default]
部分中设置它。有关执行加密备份的更多信息,请参阅第 25.6.8.2 节,“使用 NDB 集群管理客户端创建备份”。
添加于 NDB 8.0.22。
注意
备份文件的位置由BackupDataDir
数据节点配置参数确定。
额外要求。 在指定这些参数时,以下关系必须成立。否则,数据节点无法启动。
BackupDataBufferSize >= BackupWriteSize + 188KB
BackupLogBufferSize >= BackupWriteSize + 16KB
BackupMaxWriteSize >= BackupWriteSize
NDB 集群实时性能参数
本节讨论的[ndbd]
参数用于在多处理器数据节点主机上将线程调度和锁定到特定 CPU 上。
注意
要使用这些参数,数据节点进程必须以系统根用户身份运行。
- 此参数确定在系统或节点启动期间重建有序索引时要创建的线程数,以及在运行ndb_restore
--rebuild-indexes
时要创建的线程数。仅在每个数据节点的表有多个片段时支持此参数(例如,当使用CREATE TABLE
中的COMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_2"
时)。
将此参数设置为 0(默认值)会禁用有序索引的多线程构建。
当使用ndbd或ndbmtd时支持此参数。
在数据节点初始重启期间,通过将TwoPassInitialNodeRestartCopy
数据节点配置参数设置为TRUE
,可以启用多线程构建。
LockExecuteThreadToCPU
- 当与ndbd一起使用时,此参数(现在是一个字符串)指定分配给处理
NDBCLUSTER
执行线程的 CPU 的 ID。当与ndbmtd一起使用时,此参数的值是一个逗号分隔的 CPU ID 列表,用于处理执行线程。列表中的每个 CPU ID 应为范围在 0 到 65535(包括)的整数。
指定的 ID 数量应与由MaxNoOfExecutionThreads
确定的执行线程数量相匹配。但是,使用此参数时不能保证线程按任何给定顺序分配到 CPU。您可以使用ThreadConfig
更精细地控制此类型。
LockExecuteThreadToCPU
没有默认值。
LockMaintThreadsToCPU
- 此参数指定分配给处理
NDBCLUSTER
维护线程的 CPU 的 ID。
此参数的值为 0 到 65535(包括 0 和 65535)之间的整数。没有默认值。
Numa
MySQL8 中文参考(八十七)(7)https://developer.aliyun.com/article/1565942