可以使用多个本地数据管理器(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-
目录下创建子目录,每个LDM一个;这些子目录名为backup_id
/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 集群的先前版本,以获取更多信息。