### 23.5.23 ndb_restore - 恢复 NDB Cluster 备份

[23.5.23.1 将 NDB 备份恢复到不同版本的 NDB Cluster](ndb-restore-to-different-version.html)
[23.5.23.2 恢复到不同数量的数据节点](ndb-restore-different-number-nodes.html)
[23.5.23.3 从并行备份恢复](ndb-restore-parallel-data-node-backup.html)

[](<>)[](<>)[](<>)[](<>)[](<>)

NDB Cluster 恢复程序作为单独的命令行实用程序实现[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)，通常可以在 MySQL 中找到`斌`目录。该程序读取作为备份结果创建的文件，并将存储的信息插入数据库。

在 NDB 7.6 及更早版本中，此程序打印`NDBT_ProgramExit - *`状态`*`运行完成后，由于对`NDBT`测试库。NDB 8.0 中删除了这种依赖关系，消除了无关的输出。

[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)必须为每个创建的备份文件执行一次[`开始备份`](mysql-cluster-backup-using-management-client.html)用于创建备份的命令（请参阅[第 23.6.8.2 节，“使用 NDB Cluster Management Client 创建备份”](mysql-cluster-backup-using-management-client.html)）。这等于创建备份时集群中的数据节点数。

[](<>)

笔记

使用前[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)，建议集群在单用户模式下运行，除非您要并行恢复多个数据节点。看[第 23.6.6 节，“NDB Cluster 单用户模式”](mysql-cluster-single-user-mode.html)， 了解更多信息。

可以使用的选项[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)如下表所示。附加说明如下表。

[](<>)

**表 23.41 与程序 ndb 一起使用的命令行选项\_恢复**

| 格式 | 描述 | 添加、弃用或删除 |
| --- | --- | -------- |
| `[--allow-pk-changes[=0|1]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_allow-pk-changes)` | 允许更改构成表主键的列集 | 添加：新开发银行 8.0.21 |
| `[--append](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_append)` | 将数据附加到制表符分隔的文件 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--backup-password=password](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-password)` | 使用 --decrypt 提供用于解密加密备份的密码；请参阅文档以获取允许的值 | 添加：新开发银行 8.0.22 |
| `[--backup-password-from-stdin](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-password-from-stdin)` | 从 STDIN 以安全的方式获取解密密码；与 --decrypt 选项一起使用 | 添加：新开发银行 8.0.24 |
| `[--backup-path=path](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-path)` | 备份文件目录的路径 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--backupid=#](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backupid)`,<br/><br/>`[-b #](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backupid)` | 从具有此 ID 的备份还原 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--character-sets-dir=path](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_character-sets-dir)` | 包含字符集的目录 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--connect=connection_string](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_connect)`,<br/><br/>`[-c connection_string](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_connect)` | --connectstring 的别名 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--connect-retries=#](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_connect-retries)` | 放弃前重试连接的次数 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--connect-retry-delay=#](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_connect-retry-delay)` | 尝试联系管理服务器之间等待的秒数 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--connect-string=connection_string](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_connect-string)`,<br/><br/>`[-c connection_string](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_connect-string)` | 与 --ndb-connectstring 相同 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--core-file](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_core-file)` | 错误时写入核心文件；用于调试 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--decrypt](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_decrypt)` | 解密加密备份；需要 --backup-password | 添加：新开发银行 8.0.22 |
| `[--defaults-extra-file=path](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_defaults-extra-file)` | 读取全局文件后读取给定文件 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--defaults-file=path](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_defaults-file)` | 仅从给定文件中读取默认选项 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--defaults-group-suffix=string](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_defaults-group-suffix)` | 还阅读带有 concat(group, suffix) 的组 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--disable-indexes](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_disable-indexes)` | 导致备份中的索引被忽略；可能会减少恢复数据所需的时间 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--dont-ignore-systab-0](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_dont-ignore-systab-0)`,<br/><br/>`[-f](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_dont-ignore-systab-0)` | 还原过程中不要忽略系统表；仅供实验；不用于生产用途 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--exclude-databases=list](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-databases)` | 要排除的一个或多个数据库列表（包括未命名的数据库） | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--exclude-intermediate-sql-tables[=TRUE|FALSE]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-intermediate-sql-tables)` | 不要恢复复制 ALTER TABLE 操作留下的任何中间表（名称以“#sql-”为前缀）；指定 FALSE 以恢复此类表 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--exclude-missing-columns](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-missing-columns)` | 导致数据库中表版本中缺少的表的备份版本中的列被忽略 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--exclude-missing-tables](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-missing-tables)` | 导致数据库中缺少的备份表被忽略 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--exclude-tables=list](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-tables)` | 要排除的一个或多个表的列表（包括同一数据库中未命名的表）；每个表引用必须包含数据库名称 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--fields-enclosed-by=char](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_fields-enclosed-by)` | 字段由该字符括起来 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--fields-optional-enclosed-by]（mysql-cluster-programs-ndb-restore.html#option_ndb_restore_fields-optional-enclosed-by）` | 字段可选地由该字符包围 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--fields-terminated-by=char](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_fields-terminated-by)` | 字段由此字符终止 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--help](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_help)`,<br/><br/>`[-?](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_help)` | 显示帮助文本并退出 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--hex](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_hex)` | 以十六进制格式打印二进制类型 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--ignore-extended-pk-updates[=0|1]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ignore-extended-pk-updates)` | 忽略包含对现在包含在扩展主键中的列的更新的日志条目 | 添加：新开发银行 8.0.21 |
| `[--include-databases=list](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_include-databases)` | 要恢复的一个或多个数据库列表（不包括未命名的数据库） | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--include-stored-grants](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_include-stored-grants)` | 恢复共享用户和对 ndb 的授权\_sql\_元数据表 | 添加：新开发银行 8.0.19 |
| `[--include-tables=list](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_include-tables)` | 要恢复的一个或多个表的列表（不包括同一数据库中未命名的表）；每个表引用必须包含数据库名称 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--lines-terminated-by=char](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_lines-terminated-by)` | 行由此字符终止 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--login-path=path](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_login-path)` | 从登录文件中读取给定路径 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--lossy-conversions](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_lossy-conversions)`,<br/><br/>`[-L](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_lossy-conversions)` | 从备份恢复数据时，允许列值的有损转换（类型降级或符号更改） | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--no-binlog](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_no-binlog)` | 如果 mysqld 已连接并使用二进制日志记录，则不要记录恢复的数据 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--no-defaults](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_no-defaults)` | 不要从登录文件以外的任何选项文件中读取默认选项 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--no-restore-disk-objects](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_no-restore-disk-objects)`,<br/><br/>`[-d](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_no-restore-disk-objects)` | 不恢复与磁盘数据相关的对象 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--no-upgrade](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_no-upgrade)`,<br/><br/>`[-u]（mysql集群程序ndb restore.html#选项_ndb_restore_无升级）` | 不要升级尚未调整VAR数据大小的varsize属性的数组类型，也不要更改列属性 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb connectstring=connection_string]（mysql集群程序ndb restore.html#option_ndb_restore_ndb-connectstring）`,<br/><br/>`[-c connection_string]（mysql集群程序ndb restore.html#option_ndb_restore_ndb-connectstring）` | 设置连接到ndb的连接字符串\_mgmd。语法：“[nodeid=id；][host=]主机名[：端口:]“。覆盖NDB中的条目\_连接字符串和我的。cnf | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb mgmd host=connection_string]（mysql集群程序ndb restore.html#option_ndb_restore_ndb-mgmd-host）`,<br/><br/>`[-c connection_string]（mysql集群程序ndb restore.html#option_ndb_restore_ndb-mgmd-host）` | 与--ndb connectstring相同 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb nodegroup map=map]（mysql集群程序ndb restore.html#option_ndb_restore_ndb-nodegroup-map）`,<br/><br/>`[-z]（mysql集群程序ndb restore.html#option_ndb_restore_ndb-nodegroup-map）` | 指定节点组映射；未使用、不受支持 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb nodeid=#]（mysql集群程序ndb restore.html#option_ndb_restore_ndb-nodeid）` | 设置此节点的节点ID，覆盖由--ndb connectstring设置的任何ID | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb优化节点选择]（mysql集群程序ndb restore.html#option_ndb_restore_ndb-optimized-node-selection）` | 启用事务节点选择的优化。默认启用；使用--跳过ndb优化节点选择以禁用 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--nodeid=#]（mysql集群程序ndb restore.html#option_ndb_restore_nodeid）`,<br/><br/>`[-n#]（mysql集群程序ndb restore.html#option_ndb_restore_nodeid）` | 进行备份的节点的ID | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--num slices=#]（mysql集群程序ndb restore.html#option_ndb_restore_num-slices）` | 按片还原时要应用的片数 | 新增：NDB 8.0.20 |
| `[--parallelism=#]（mysql集群程序ndb restore.html#option_ndb_restore_parallelism）`,<br/><br/>`[-p#]（mysql集群程序ndb restore.html#option_ndb_restore_parallelism）` | 恢复数据时要使用的并行事务数 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--preserve trailing spaces]（mysql集群程序ndb restore.html#选项_ndb_restore_preserve-trailing-spaces）`,<br/><br/>`[-P]（mysql集群程序ndb restore.html#选项_ndb_restore_preserve-trailing-spaces）` | 将固定宽度字符串类型升级为可变宽度类型时，允许保留尾随空格（包括填充） | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--print]（mysql集群程序ndb restore.html#选项_ndb_restore_print）` | 将元数据、数据和日志打印到stdout（相当于--Print meta--Print data--Print log） | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--print data]（mysql集群程序ndb restore.html#选项_ndb_restore_print-data）` | 将数据打印到标准输出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--print defaults]（mysql集群程序ndb restore.html#选项_ndb_restore_print-defaults）` | 打印程序参数列表并退出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--print log]（mysql集群程序ndb restore.html#选项_ndb_restore_print-log）` | 将日志打印到标准输出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--print meta]（mysql集群程序ndb restore.html#选项_ndb_restore_print-meta）` | 将元数据打印到标准输出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--打印sql日志]（mysql集群程序ndb restore.html#选项_ndb_restore_print-sql-log）` | 将SQL日志写入标准输出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--progress frequency=#]（mysql集群程序ndb restore.html#option_ndb_restore_progress-frequency）` | 打印每个给定秒数的还原状态 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--promote attributes]（mysql集群程序ndb restore.html#选项_ndb_restore_promote-attributes）`,<br/><br/>`[-A]（mysql集群程序ndb restore.html#选项_ndb_restore_promote-attributes）` | 允许在从备份还原数据时提升属性 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--重建索引]（mysql群集程序ndb restore.html#选项_ndb_restore_rebuild-index）` | 导致多线程重建备份中的有序索引；使用的线程数由设置BuildIndexThreads确定 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--remap column=string]（mysql集群程序ndb restore.html#option_ndb_restore_remap-column）` | 使用指定的函数和参数将偏移量应用于指定列的值。格式是[分贝].[tbl].[上校]\:[fn]\:[阿格斯]; 有关详细信息，请参阅文档 | 新增：NDB 8.0.21 |
| `[--restore data]（mysql集群程序ndb restore.html#选项_ndb_restore_restore-data）`,<br/><br/>`[-r]（mysql集群程序ndb restore.html#选项_ndb_restore_restore-data）` | 使用NDB API将表数据和日志恢复到NDB集群 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--restore-epoch]（mysql集群程序ndb restore.html#选项_ndb_restore_restore-epoch）`,<br/><br/>`[-e]（mysql集群程序ndb restore.html#选项_ndb_restore_restore-epoch）` | 将历元信息恢复到状态表中；在副本群集上用于启动复制；更新或插入mysql中的行。ndb\_申请\_ID为0的状态 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--restore meta]（mysql集群程序ndb restore.html#option_ndb_restore_restore-meta）`,<br/><br/>`[-m]（mysql集群程序ndb restore.html#选项_ndb_restore_restore-meta）` | 使用NDB API将元数据恢复到NDB群集 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--restore privilege tables]（mysql集群程序ndb restore.html#选项_ndb_restore_restore-privilege-tables）` | 恢复以前移动到NDB的MySQL特权表 | 不推荐使用：NDB 8.0.16 |
| `[--rewrite database=string]（mysql集群程序ndb restore.html#option_ndb_restore_rewrite-database）` | 恢复到不同名称的数据库；格式是olddb，newdb | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--skip breaked objects]（mysql集群程序ndb restore.html#选项_ndb_restore_skip-breaked-objects）` | 忽略备份文件中缺少的blob表 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--跳过表检查]（mysql集群程序ndb restore.html#option_ndb_restore_skip-table-check）`,<br/><br/>`[-s]（mysql集群程序ndb restore.html#选项_ndb_restore_skip-table-check）` | 在还原过程中跳过表结构检查 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--跳过未知对象]（mysql群集程序ndb restore.html#选项_ndb_restore_skip-unknown-objects）` | 导致ndb无法识别架构对象\_将较新NDB版本的备份还原到较旧版本时忽略还原 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--slice id=#]（mysql集群程序ndb restore.html#option_ndb_restore_slice-id）` | 按片恢复时的片ID | 新增：NDB 8.0.20 |
| `[--tab=path]（mysql集群程序ndb restore.html#option_ndb_restore_tab）`,<br/><br/>`[-T path]（mysql集群程序ndb restore.html#选项_ndb_restore_选项卡）` | 创建一个分隔的选项卡。提供的路径中每个表的txt文件 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--用法]（mysql集群程序ndb restore.html#选项_ndb_restore_用法）`,<br/><br/>`[-?]（mysql集群程序ndb restore.html#选项_ndb_restore_用法）` | 显示帮助文本并退出；跟…救命 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--verbose=#]（mysql集群程序ndb restore.html#option_ndb_restore_verbose）` | 输出中的详细程度 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--version]（mysql集群程序ndb restore.html#选项_ndb_restore_version）`,<br/><br/>`[-V]（mysql集群程序ndb restore.html#选项_ndb_restore_版本）` | 显示版本信息并退出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--with apply status]（mysql集群程序ndb restore.html#选项_ndb_restore_with-apply-status）` | 恢复ndb\_申请\_状态表。需要--恢复数据 | 新增：NDB 8.0.29 |

