可以使用多个本地数据管理器 (LDM) 在数据节点上并行执行备份操作。要使此操作正常工作,集群中的所有数据节点必须使用多个 LDM,并且每个数据节点必须使用相同数量的 LDM。这意味着所有数据节点必须运行 ndbmtd(ndbd 是单线程的,因此始终只有一个 LDM),并且在执行备份之前,必须将它们配置为使用多个 LDM;ndbmtd 默认情况下以单线程模式运行。您可以通过为多线程数据节点配置参数之一选择适当的设置,使其使用多个 LDM MaxNoOfExecutionThreads
或 ThreadConfig
。请记住,更改这些参数需要重新启动集群;这可以是滚动重启。此外,对于每个数据节点,必须将 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
(您可以通过在 [ndbd default]
部分中设置参数来完成此操作 config.ini
全局配置文件)。也可以将并行备份还原到运行旧版本的 NDB
的集群中。有关更多信息,请参见 将 NDB 备份还原到以前版本的 NDB 集群。