可以使用数据节点上的多个本地数据管理器 (LDM) 并行执行备份。为此,集群中的所有数据节点必须使用多个 LDM,并且每个数据节点必须使用相同数量的 LDM。这意味着所有数据节点都必须运行 ndbmtd(ndbd 是单线程的,因此始终只有一个 LDM),并且必须在进行备份之前将它们配置为使用多个 LDM;ndbmtd 默认情况下以单线程模式运行。您可以通过为多线程数据节点配置参数 MaxNoOfExecutionThreads
或 ThreadConfig
选择适当的设置来使它们使用多个 LDM。请记住,更改这些参数需要重新启动集群;这可以是滚动重启。此外,每个数据节点的 EnableMultithreadedBackup
参数必须设置为 1(这是默认值)。
根据 LDM 的数量和其他因素,您可能还需要增加 NoOfFragmentLogParts
。如果您使用的是大型磁盘数据表,则可能还需要增加 DiskPageBufferMemory
。与单线程备份一样,您可能还想或需要调整 BackupDataBufferSize
、BackupMemory
以及与备份相关的其他配置参数的设置(请参阅 备份参数)。
一旦所有数据节点都使用多个 LDM,您就可以使用 NDB 管理客户端中的 START BACKUP
命令进行并行备份,就像数据节点运行 ndbd(或以单线程模式运行的 ndbmtd)一样;不需要额外的或特殊的语法,您可以根据需要或希望以任何组合指定备份 ID、等待选项或快照选项。
使用多个 LDM 的备份会在每个数据节点上的目录 BACKUP/BACKUP-
(该目录位于 backup_id
/BackupDataDir
下)下创建子目录,每个 LDM 一个;这些子目录的名称为 BACKUP-
、backup_id
-PART-1-OF-N
/BACKUP-
,依此类推,直到 backup_id
-PART-2-OF-N
/BACKUP-
,其中 backup_id
-PART-N
-OF-N
/backup_id
是用于此备份的备份 ID,N
是每个数据节点的 LDM 数量。这些子目录中的每一个都包含通常的备份文件 BACKUP-
、backup_id
-0.node_id
.DataBACKUP-
和 backup_id
.node_id
.ctlBACKUP-backup_id.node_id.log
,其中 node_id
是此数据节点的节点 ID。
ndb_restore 自动检查是否存在刚刚描述的子目录;如果找到,它将尝试并行还原备份。有关还原使用多个 LDM 进行的备份的信息,请参阅 从并行备份中还原。
要强制创建单线程备份,请为所有数据节点设置 EnableMultithreadedBackup = 0
(您可以通过在 config.ini
全局配置文件的 [ndbd default]
部分中设置该参数来实现)。也可以将并行备份还原到运行旧版本 NDB
的集群。有关更多信息,请参阅 将 NDB 备份还原到先前版本的 NDB 集群。