-   [](<>) `--允许pk更改`

    [](<>)[](<>)

    | 命令行格式 | `--允许主键更改[=0 | 1]` |
    | ----- | ------------------ |
    | 介绍 | 8.0.21-ndb-8.0.21 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `1.` |

    当此选项设置为`1.`, [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)允许表定义中的主键与备份中同一表的主键不同。在一个或多个表上的主键发生更改的不同架构版本之间进行备份和恢复时，这可能是可取的，而且使用ndb执行恢复操作似乎是可行的\_恢复比发出许多命令更简单或更高效[`改变桌子`](alter-table.html)还原表架构和数据后的语句。

    支持主键定义中的以下更改`--允许pk更改`:

    -   **扩展主键**：备份中表架构中存在的不可为空的列将成为数据库中表主键的一部分。

        重要的

        扩展表的主键时，在进行备份时，不得更新成为主键一部分的任何列；发现的任何此类更新[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)导致恢复操作失败，即使值没有发生变化。在某些情况下，可以使用[`--忽略扩展pk更新`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ignore-extended-pk-updates)选项有关详细信息，请参阅此选项的说明。

    -   **收缩主键（1）**：在备份架构中已经是表主键一部分的列不再是主键的一部分，而是保留在表中。

    -   **收缩主键（2）**：备份架构中已经是表主键一部分的列将从表中完全删除。

        这些差异可以与[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)，包括对blob和文本列的更改，这些更改需要使用暂存表。

        下面列出了使用主键模式更改的典型场景中的基本步骤：

    1.  使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--还原元`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_restore-meta)

    2.  将模式更改为所需的模式，或者创建它

    3.  备份所需的模式

    4.  跑[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--禁用索引`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_disable-indexes)使用上一步的备份删除索引和约束

    5.  跑[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--允许pk更改`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_allow-pk-changes)（可能与[`--忽略扩展pk更新`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ignore-extended-pk-updates), [`--禁用索引`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_disable-indexes)，以及可能需要的其他选项）来恢复所有数据

    6.  跑[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--重建索引`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_rebuild-indexes)使用使用所需架构进行的备份来重建索引和约束

        扩展主键时，可能需要[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)在还原操作期间使用临时的辅助唯一索引，将旧主键映射到新主键。只有在需要将备份日志中的事件应用到具有扩展主键的表时，才会创建这样的索引。该索引名为`NDB$RESTORE_PK_映射`，并在每个需要它的表上创建；如有必要，可以由多个实例共享[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)并行运行的实例。（跑步[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--重建索引`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_rebuild-indexes)在恢复过程结束时，会导致删除此索引。）

-   [](<>) `--附加`

    [](<>)[](<>)

    | 命令行格式 | `--附加` |
    | ----- | ------ |

    当与[`--标签`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_tab)和[`--打印数据`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_print-data)选项，这会将数据附加到任何具有相同名称的现有文件中。

-   [](<>) `--备份路径`=*`目录名`*

    [](<>)[](<>)

    | 命令行格式 | `--备份路径=路径` |
    | ----- | ----------- |
    | 类型 | 目录名 |
    | 默认值 | `./` |

    需要备份目录的路径；这是提供给[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)使用`--备份路径`选项，并且必须包括与要还原的备份的备份ID对应的子目录。例如，如果数据节点[`数据目录`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datadir)是`/var/lib/mysql集群`，则备份目录为`/var/lib/mysql集群/备份`，可以在中找到ID为3的备份文件`/var/lib/mysql cluster/BACKUP/BACKUP-3`。路径可以是绝对路径，也可以是相对于[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)可执行文件位于，可以选择前缀为`备份路径=`.

    可以使用与创建备份时不同的配置将备份还原到数据库。例如，假设备份ID为的备份`12`，在具有两个具有节点ID的存储节点的群集中创建`2.`和`3.`，将恢复到具有四个节点的群集。然后[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)必须为进行备份的群集中的每个存储节点运行两次。然而[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)无法始终将运行一个版本MySQL的群集上的备份恢复到运行另一个版本MySQL的群集上。

    重要的

    无法使用较旧版本的还原从较新版本的NDB群集生成的备份[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)。您可以将较新版本的MySQL备份还原到较旧的群集，但必须使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)从较新的NDB群集版本执行此操作。

    例如，要将从运行NDB cluster 7.5.26的群集执行的群集备份恢复到运行NDB cluster 7.4.36的群集，必须使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)这是NDB Cluster 7.5.26发行版附带的。

    为了更快速地恢复，可以并行地恢复数据，前提是有足够数量的集群连接可用。也就是说，当并行恢复到多个节点时，必须具有`[api]`或`[mysqld]`集群中的部分`配置。伊尼`文件可用于每个并发[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)过程但是，数据文件必须始终在日志之前应用。

-   [](<>) `--备份密码=*`暗语`*`

    [](<>)[](<>)

    | 命令行格式 | `--备份密码=密码` |
    | ----- | ----------- |
    | 介绍 | 8.0.22-ndb-8.0.22 |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    此选项指定在使用解密加密备份时使用的密码[`--解密`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_decrypt)选项这必须与加密备份时使用的密码相同。

    密码长度最多可达256个字符，必须用单引号或双引号括起来。它可以包含字符代码为32、35、38、40-91、93、95和97-126的任何ASCII字符；换句话说，它可以使用任何可打印的ASCII字符，除了`!`, `'`, `"`, `$`, `%`, `\`和`^`.

    在MySQL 8.0.24及更高版本中，可以省略密码，在这种情况下[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)等待从中提供`斯特丁`，如使用[`--stdin的备份密码`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-password-from-stdin).

-   [](<>) `--stdin的备份密码[=TRUE | FALSE]`

    [](<>)[](<>)

    | 命令行格式 | `--stdin的备份密码` |
    | ----- | -------------- |
    | 介绍 | 8.0.24-ndb-8.0.24 |

    当用来代替[`--备份密码`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-password)，此选项允许从系统外壳输入备份密码(`斯特丁`)，类似于以交互方式向用户提供密码时的操作方式[**mysql**](mysql.html)当使用[`--密码`](mysql-command-options.html#option_mysql_password)没有在命令行上提供密码。

-   [](<>) `--备份`=*`#`*, `-b`

    [](<>)[](<>)

    | 命令行格式 | `--备份=#` |
    | ----- | -------- |
    | 类型 | 数字的 |
    | 默认值 | `没有一个` |

    此选项用于指定备份的ID或序列号，与管理客户端在`后援*`备份id`*完成的`备份完成后显示的消息。（见[第23.6.8.2节，“使用NDB群集管理客户端创建备份”](mysql-cluster-backup-using-management-client.html).)

    重要的

    恢复群集备份时，必须确保从具有相同备份ID的备份中恢复所有数据节点。使用不同备份中的文件最多只能将群集恢复到不一致的状态，并且可能会完全失败。

    在NDB 8.0中，此选项是必需的。

-   [](<>) `--字符集目录`

    [](<>)[](<>)

    | 命令行格式 | `--字符集dir=path` |
    | ----- | --------------- |

    包含字符集的目录。

-   [](<>) `--连接`, `-c`

    [](<>)[](<>)

    | 命令行格式 | `--连接=连接字符串` |
    | ----- | ------------ |
    | 类型 | 一串 |
    | 默认值 | `本地主机：1186` |

    别名[`--ndb连接字符串`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ndb-connectstring).

-   [](<>) `--连接重试`

    [](<>)[](<>)

    | 命令行格式 | `--连接重试=#` |
    | ----- | ---------- |
    | 类型 | 整数 |
    | 默认值 | `12` |
    | 最小值 | `0` |
    | 最大值 | `12` |

    放弃之前重试连接的次数。

-   [](<>) `--连接重试延迟`

    [](<>)[](<>)

    | 命令行格式 | `--连接重试延迟=#` |
    | ----- | ------------ |
    | 类型 | 整数 |
    | 默认值 | `5.` |
    | 最小值 | `0` |
    | 最大值 | `5.` |

    尝试联系管理服务器之间等待的秒数。

-   [](<>) `--连接字符串`

    [](<>)[](<>)

    | 命令行格式 | `--连接字符串=连接字符串` |
    | ----- | --------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    等同于[`--ndb连接字符串`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ndb-connectstring).

-   [](<>) `--核心文件`

    [](<>)[](<>)

    | 命令行格式 | `--核心文件` |
    | ----- | -------- |

    错误时写入核心文件；用于调试。

-   [](<>) `--解密`

    [](<>)[](<>)

    | 命令行格式 | `--解密` |
    | ----- | ------ |
    | 介绍 | 8.0.22-ndb-8.0.22 |

    使用提供的密码解密加密备份[`--备份密码`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-password)选项

-   [](<>) `--默认额外文件`

    [](<>)[](<>)

    | 命令行格式 | `--默认额外文件=路径` |
    | ----- | ------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    读取全局文件后读取给定文件。

-   [](<>) `--默认文件`

    [](<>)[](<>)

    | 命令行格式 | `--默认文件=路径` |
    | ----- | ----------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    仅从给定文件读取默认选项。

-   [](<>) `--默认组后缀`

    [](<>)[](<>)

    | 命令行格式 | `--默认组后缀=字符串` |
    | ----- | ------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    同时阅读带有concat（组，后缀）的组。

-   [](<>) `--禁用索引`

    [](<>)[](<>)

    | 命令行格式 | `--禁用索引` |
    | ----- | -------- |

    在从本机恢复数据期间禁用索引恢复`NDB`备份之后，可以使用多线程构建索引，一次恢复所有表的索引[`--重建索引`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_rebuild-indexes)，这应该比为非常大的表同时重建索引更快。

    在NDB 8.0.27及更高版本中，此选项还会删除备份中指定的任何外键。

    在NDB 8.0.29之前，试图从MySQL访问`NDB`无法找到一个或多个索引的表总是被拒绝，并出现错误[`4243`](https://dev.mysql.com/doc/ndbapi/en/ndb-error-codes-application-error.html#ndberrno-4243)找不到索引。从NDB 8.0.29开始，MySQL可以打开这样一个表，前提是查询不使用任何受影响的索引；否则，查询将被拒绝[`ER_NOT_密钥文件`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_not_keyfile).在后一种情况下，您可以通过执行[`改变桌子`](alter-table.html)像这样的声明：

    ```
    ALTER TABLE tbl ALTER INDEX idx INVISIBLE;
    ```

    这会导致MySQL忽略索引`idx`在桌子上`tbl`看见[主键和索引](alter-table.html#alter-table-index)，以获取更多信息。

-   [](<>) `--Don-ignore-systab-0`, `-f`

    [](<>)[](<>)

    | 命令行格式 | `--Don-ignore-systab-0` |
    | ----- | ----------------------- |

    通常，在恢复表数据和元数据时，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)忽略[`NDB`](mysql-cluster.html)备份中存在的系统表。`--Don-ignore-systab-0`使系统表恢复。*此选项仅供实验和开发使用，不建议在生产环境中使用*.

-   [](<>) `--排除数据库`=*`数据库列表`*

    [](<>)[](<>)

    | 命令行格式 | `--排除数据库=列表` |
    | ----- | ------------ |
    | 类型 | 一串 |
    | 默认值 | `` |

    一个或多个不应恢复的数据库的逗号分隔列表。

    此选项通常与[`--排除表`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-tables); 有关更多信息和示例，请参见该选项的说明。

-   [](<>) `--排除中间sql表[`=*`对|错]`*

    [](<>)[](<>)

    | 命令行格式 | `--排除中间sql表[=TRUE | FALSE]` |
    | ----- | --------------------------- |
    | 类型 | 布尔值 |
    | 默认值 | `符合事实的` |

    执行复制时[`改变桌子`](alter-table.html)操作，[**mysqld**](mysqld.html)创建中间表（其名称的前缀为`#sql-`).什么时候`符合事实的`这个`--排除中间sql表`选择权保留[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)恢复这些操作可能遗留下来的表。这个选项是`符合事实的`默认情况下。

-   [](<>) `--排除缺少的列`

    [](<>)[](<>)

    | 命令行格式 | `--排除缺少的列` |
    | ----- | ---------- |

    可以使用此选项仅还原选定的表列，这会导致[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)忽略正在还原的表与备份中找到的表的版本相比缺少的任何列。此选项适用于正在还原的所有表。如果希望仅将此选项应用于选定的表或数据库，则可以将其与一个或多个`--包括-*`或`--排除-*`要执行此操作，请使用本节其他地方描述的选项，然后使用这些选项的补充集将数据恢复到剩余的表中。

-   [](<>) `--排除缺少的表`

    [](<>)[](<>)

    | 命令行格式 | `--排除缺少的表` |
    | ----- | ---------- |

    可以使用此选项仅还原选定的表，这会导致[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)忽略备份中未在目标数据库中找到的任何表。

-   [](<>) `--排除表`=*`表格列表`*

    [](<>)[](<>)

    | 命令行格式 | `--排除表=列表` |
    | ----- | ---------- |
    | 类型 | 一串 |
    | 默认值 | `` |

    要排除的一个或多个表的列表；每个表引用必须包含数据库名称。常与连用[`--排除数据库`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-databases).

    什么时候`--排除数据库`或`--排除表`如果使用，则仅排除由该选项命名的数据库或表；所有其他数据库和表都由[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html).

    此表显示了对[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) usng `--排除-*`选项（为了清楚起见，省略了可能需要的其他选项），以及这些选项对从NDB群集备份恢复的影响：

    [](<>)

    **表23.42 ndb的几种调用\_使用--exclude恢复-\*选项，以及这些选项对从NDB群集备份恢复的影响。**

    | 选项 | 后果 |
    | --- | --- |
    | `--排除数据库=db1` | 所有数据库中的所有表，除了`db1`恢复；房间里没有桌子`db1`都恢复了 |
    | `--排除数据库=db1，db2`（或`--排除数据库=db1` `--排除数据库=db2`) | 所有数据库中的所有表，除了`db1`和`db2`恢复；房间里没有桌子`db1`或`db2`都恢复了 |
    | `--exclude tables=db1。t1` | 所有桌子除了`t1`在数据库中`db1`恢复；所有其他的桌子`db1`恢复；恢复所有其他数据库中的所有表 |
    | `--exclude tables=db1。t2，db2。t1`（或`--exclude tables=db1。t2` `--exclude tables=db2。t1）` | 数据库中的所有表`db1`除了`t2`以及数据库中的所有表`db2`除了桌子`t1`恢复；没有其他桌子了`db1`或`db2`恢复；恢复所有其他数据库中的所有表 |

    您可以同时使用这两个选项。例如，以下情况会导致所有数据库中的所有表*除了*数据库`db1`和`db2`，还有桌子`t1`和`t2`在数据库中`db3`，待修复：

    ```
    $> ndb_restore [...] --exclude-databases=db1,db2 --exclude-tables=db3.t1,db3.t2
    ```

    （同样，出于清晰和简洁的考虑，我们在刚才的示例中省略了其他可能必要的选项。）

    你可以用`--包括-*`和`--排除-*`根据以下规则，将选项放在一起：

    -   所有人的行动`--包括-*`和`--排除-*`期权是累积的。

    -   全部的`--包括-*`和`--排除-*`选项按照传递给ndb的顺序进行评估\_恢复，从右到左。

    -   在选项冲突的情况下，第一个（最右边的）选项优先。换句话说，与给定数据库或表匹配的第一个选项（从右向左）将“获胜”。

        例如，以下一组选项会导致[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)从数据库还原所有表`db1`除了`db1。t1`，同时不从任何其他数据库还原其他表：

    ```
    --include-databases=db1 --exclude-tables=db1.t1
    ```

    然而，颠倒刚刚给出的选项的顺序只会导致数据库中的所有表`db1`待修复（包括`db1。t1`，但没有来自任何其他数据库的表），因为[`--包括数据库`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_include-databases)选项位于最右边，是与数据库的第一个匹配项`db1`因此优先于任何其他匹配的选项`db1`或者其他桌子`db1`:

    ```
    --exclude-tables=db1.t1 --include-databases=db1
    ```

