#### 23.6.8.2 使用 NDB Cluster Management Client 创建备份

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

在开始备份之前，请确保已正确配置集群以执行备份。（看[第 23.6.8.3 节，“NDB 集群备份的配置”](mysql-cluster-backup-configuration.html).)

[](<>)

这`开始备份`命令用于创建备份：

```
START BACKUP [backup_id]
    [encryption_option]
    [wait_option]
    [snapshot_option]

encryption_option:
ENCRYPT [PASSWORD=password]

password:
{'password_string' | "password_string"}

wait_option:
WAIT {STARTED | COMPLETED} | NOWAIT

snapshot_option:
SNAPSHOTSTART | SNAPSHOTEND
```

连续备份会自动按顺序识别，因此*`备份 ID`*，大于等于1的整数，可选；如果省略，则使用下一个可用值。如果一个现有的*`备份 ID`*使用值时，备份失败并显示错误备份失败：文件已存在。如果使用，则*`备份 ID`*必须遵循`开始备份`立即，在使用任何其他选项之前。

NDB 8.0.22 及更高版本支持使用创建加密备份`加密密码=*`密码`*`;这*`密码`*必须满足以下所有要求：

-   使用任何可打印的 ASCII 字符，除了`！`,`'`,`"`,`$`,`%`,`\`， 和`^`

-   长度不超过 256 个字符

-   用单引号或双引号括起来

    从 NDB 8.0.24 开始，`密码`子句可以省略*`加密选项`*.在这种情况下，管理客户端会提示用户输入密码。

    可以使用`密码`设置一个空密码（`''`要么`“”`)，但不建议这样做。

    可以使用以下任何命令对加密备份进行解密：

-   [**数据库\_恢复**](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)

-   [**ndbxfrm**](mysql-cluster-programs-ndbxfrm.html) [`--解密密码=*`密码`*`](mysql-cluster-programs-ndbxfrm.html#option_ndbxfrm_decrypt-password) *`输入文件`* *`输出文件`*

-   [**数据库\_打印\_备份\_文件**](mysql-cluster-programs-ndb-print-backup-file.html) `-P` *`密码`* *`文件名`*

    NDB 8.0.24 及更高版本支持此处列出的其他命令：

-   [**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--解密`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_decrypt) [`--backup-password-from-stdin`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-password-from-stdin)

