可以使用多个本地数据管理器(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 集群的先前版本,以获取更多信息。