-   [](<>) `--由`=*`烧焦`*

    [](<>)[](<>)

    | 命令行格式 | `--用=char括起来的字段` |
    | ----- | ---------------- |
    | 类型 | 一串 |
    | 默认值 | `` |

    每个列值都由传递给该选项的字符串包围（无论数据类型如何；请参见[`--字段可以选择用`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_fields-optionally-enclosed-by)).

-   [](<>) `--字段可以选择用`

    [](<>)[](<>)

    | 命令行格式 | `--字段可以选择用` |
    | ----- | ----------- |
    | 类型 | 一串 |
    | 默认值 | `` |

    传递给此选项的字符串用于括起包含字符数据的列值（例如[`烧焦`](char.html), [`瓦尔查尔`](char.html), [`二进制的`](binary-varbinary.html), [`文本`](blob.html)或[`枚举`](enum.html)).

-   [](<>) `--以结尾的字段`=*`烧焦`*

    [](<>)[](<>)

    | 命令行格式 | `--以=字符结尾的字段` |
    | ----- | ------------- |
    | 类型 | 一串 |
    | 默认值 | `\t（标签）` |

    传递给此选项的字符串用于分隔列值。默认值是制表符(`\t`).

-   [](<>) `--救命`

    [](<>)[](<>)

    | 命令行格式 | `--救命` |
    | ----- | ------ |

    显示帮助文本并退出。