-   [**ndbxfrm**](mysql-cluster-programs-ndbxfrm.html) [`--decrypt-password-from-stdin`](mysql-cluster-programs-ndbxfrm.html#option_ndbxfrm_decrypt-password-from-stdin) *`输入文件`* *`输出文件`*

-   [**数据库\_打印\_备份\_文件**](mysql-cluster-programs-ndb-print-backup-file.html) `--备份密码=*`密码`*` *`文件名`*

-   [**数据库\_打印\_备份\_文件**](mysql-cluster-programs-ndb-print-backup-file.html) [`--backup-password-from-stdin`](mysql-cluster-programs-ndb-print-backup-file.html#option_ndb_print_backup_file_backup-password-from-stdin) *`文件名`*

-   [**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html) [`--backup-password-from-stdin`](mysql-cluster-programs-ndb-mgm.html#option_ndb_mgm_backup-password-from-stdin) [`--执行“开始备份...”`](mysql-cluster-programs-ndb-mgm.html#option_ndb_mgm_execute)

    有关更多信息，例如可能需要的其他选项，请参阅这些程序的描述。

    这*`等待选项`*可用于确定控制权何时返回给管理客户端`开始备份`发出命令，如下表所示：

-   [](<>) [](<>)如果`现在等待`指定时，管理客户端会立即显示提示，如下所示：

    ```
    ndb_mgm> START BACKUP NOWAIT
    ndb_mgm>
    ```

    在这种情况下，即使在打印备份过程的进度信息时，也可以使用管理客户端。

-   [](<>) [](<>)和`等待开始`管理客户端等到备份开始后才将控制权返回给用户，如下所示：

    ```
    ndb_mgm> START BACKUP WAIT STARTED
    Waiting for started, this may take several minutes
    Node 2: Backup 3 started from node 1
    ndb_mgm>
    ```

-   [](<>) [](<>) **`等待完成`**导致管理客户端等到备份过程完成后再将控制权返回给用户。

`等待完成`是默认值。

[](<>) [](<>) [](<>) [](<>)一种*`快照选项`*可用于判断备份是否与集群状态匹配时`开始备份`已发布，或何时完成。`快照开始`使备份在备份开始时匹配集群的状态；`快照`使备份在备份完成时反映集群的状态。`快照`是默认值，并且与以前的 NDB Cluster 版本中的行为匹配。

笔记

如果您使用`快照开始`选项`开始备份`, 和[`压缩备份`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-compressedbackup)参数启用，只有数据和控制文件被压缩——日志文件不被压缩。

如果两者都是*`等待选项`*和一个*`快照选项`*被使用时，它们可以按任意顺序指定。例如，以下所有命令都是有效的，假设不存在以 4 作为 ID 的现有备份：

```
START BACKUP WAIT STARTED SNAPSHOTSTART
START BACKUP SNAPSHOTSTART WAIT STARTED
START BACKUP 4 WAIT COMPLETED SNAPSHOTSTART
START BACKUP SNAPSHOTEND WAIT COMPLETED
START BACKUP 4 NOWAIT SNAPSHOTSTART
```

创建备份的过程包括以下步骤：

1.  启动管理客户端（[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html))，如果它还没有运行。

2.  执行**`开始备份`**命令。这会产生几行输出，指示备份的进度，如下所示：

    ```
    ndb_mgm> START BACKUP
    Waiting for completed, this may take several minutes
    Node 2: Backup 1 started from node 1
    Node 2: Backup 1 started from node 1 completed
     StartGCP: 177 StopGCP: 180
     #Records: 7362 #LogRecords: 0
     Data: 453648 bytes Log: 0 bytes
    ndb_mgm>
    ```

3.  [](<>) [](<>)备份启动后，管理客户端会显示以下消息：

    ```
    Backup backup_id started from node node_id
    ```

    *`备份 ID`*是此特定备份的唯一标识符。此标识符保存在集群日志中（如果未另外配置）。*`node_id`*是与数据节点协调备份的管理服务器的标识符。在备份过程中，集群已经接收并处理了备份请求。这并不意味着备份已完成。此语句的示例如下所示：

    ```
    Node 2: Backup 1 started from node 1
    ```

4.  管理客户端通过类似这样的消息指示备份已开始：

    ```
    Backup backup_id started from node node_id completed
    ```

    与备份已开始的通知一样，*`备份 ID`*是此特定备份的唯一标识符，并且*`node_id`*是与数据节点协调备份的管理服务器的节点 ID。此输出附带其他信息，包括相关的全局检查点、备份的记录数和数据大小，如下所示：

    ```
    Node 2: Backup 1 started from node 1 completed
     StartGCP: 177 StopGCP: 180
     #Records: 7362 #LogRecords: 0
     Data: 453648 bytes Log: 0 bytes
    ```

    也可以通过调用从系统外壳执行备份[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)与`-e`要么[`- 执行`](mysql-cluster-programs-ndb-mgm.html#option_ndb_mgm_execute)选项，如本例所示：


```
$> ndb_mgm -e "START BACKUP 6 WAIT COMPLETED SNAPSHOTSTART"
```

使用时`开始备份`这样，您必须指定备份 ID。

默认情况下会在`备份`的子目录[`数据目录`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datadir)在每个数据节点上。这可以单独为一个或多个数据节点覆盖，也可以为集群中的所有集群数据节点覆盖。`配置文件`文件使用[`备份数据目录`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-backupdatadir)配置参数。为具有给定的备份创建的备份文件*`备份 ID`*存储在名为的子目录中`备份-*`备份 ID`*`在备份目录中。

[](<>)**取消备份。**要取消或中止正在进行的备份，请执行以下步骤：

1.  启动管理客户端。

2.  执行这个命令：

    ```
    ndb_mgm> ABORT BACKUP backup_id
    ```

    号码*`备份 ID`*是备份启动时管理客户端响应中包含的备份标识符（在消息中`备份 *`备份 ID`* 从节点开始 *`management_node_id`*`）。

3.  管理客户端确认中止请求`中止备份 *`备份 ID`* 已订购`.

    笔记

    此时，管理客户端还没有收到集群数据节点对这个请求的响应，备份实际上还没有被中止。

4.  中止备份后，管理客户端以类似于此处显示的方式报告此事实：

    ```
    Node 1: Backup 3 started from 5 has been aborted.
      Error: 1321 - Backup aborted by user request: Permanent error: User defined error
    Node 3: Backup 3 started from 5 has been aborted.
      Error: 1323 - 1323: Permanent error: Internal error
    Node 2: Backup 3 started from 5 has been aborted.
      Error: 1323 - 1323: Permanent error: Internal error
    Node 4: Backup 3 started from 5 has been aborted.
      Error: 1323 - 1323: Permanent error: Internal error
    ```

    在此示例中，我们展示了具有 4 个数据节点的集群的示例输出，其中要中止的备份的序列号为`3`, 集群管理客户端连接的管理节点有节点ID`5`.完成其在中止备份中的部分的第一个节点报告中止的原因是由于用户的请求。（其余节点报告备份由于未指定的内部错误而中止。）

    笔记

    不能保证集群节点响应`中止备份`以任何特定顺序命令。

    这`备份 *`备份 ID`* 从节点开始 *`management_node_id`* 已中止`消息表示备份已终止，并且与此备份相关的所有文件都已从集群文件系统中删除。

    也可以使用以下命令从系统 shell 中止正在进行的备份：


```
$> ndb_mgm -e "ABORT BACKUP backup_id"
```

笔记

如果没有具有该 ID 的备份*`备份 ID`*运行时`中止备份`发出，管理客户端没有响应，集群日志中也没有指示发送了无效的中止命令。
