NDB 集群内部结构  /  ...  /  NDB 集群数据节点文件系统目录

1.1.2 NDB 集群数据节点文件系统目录

可以使用 FileSystemPath 设置此目录的位置;目录本身始终命名为 ndb_nodeid_fs,其中 nodeid 是数据节点的节点 ID。文件系统目录包含以下目录

  • 名为 D1D2 的目录,每个目录包含 2 个子目录

    • DBDICT:包含数据字典信息。这些信息存储在

      • 文件 P0.SchemaLog

      • 一组名为 T0T1T2... 的目录,每个目录都包含一个 S0.TableList 文件。

    • 名为 D8D9D10D11 的目录,每个目录都包含一个名为 DBLQH 的目录。这些目录包含重做日志,重做日志分为四个部分,分别存储在这些目录中,重做日志部分 0 存储在 D8 中,部分 1 存储在 D9 中,依此类推。

      在每个目录中,都可以找到一个 DBLQH 子目录,其中包含 N 个重做日志文件;这些文件名为 S0.FraglogS1.FragLogS2.FragLog...、SN.FragLog,其中 N 等于 NoOfFragmentLogFiles 配置参数的值。 NoOfFragmentLogFiles 的默认值为 16。每个文件的默认大小为 16 MB,由 FragmentLogFileSize 配置参数控制。

      四个重做日志部分的大小均为 NoOfFragmentLogFiles * FragmentLogFileSize。您可以使用 DUMP 2398DUMP 2399 查询重做日志使用了多少空间。

    • DBDIH:此目录包含文件 PX.sysfile,该文件记录每个节点的最后 GCI、重启状态和节点组成员资格等信息;其结构在 NDB 集群源代码树的 storage/ndb/src/kernel/blocks/dbdih/Sysfile.hpp 中定义。此外,SX.FragList 文件保存属于每个表的片段的记录。

      sysfile 使用的格式在 NDB 8.0 中从版本 1 更新到版本 2。

    • LCP:使用完整本地检查点 (LCP) 时,此目录包含 2 个子目录,分别名为 01,每个子目录都包含本地检查点数据文件,每个本地检查点对应一个文件。在 NDB 7.6(及更高版本)中,当使用部分 LCP(EnablePartialLcp 设置为 true)时,LCP 下最多可以有 2064 个子目录,分别名为 012...、2063,每个子目录中存储一个数据文件。这些目录是按需创建的,顺序排列;例如,如果上一个部分 LCP 中使用的最后一个数据文件的编号为 61(位于 LCP/61 中),则下一个部分 LCP 数据文件将在 LCP/62 中创建。

      这些子目录中的每一个都包含许多文件,这些文件的名称遵循模式 TNFM.Data,其中 N 是表 ID,M 是片段编号。每个数据节点通常有一个主片段和一个备份片段。这意味着,对于具有 2 个数据节点且 NoOfReplicas 等于 2 的 NDB 集群,M 为 0 或 1。对于具有 4 个节点且 NoOfReplicas 等于 2 的集群,节点组 1 上的 M 为 0 或 2,节点组 2 上的 M 为 1 或 3。

      对于部分本地检查点,通常使用单个数据文件,但是当要对存储的表行的 12.5% 以上进行检查点时,每个 LCP 最多可以使用 8 个数据文件。总的来说,在任何给定时间,可以有 1 到 2048 个数据文件。

      使用 ndbmtd 时,每个节点可能有多个主片段。在这种情况下,M 是 0 到整个集群中 LQH 工作线程数减 1 范围内的数字。每个数据节点上的片段数等于该节点上的 LQH 数乘以 NoOfReplicas

      注意

      增加 MaxNoOfExecutionThreads 不会更改现有表使用的片段数;只有新创建的表才会自动使用新的片段数。如果要在增加 MaxNoOfExecutionThreads 后强制现有表使用新的片段数,则必须执行 ALTER TABLE ... REORGANIZE PARTITION 语句(就像添加新节点组时一样)。

  • LG:磁盘数据撤消日志文件的默认位置。有关更多信息,请参阅第 1.1.4 节 “NDB 集群磁盘数据表使用的文件”NDB 集群磁盘数据表CREATE LOGFILE GROUP 语句

  • TS:磁盘数据表空间数据文件的默认位置。有关更多信息,请参阅第 1.1.4 节 “NDB 集群磁盘数据表使用的文件”NDB 集群磁盘数据表CREATE TABLESPACE 语句