-   [](<>) `--妖术`

    [](<>)[](<>)

    | 命令行格式 | `--妖术` |
    | ----- | ------ |

    如果使用此选项，则所有二进制值都以十六进制格式输出。

-   [](<>) `--忽略扩展pk更新`

    [](<>)[](<>)

    | 命令行格式 | `--忽略扩展pk更新[=0 | 1]` |
    | ----- | -------------------- |
    | 介绍 | 8.0.21-ndb-8.0.21 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `1.` |

    使用时[`--允许pk更改`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_allow-pk-changes)，在进行备份时，不能更新成为表主键一部分的列；这些列在插入值时应保持相同的值，直到删除包含这些值的行。如果[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)在还原备份时遇到这些列的更新，则还原失败。由于某些应用程序在更新行时可能会为所有列设置值，即使某些列的值没有更改，备份可能会包含一些日志事件，这些事件似乎会更新实际上没有修改的列。在这种情况下，你可以设置`--忽略扩展pk更新`到`1.`，强迫[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)忽略这些更新。

    重要的

    当导致忽略这些更新时，用户负责确保成为主键一部分的任何列的值都没有更新。

    有关详细信息，请参见的说明[`--允许pk更改`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_allow-pk-changes).

-   [](<>) `--包括数据库`=*`数据库列表`*

    [](<>)[](<>)

    | 命令行格式 | `--包含数据库=列表` |
    | ----- | ------------ |
    | 类型 | 一串 |
    | 默认值 | `` |

    要还原的一个或多个数据库的逗号分隔列表。常与连用[`--包括桌子`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_include-tables); 有关更多信息和示例，请参见该选项的说明。

-   [](<>) `--包括存储的补助金`

    [](<>)[](<>)

    | 命令行格式 | `--包括存储的补助金` |
    | ----- | ------------ |
    | 介绍 | 8.0.19-ndb-8.0.19 |

    在NDB 8.0中，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)默认情况下不恢复共享用户和授权（请参阅[第23.6.12节，“特权同步和NDB\_存储\_用户“](mysql-cluster-privilege-synchronization.html))到`ndb_sql_元数据`桌子指定此选项会导致它这样做。

-   [](<>) `--包括桌子`=*`表格列表`*

    [](<>)[](<>)

    | 命令行格式 | `--包含表格=列表` |
    | ----- | ----------- |
    | 类型 | 一串 |
    | 默认值 | `` |

    要还原的表的逗号分隔列表；每个表引用必须包含数据库名称。

    什么时候`--包括数据库`或`--包括桌子`如果使用，则仅恢复由该选项命名的数据库或表；所有其他数据库和表都被排除在外[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)，并且不会恢复。

    下表显示了对[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)使用`--包括-*`选项（为清晰起见，省略了可能需要的其他选项），以及这些选项对从NDB群集备份恢复的影响：

    [](<>)

    **表23.43 ndb的几种调用\_使用恢复--包括-\*选项及其对从NDB群集备份恢复的影响。**

    | 选项 | 后果 |
    | --- | --- |
    | `--include databases=db1` | 仅数据库中的表`db1`恢复；忽略所有其他数据库中的所有表 |
    | `--include databases=db1，db2`（或`--include databases=db1` `--include databases=db2`) | 仅数据库中的表`db1`和`db2`恢复；忽略所有其他数据库中的所有表 |
    | `--include tables=db1。t1` | 唯一的桌子`t1`在数据库中`db1`恢复；没有其他桌子了`db1`或者在任何其他数据库中进行恢复 |
    | `--include tables=db1。t2，db2。t1`（或`--include tables=db1。t2` `--include tables=db2。t1`) | 只有桌子`t2`在数据库中`db1`桌子呢`t1`在数据库中`db2`恢复；没有其他桌子了`db1`, `db2`，或恢复任何其他数据库 |

    您也可以同时使用这两个选项。例如，以下情况会导致数据库中的所有表`db1`和`db2`，还有桌子`t1`和`t2`在数据库中`db3`，要恢复（没有其他数据库或表）：

    ```
    $> ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2
    ```

    （在刚才显示的示例中，我们再次省略了其他可能需要的选项。）

    也可以只恢复选定的数据库，或从单个数据库中恢复选定的表，而不恢复任何数据`--包括-*`（或`--排除-*`)选项，使用此处显示的语法：

    ```
    ndb_restore other_options db_name,[db_name[,...] | tbl_name[,tbl_name][,...]]
    ```

    换句话说，您可以指定要还原的以下任一项：

    -   来自一个或多个数据库的所有表

    -   来自单个数据库的一个或多个表

-   [](<>) `--终止于`=*`烧焦`*

    [](<>)[](<>)

    | 命令行格式 | `--以=字符结尾的行` |
    | ----- | ------------ |
    | 类型 | 一串 |
    | 默认值 | `\n（换行）` |

    指定用于结束每行输出的字符串。默认为换行符(`\n`).

-   [](<>) `--登录路径`

    [](<>)[](<>)

    | 命令行格式 | `--登录路径=路径` |
    | ----- | ----------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    从登录文件读取给定路径。

-   [](<>) `--有损转换`, `-L`

    [](<>)[](<>)

    | 命令行格式 | `--有损转换` |
    | ----- | -------- |

    此选项旨在补充[`--提升属性`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_promote-attributes)选项使用`--有损转换`从备份中恢复数据时，允许对列值进行有损转换（键入降级或符号更改）。除了一些例外，降级的规则与MySQL复制的规则相同；看见[第17.5.1.9.2节，“具有不同数据类型的列的复制”](replication-features-differing-tables.html#replication-features-different-data-types)，以获取有关属性降级当前支持的特定类型转换的信息。

    从NDB 8.0.26开始，该选项还可以恢复`无效的`列为`非空`。该列不得包含任何`无效的`条目；否则[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)由于一个错误而停止。

    [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)报告在有损转换期间对每个属性和列执行的任何数据截断。

-   [](<>) `--没有宾洛格`

    [](<>)[](<>)

    | 命令行格式 | `--没有宾洛格` |
    | ----- | --------- |

    此选项可防止任何连接的SQL节点写入由恢复的数据[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)他们的二进制日志。

-   [](<>) `--没有还原磁盘对象`, `-d`

    [](<>)[](<>)

    | 命令行格式 | `--没有还原磁盘对象` |
    | ----- | ------------ |

    此选项停止[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)恢复任何NDB群集磁盘数据对象，如表空间和日志文件组；看见[第23.6.10节，“NDB群集磁盘数据表”](mysql-cluster-disk-data.html)，以获取有关这些的更多信息。

-   [](<>) `--不升级`, `-u`

    [](<>)[](<>)

    | 命令行格式 | `--不升级` |
    | ----- | ------- |

    使用时[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)要恢复备份，[`瓦尔查尔`](char.html)使用旧的固定格式创建的列将使用现在使用的可变宽度格式调整大小并重新创建。可以通过指定`--不升级`.

-   [](<>) `--ndb连接字符串`

    [](<>)[](<>)

    | 命令行格式 | `--ndb connectstring=连接字符串` |
    | ----- | --------------------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    设置连接到ndb的连接字符串\_mgmd。语法：“[nodeid=id；][host=]主机名[：端口:]“。覆盖NDB中的条目\_连接字符串和我的。cnf。

-   [](<>) `--ndb mgmd主机`

    [](<>)[](<>)

    | 命令行格式 | `--ndb mgmd主机=连接\u字符串` |
    | ----- | ---------------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    等同于[`--ndb连接字符串`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ndb-connectstring).

-   [](<>) `--ndb节点组映射`=*`地图`*, `-z`

    [](<>)[](<>)

    | 命令行格式 | `--ndb节点组映射=映射` |
    | ----- | --------------- |

    用于将从一个节点组获取的备份恢复到另一个节点组，但从未完全实现；不受支持。

    NDB 8.0.27中删除了所有支持此选项的代码；在本版本和更高版本中，将忽略为其设置的任何值，而选项本身不做任何操作。

-   [](<>) `--ndb节点ID`

    [](<>)[](<>)

    | 命令行格式 | `--ndb节点ID=#` |
    | ----- | ------------- |
    | 类型 | 整数 |
    | 默认值 | `[无]` |

    设置此节点的节点ID，覆盖由[`--ndb连接字符串`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ndb-connectstring).

-   [](<>) `--ndb优化节点选择`

    [](<>)[](<>)

    | 命令行格式 | `--ndb优化节点选择` |
    | ----- | ------------- |

    启用事务节点选择的优化。默认启用；使用`--跳过ndb优化节点选择`禁用。

-   [](<>) `--没有默认值`

    [](<>)[](<>)

    | 命令行格式 | `--没有默认值` |
    | ----- | --------- |

    不要从登录文件以外的任何选项文件中读取默认选项。

-   [](<>) `--诺代德`=*`#`*, `-n`

    [](<>)[](<>)

    | 命令行格式 | `--诺代德=#` |
    | ----- | --------- |
    | 类型 | 数字的 |
    | 默认值 | `没有一个` |

    指定进行备份的数据节点的节点ID。

    当恢复到数据节点数与执行备份的数据节点数不同的群集时，此信息有助于确定要恢复到给定节点的一组或多组正确的文件。（在这种情况下，通常需要将多个文件恢复到单个数据节点。）看见[第23.5.23.2节，“恢复到不同数量的数据节点”](ndb-restore-different-number-nodes.html)，以获取更多信息和示例。

    在NDB 8.0中，此选项是必需的。

-   [](<>) `--num切片`=*`#`*

    [](<>)[](<>)

    | 命令行格式 | `--数片=#` |
    | ----- | -------- |
    | 介绍 | 8.0.20-ndb-8.0.20 |
    | 类型 | 整数 |
    | 默认值 | `1.` |
    | 最小值 | `1.` |
    | 最大值 | `1024` |

    按片恢复备份时，此选项设置要将备份分割成的片数。这允许多个[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)并行恢复不相交的子集，可能会减少执行恢复操作所需的时间。

    A.*片*是给定备份中数据的子集；也就是说，它是一组具有相同切片ID的片段，使用[`--切片id`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_slice-id)选项这两个选项必须始终一起使用，并且`--切片id`必须始终小于切片数。

    [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)遇到碎片并为每个碎片分配一个碎片计数器。按片恢复时，为每个片段分配一个片ID；此切片ID的范围为0到1，小于切片数。对于一张不是[`斑点`](blob.html)表中，使用以下公式确定给定片段所属的切片：

    ```
    [slice_ID] = [fragment_counter] % [number_of_slices]
    ```

    暂时[`斑点`](blob.html)表中，未使用片段计数器；取而代之的是片段号，以及`斑点`表（回想一下`NDB`商店*`斑点`*值在单独的表中（内部）。在这种情况下，给定片段的切片ID计算如下所示：

    ```
    [slice_ID] =
    ([main_table_ID] + [fragment_ID]) % [number_of_slices]
    ```

    因此，通过*`N`*这意味着跑步*`N`*实例[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)，都是`--num切片=*`N`*`（以及任何其他必要的选项）和[`--切片id=1`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_slice-id), `--切片id=2`, `--切片id=3`，等等`切片id=*`N`*-1`.

    **实例**假设要还原名为的备份`备份-1`，可在默认目录中找到`/var/lib/mysql cluster/BACKUP/BACKUP-3`在每个数据节点上的节点文件系统上，连接到一个包含四个数据节点的集群，四个数据节点的节点ID分别为1、2、3和4。要使用五个切片执行此操作，请执行以下列表中显示的命令集：

    1.  使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)如图所示：

        ```
        $> ndb_restore -b 1 -n 1 -m --disable-indexes --backup-path=/home/ndbuser/backups
        ```

    2.  将集群数据恢复到调用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)如图所示：

        ```
        $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1

        $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1

        $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1

        $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        ```

        只要有足够的插槽连接到集群，就可以并行执行此步骤中刚刚显示的所有命令（请参阅[`--备份路径`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-path)选项）。

    3.  像往常一样恢复索引，如下所示：

        ```
        $> ndb_restore -b 1 -n 1 --rebuild-indexes --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        ```

    4.  最后，使用如下命令恢复历元：

        ```
        $> ndb_restore -b 1 -n 1 --restore-epoch --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
        ```

        您应该使用切片来仅恢复集群数据；没有必要雇用[`--num切片`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_num-slices)或[`--切片id`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_slice-id)恢复元数据、索引或历元信息时。如果这些选项中的一个或两个都与[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)控制恢复的选项，程序会忽略它们。

        使用[`--平行性`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_parallelism)关于恢复速度的选项与使用多个实例进行切片或并行恢复所产生的选项无关[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) (`--平行性`指定服务器执行的并行事务数*仅有一个的* [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)线程），但它可以与其中一个或两个一起使用。你应该意识到`--平行性`原因[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)给集群施加更大的负载；如果系统能够处理这个问题，恢复应该更快地完成。

        价值`--num切片`它不直接依赖于与硬件相关的值，例如CPU或CPU内核的数量、RAM的数量等，也不依赖于LDM的数量。

        作为同一恢复的一部分，可以在不同的数据节点上为该选项使用不同的值；这样做本身不应产生任何不良影响。

-   [](<>) `--平行性`=*`#`*, `-p`

    [](<>)[](<>)

    | 命令行格式 | `--平行性=#` |
    | ----- | --------- |
    | 类型 | 数字的 |
    | 默认值 | `128` |
    | 最小值 | `1.` |
    | 最大值 | `1024` |

    [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)使用单行事务同时应用多行。此参数确定实例执行的并行事务（并发行）的数量[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)尝试使用。默认情况下，这是128；最小值为1，最大值为1024。

    执行插入的工作在所涉及的数据节点中的线程之间是并行的。此机制用于从数据库恢复批量数据`数据`文件，即数据的模糊快照；它不用于构建或重建索引。连续应用变更日志；索引删除和生成是DDL操作，分别处理。还原的客户端没有线程级别的并行性。

-   [](<>) `--保留尾随空间`, `-P`

    [](<>)[](<>)

    | 命令行格式 | `--保留尾随空间` |
    | ----- | ---------- |

    将固定宽度字符数据类型升级为其可变宽度等效类型（即升级[`烧焦`](char.html)列值到[`瓦尔查尔`](char.html)，或`二进制的`列值到[`VARBINARY`](binary-varbinary.html)。否则，在将这些列值插入新列时，将从这些列值中删除任何尾随空格。

    笔记

    虽然你可以提升[`烧焦`](char.html)列到[`瓦尔查尔`](char.html)和`二进制的`列到[`VARBINARY`](binary-varbinary.html)，你不能晋升[`瓦尔查尔`](char.html)列到[`烧焦`](char.html)或[`VARBINARY`](binary-varbinary.html)列到`二进制的`.

-   [](<>) `--印刷品`

    [](<>)[](<>)

    | 命令行格式 | `--印刷品` |
    | ----- | ------- |

    原因[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)将所有数据、元数据和日志打印到`斯特杜特`.相当于使用[`--打印数据`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_print-data), [`--打印元`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_print-meta)和[`--打印日志`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_print-log)把选项放在一起。

    笔记

    使用`--印刷品`或者任何`--印刷品_*`选项实际上是在进行一次试运行。包含其中一个或多个选项会导致任何输出重定向到`斯特杜特`; 在这种情况下，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)不尝试将数据或元数据还原到NDB群集。

-   [](<>) `--打印数据`

    [](<>)[](<>)

    | 命令行格式 | `--打印数据` |
    | ----- | -------- |

    原因[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)将其输出导向`斯特杜特`.通常与一个或多个[`--标签`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_tab), [`--由`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_fields-enclosed-by), [`--字段可以选择用`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_fields-optionally-enclosed-by), [`--以结尾的字段`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_fields-terminated-by), [`--妖术`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_hex)和[`--附加`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_append).

    [`文本`](blob.html)和[`斑点`](blob.html)列值总是被截断的。这些值被截断为输出中的前256个字节。使用时，当前无法覆盖此选项`--打印数据`.

-   [](<>) `--打印默认值`

    [](<>)[](<>)

    | 命令行格式 | `--打印默认值` |
    | ----- | --------- |

    打印程序参数列表并退出。

-   [](<>) `--打印日志`

    [](<>)[](<>)

    | 命令行格式 | `--打印日志` |
    | ----- | -------- |

    原因[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)将其日志输出到`斯特杜特`.

-   [](<>) `--打印元`

    [](<>)[](<>)

    | 命令行格式 | `--打印元` |
    | ----- | ------- |

    将所有元数据打印到`斯特杜特`.

-   [](<>) `打印sql日志`

    [](<>)[](<>)

    | 命令行格式 | `--打印sql日志` |
    | ----- | ----------- |

    将SQL语句记录到`斯特杜特`.使用选项启用；通常情况下，这种行为是禁用的。该选项在尝试记录正在还原的所有表是否都显式定义了主键之前进行检查；对只包含由实现的隐藏主键的表的查询`NDB`无法转换为有效的SQL。

    此选项不适用于具有[`斑点`](blob.html)柱。

-   [](<>) `--进度频率`=*`N`*

    [](<>)[](<>)

    | 命令行格式 | `--进度频率=#` |
    | ----- | ---------- |
    | 类型 | 数字的 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `65535` |

    每次打印一份状态报告*`N`*备份过程中的秒数。0（默认值）导致不打印状态报告。最大值为65535。

-   [](<>) `--提升属性`, `-A`

    [](<>)[](<>)

    | 命令行格式 | `--提升属性` |
    | ----- | -------- |

    [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)支持有限的属性提升，与MySQL复制支持的方式基本相同；也就是说，从给定类型的列备份的数据通常可以使用“更大、类似”的类型恢复到列中。例如，来自`查尔（20）`列可以还原为声明为`瓦查尔（20）`, `瓦查尔（30岁）`或`查尔（30）`; 数据来自[`中微子`](integer-types.html)列可以还原为类型为的列[`国际的`](integer-types.html)或[`比金`](integer-types.html)看见[第17.5.1.9.2节，“具有不同数据类型的列的复制”](replication-features-differing-tables.html#replication-features-different-data-types)，用于属性升级当前支持的类型转换表。

    从NDB 8.0.26开始，该选项还可以恢复`非空`列为`无效的`.

    属性提升[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)必须明确启用，如下所示：

    1.  准备备份要还原到的表。[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)不能用于重新创建定义与原始定义不同的表；这意味着您必须手动创建表，或者更改要使用[`改变桌子`](alter-table.html)在还原表元数据之后但在还原数据之前。

    2.  援引[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)和[`--提升属性`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_promote-attributes)选项（缩写）`-A`)还原表数据时。如果不使用此选项，则不会进行属性提升；相反，还原操作失败并出现错误。

        在字符数据类型和`文本`或`斑点`，仅在字符类型之间进行转换([`烧焦`](char.html)和[`瓦尔查尔`](char.html))和二进制类型([`二进制的`](binary-varbinary.html)和[`VARBINARY`](binary-varbinary.html))可以同时执行。例如，您不能推广[`国际的`](integer-types.html)列到[`比金`](integer-types.html)在宣传`瓦尔查尔`列到`文本`以同样的方式[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html).

        转换[`文本`](blob.html)不支持使用不同字符集的列，并且明确禁止使用。

        将字符或二进制类型转换为`文本`或`斑点`具有[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)，您可能会注意到，它创建并使用一个或多个名为`*`表2\\u名称`*$ST*`节点id`*`。之后不需要这些表格，通常会被删除[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)在成功修复之后。

-   [](<>) `--重建索引`

    [](<>)[](<>)

    | 命令行格式 | `--重建索引` |
    | ----- | -------- |

    在还原本机索引时启用有序索引的多线程重建`NDB`备份用于按顺序构建索引的线程数[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)此选项由[`BuildIndexThreads`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-buildindexthreads)数据节点配置参数和LDM的数量。

    [](<>)

    只有在第一次运行时才需要使用此选项[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html); 这会导致在不使用`--重建索引`在恢复后续节点时再次执行此操作。在将新行插入数据库之前，应该使用此选项；否则，可能会插入一行，这在以后尝试重建索引时会导致唯一的约束冲突。

    默认情况下，有序索引的构建与LDM的数量并行。使用[`BuildIndexThreads`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-buildindexthreads)数据节点配置参数；此参数对删除和重建索引没有影响[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)，这是在线执行的。

    重建唯一索引使用磁盘写入带宽进行重做日志记录和本地检查点。此bandwith的数量不足可能会导致重做缓冲区过载或日志过载错误。在这种情况下，你可以跑步[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) `--重建索引`再一次该过程将在错误发生时继续。当遇到临时错误时，也可以这样做。你可以重复执行[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) `--重建索引`无限期地您可以通过降低[`--平行性`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_parallelism)。如果问题是空间不足，可以增加重做日志的大小([`碎片日志文件大小`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-fragmentlogfilesize)节点配置参数），也可以提高执行LCP的速度([`MaxDiskWriteSpeed`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxdiskwritespeed)和相关参数），以便更快地释放空间。

-   [](<>) `--重新映射列=*`分贝`*.*`tbl`*.*`上校`*:*`fn`*:*`阿格斯`*`

    [](<>)[](<>)

    | 命令行格式 | `--重新映射列=字符串` |
    | ----- | ------------- |
    | 介绍 | 8.0.21-ndb-8.0.21 |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    与…一起使用时[`--恢复数据`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_restore-data)，此选项将函数应用于所示列的值。下面列出了参数字符串中的值：

    -   *`分贝`*：数据库名称，在执行任何重命名之后[`--重写数据库`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_rewrite-database).

    -   *`tbl`*：表名。

    -   *`上校`*：要更新的列的名称。此列必须是[`国际的`](integer-types.html)或[`比金`](integer-types.html)。该列也可以是，但不要求是`未签名`.

    -   *`fn`*：函数名；目前，唯一受支持的名称是`抵消`.

    -   *`阿格斯`*：提供给函数的参数。目前，只有一个参数，即要添加的偏移量的大小`抵消`功能，是受支持的。支持负值。参数的大小不能超过列类型的带符号变量的大小；例如，如果*`上校`*是一个`国际的`列，然后是传递给`抵消`功能是`-2147483648`到`2147483647`（见[第11.1.2节，“整数类型（精确值）-整数、整数、SMALLINT、TINYINT、MEDIUMINT、BIGINT”](integer-types.html)).

        如果对列应用偏移量值会导致溢出或下溢，则还原操作将失败。例如，如果列是`比金`，并且该选项尝试在列值为4294967291的行上应用偏移值8，因为`4294967291 + 8 = 4294967299 > 4294967295`.

        当您希望使用NDB本机备份将存储在NDB群集的多个源实例（均使用相同的架构）中的数据合并到单个目标NDB群集时，此选项非常有用（请参阅[第23.6.8.2节，“使用NDB群集管理客户端创建备份”](mysql-cluster-backup-using-management-client.html))及[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)要合并数据，源集群之间的主键值和唯一键值重叠，作为过程的一部分，有必要将这些值重新映射到不重叠的范围。可能还需要保留表之间的其他关系。为了满足这些需求，可以在同一个调用中多次使用该选项[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)要重新映射不同表的列，如下所示：

    ```
    $> ndb_restore --restore-data --remap-column=hr.employee.id:offset:1000 \
        --remap-column=hr.manager.id:offset:1000 --remap-column=hr.firstaiders.id:offset:1000
    ```

    （也可使用此处未显示的其他选项。）

    `--重新映射列`也可用于更新同一表的多个列。多个表和列的组合是可能的。同一表格的不同列也可以使用不同的偏移值，如下所示：

    ```
    $> ndb_restore --restore-data --remap-column=hr.employee.salary:offset:10000 \
        --remap-column=hr.employee.hours:offset:-10
    ```

    当源备份包含不应合并的重复表时，可以使用[`--排除表`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-tables), [`--排除数据库`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-databases)，或通过应用程序中的其他方式。

    有关要合并的表的结构和其他特征的信息可以使用[`显示创建表`](show-create-table.html); 这个[**ndb\_描述**](mysql-cluster-programs-ndb-desc.html)工具和[`麦克斯（）`](aggregate-functions.html#function_max), [`MIN（）`](aggregate-functions.html#function_min), [`最后插入ID（）`](information-functions.html#function_last-insert-id)，以及其他MySQL函数。

    不支持在NDB群集的单独实例中复制从合并表到未合并表或从未合并表到合并表的更改。

-   [](<>) `--恢复数据`, `-r`

    [](<>)[](<>)

    | 命令行格式 | `--恢复数据` |
    | ----- | -------- |

    输出[`NDB`](mysql-cluster.html)表数据和日志。

-   [](<>) `--恢复纪元`, `-e`

    [](<>)[](<>)

    | 命令行格式 | `--恢复纪元` |
    | ----- | -------- |

    向群集复制状态表添加（或恢复）历元信息。这对于在NDB群集副本上启动复制非常有用。使用此选项时，中的行`mysql。ndb_应用_状态`有`0`在`身份证件`如果列已经存在，则更新该列；如果该行不存在，则插入该行。（见[第23.7.9节，“使用NDB群集复制的NDB群集备份”](mysql-cluster-replication-backups.html).)

-   [](<>) `--还原元`, `-m`

    [](<>)[](<>)

    | 命令行格式 | `--还原元` |
    | ----- | ------- |

    此选项会导致[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)印刷[`NDB`](mysql-cluster.html)表元数据。

    第一次运行[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)恢复程序中，还需要恢复元数据。换句话说，您必须重新创建数据库表，这可以通过使用`--还原元` (`-m`)选择权。只需在单个数据节点上恢复元数据；这足以将其恢复到整个集群。

    在旧版本的NDB Cluster中，使用此选项还原其架构的表使用的分区数与原始集群上相同，即使其数据节点数与新集群不同。在NDB 8.0中，当恢复元数据时，这不再是一个问题；[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)现在使用目标集群的默认分区数，除非本地data manager线程的数量也与原始集群中的数据节点的数量不同。

    在NDB 8.0中使用此选项时，建议通过设置禁用自动同步[`ndb_元数据_check=OFF`](mysql-cluster-options-variables.html#sysvar_ndb_metadata_check)直到[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)已完成恢复元数据，之后可以再次打开它以同步在NDB字典中新创建的对象。

    笔记

    在开始恢复备份时，群集应该有一个空数据库。（换句话说，您应该以[`--首字母`](mysql-cluster-programs-ndbd.html#option_ndbd_initial)在执行恢复之前。）

-   [](<>) `--还原特权表`

    [](<>)[](<>)

    | 命令行格式 | `--还原特权表` |
    | ----- | --------- |
    | 反对 | 8.0.16-ndb-8.0.16 |

    [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)默认情况下，不恢复NDB Cluster 8.0之前版本中创建的分布式MySQL特权表，该版本不支持NDB 7.6及更早版本中实现的分布式特权。此选项会导致[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)来恢复它们。

    在NDB 8.0中，此类表不用于访问控制；作为MySQL服务器升级过程的一部分，服务器会创建[`InnoDB`](innodb-storage-engine.html)这些表格的本地副本。有关更多信息，请参阅[第23.3.7节，“NDB集群升级和降级”](mysql-cluster-upgrade-downgrade.html)以及[第6.2.3节“拨款表”](grant-tables.html).

-   [](<>) `--重写数据库`=*`旧数据库，新数据库`*

    [](<>)[](<>)

    | 命令行格式 | `--重写数据库=字符串` |
    | ----- | ------------- |
    | 类型 | 一串 |
    | 默认值 | `没有一个` |

    通过此选项，可以恢复到与备份中使用的名称不同的数据库。例如，如果备份是由名为`产品`，可以将其包含的数据还原到名为`库存`，如图所示使用此选项（省略可能需要的任何其他选项）：

    ```
    $> ndb_restore --rewrite-database=product,inventory
    ```

    该选项可以在一次调用中多次使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)。因此，可以从名为`db1`到一个名为`db2`从一个名为`db3`给一个叫`db4`使用`--rewrite database=db1，db2——rewrite database=db3，db4`另外[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)选项可在多个事件之间使用`--重写数据库`.

    如果多人之间发生冲突`--重写数据库`最后的选择`--重写数据库`使用的选项（从左到右读取）才有效。例如，如果`--rewrite database=db1，db2——rewrite database=db1，db3`只使用了`--重写数据库=db1，db3`很荣幸，而且`--重写数据库=db1，db2`被忽略了。还可以从多个数据库恢复到单个数据库，以便`--rewrite database=db1，db3——rewrite database=db2，db3`从数据库中恢复所有表和数据`db1`和`db2`进入数据库`db3`.

    重要的

    使用从多个备份数据库恢复到单个目标数据库时`--重写数据库`，不检查表名或其他对象名之间的冲突，也不保证行的还原顺序。这意味着在这种情况下，行可能被覆盖，更新可能丢失。

-   [](<>) `--跳过损坏的对象`

    [](<>)[](<>)

    | 命令行格式 | `--跳过损坏的对象` |
    | ----- | ----------- |

    此选项会导致[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)在读取本机数据时忽略损坏的表[`NDB`](mysql-cluster.html)备份，并继续还原任何剩余的表（未损坏）。目前`--跳过损坏的对象`选项仅适用于缺少blob parts表的情况。

-   [](<>) `--跳过表格检查`, `-s`

    [](<>)[](<>)

    | 命令行格式 | `--跳过表格检查` |
    | ----- | ---------- |

    可以在不恢复表元数据的情况下恢复数据。默认情况下，在执行此操作时，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)如果在表数据和表架构之间发现不匹配，则失败并出错；此选项将覆盖该行为。

    使用恢复数据时列定义中不匹配的一些限制[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)放松；当遇到其中一种类型的不匹配时，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)不会像以前那样以错误停止，而是接受数据并将其插入目标表，同时向用户发出警告，说明正在执行此操作。无论两个选项中是否有一个选项，都会发生这种行为`--跳过表格检查`或[`--提升属性`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_promote-attributes)正在使用中。列定义中的这些差异有以下类型：

    -   不同的`列格式`背景(`固定的`, `动态`, `违约`)

    -   不同的`存储`背景(`记忆力`, `磁盘`)

    -   不同的默认值

    -   不同的分发密钥设置

-   [](<>) `--跳过未知对象`

    [](<>)[](<>)

    | 命令行格式 | `--跳过未知对象` |
    | ----- | ---------- |

    此选项会导致[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)在读取本机模式时忽略它无法识别的任何模式对象[`NDB`](mysql-cluster.html)备份这可用于将从运行（例如）NDB 7.6的群集进行的备份恢复到运行NDB cluster 7.5的群集。

-   [](<>) `--切片id`=*`#`*

    [](<>)[](<>)

    | 命令行格式 | `--切片id=#` |
    | ----- | ---------- |
    | 介绍 | 8.0.20-ndb-8.0.20 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `1023` |

    按片还原时，这是要还原的片的ID。此选项始终与[`--num切片`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_num-slices)，其值必须始终小于`--num切片`.

    有关更多信息，请参阅的说明[`--num切片`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_num-slices)本节其他部分。

-   [](<>) `--标签`=*`目录名`*, `-T` *`目录名`*

    [](<>)[](<>)

    | 命令行格式 | `--tab=路径` |
    | ----- | ---------- |
    | 类型 | 目录名 |

    原因[`--打印数据`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_print-data)要创建转储文件，每个表一个，每个文件都命名为`*`tbl\_名称`*.txt`。它需要文件保存目录的路径作为参数；使用`.`用于当前目录。

-   [](<>) `--用法`

    [](<>)[](<>)

    | 命令行格式 | `--用法` |
    | ----- | ------ |

    显示帮助文本并退出；等同于[`--救命`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_help).

-   [](<>) `--冗长的`=*`#`*

    [](<>)[](<>)

    | 命令行格式 | `--冗长的=#` |
    | ----- | --------- |
    | 类型 | 数字的 |
    | 默认值 | `1.` |
    | 最小值 | `0` |
    | 最大值 | `255` |

    设置输出的详细程度。最小值为0；最大值为255。默认值为1。

-   [](<>) `--版本`

    [](<>)[](<>)

    | 命令行格式 | `--版本` |
    | ----- | ------ |

    显示版本信息并退出。

-   [](<>) `--具有应用状态`

    [](<>)[](<>)

    | 命令行格式 | `--具有应用状态` |
    | ----- | ---------- |
    | 介绍 | 8.0.29-ndb-8.0.29 |

    从备份的`ndb_应用_状态`表（除了有`服务器id=0`，这是使用[`--恢复纪元`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_restore-epoch)).这个选项要求[`--恢复数据`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_restore-data)也可以使用。

    如果`ndb_应用_状态`backeup中的表已包含一行`服务器id=0`, [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) `--具有应用状态`删除它。因此，我们建议您使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) `--恢复纪元`调用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)和`--具有应用状态`选项你也可以使用`--恢复纪元`与最后一次调用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) `--具有应用状态`用于还原群集。

    有关更多信息，请参阅[ndb\_申请\_状态表](mysql-cluster-replication-schema.html#ndb-replication-ndb-apply-status).

[](<>)

此实用程序的典型选项如下所示：

```
ndb_restore [-c connection_string] -n node_id -b backup_id \
      [-m] -r --backup-path=/path/to/backup/files
```

通常，从NDB群集备份恢复时，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)至少需要[`--诺代德`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_nodeid)（简称：`-n`), [`--备份`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backupid)（简称：`-b`)，及[`--备份路径`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-path)选项。

这个`-c`选项用于指定一个连接字符串，该字符串告诉`ndb_恢复`在哪里可以找到群集管理服务器（请参阅[第23.4.3.3节，“NDB集群连接串”](mysql-cluster-connection-strings.html)).如果不使用此选项，则[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)尝试连接到上的管理服务器`本地主机：1186`。此实用程序充当群集API节点，因此需要一个空闲连接“插槽”来连接群集管理服务器。这意味着必须至少有一个`[api]`或`[mysqld]`它可以在群集中使用的部分`配置。伊尼`文件保持至少一个空的是个好主意`[api]`或`[mysqld]`部分`配置。伊尼`由于这个原因，MySQL服务器或其他应用程序没有使用它（请参阅[第23.4.3.7节，“定义NDB集群中的SQL和其他API节点”](mysql-cluster-api-definition.html)).

在NDB 8.0.22及更高版本中，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)可以使用[`--解密`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_decrypt)和[`--备份密码`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-password)。必须指定这两个选项才能执行解密。有关详细信息，请参阅文档[`启动备份`](mysql-cluster-backup-using-management-client.html)管理客户端命令，获取有关创建加密备份的信息。

你可以核实一下[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)通过使用连接到群集[`显示`](mysql-cluster-mgm-client-commands.html#ndbclient-show)指挥部[**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html)管理客户。您也可以通过系统外壳来实现这一点，如下所示：

```
$> ndb_mgm -e "SHOW"
```

**错误报告。** [](<>) [**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)报告临时和永久性错误。如果出现临时错误，它可能能够从中恢复，并报告`恢复成功，但遇到临时错误，请查看配置`在这种情况下。

重要的

使用后[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)要初始化NDB群集以用于循环复制，不会自动创建作为副本的SQL节点上的二进制日志，必须手动创建它们。要创建二进制日志，请发出[`展示桌子`](show-tables.html)运行之前在该SQL节点上的[`启动从机`](start-slave.html).这是NDB集群中的一个已知问题。
