Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.6 NDB Cluster的管理  / 23.6.8 NDB Cluster 在线备份  /  23.6.8.2 使用 NDB Cluster Management Client 创建备份

23.6.8.2 使用 NDB Cluster Management Client 创建备份

在开始备份之前,请确保集群已正确配置以执行备份。(请参阅 第 23.6.8.3 节,“NDB Cluster 备份的配置”。)

START BACKUP命令用于创建备份,语法如下所示:

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

连续备份自动按顺序识别,所以backup_id大于等于 1 的整数是可选的;如果省略,则使用下一个可用值。如果使用现有 backup_id值,备份将失败并显示错误Backup failed: file already exists。如果使用, backup_id必须紧跟在START BACKUP关键字之后,在使用任何其他选项之前。

在 NDB 8.0.22 及更高版本中,START BACKUP 支持使用 . 必须满足以下所有要求 : ENCRYPT PASSWORD=passwordpassword

  • 使用任何可打印的 ASCII 字符,除了 !, ', ", $, %, \, 和 ^

  • 长度不超过 256 个字符

  • 被单引号或双引号括起来

使用时,每个数据节点写入的备份数据记录和日志文件使用从用户提供的派生密钥 和使​​用密钥派生函数(KDF)随机生成的盐加密,该派生函数采用 PBKDF2-SHA256 算法生成该文件的对称加密密钥。此函数具有此处显示的形式: ENCRYPT PASSWORD='password'password

key = KDF(random_salt, password)

然后使用如此生成的密钥使用 AES 256 CBC 内联加密备份数据,并采用对称加密来加密备份文件集(使用生成的密钥)。

笔记

NDB Cluster从不保存用户提供的密码或生成的加密密钥。

从 NDB 8.0.24 开始,PASSWORD可以从 encryption_option. 在这种情况下,管理客户端会提示用户输入密码。

可以使用PASSWORD设置空密码(''""),但不建议这样做。

可以使用以下任何命令解密加密备份:

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

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

wait_option用于确定在START BACKUP发出命令后控制权何时返回到管理客户端,如下表所示:

  • 如果NOWAIT指定,管理客户端会立即显示提示,如下所示:

    ndb_mgm> START BACKUP NOWAIT
    ndb_mgm>

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

  • 管理客户端在WAIT STARTED将控制权返回给用户之前等待备份开始,如下所示:

    ndb_mgm> START BACKUP WAIT STARTED
    Waiting for started, this may take several minutes
    Node 2: Backup 3 started from node 1
    ndb_mgm>
  • WAIT COMPLETED导致管理客户端在将控制权返回给用户之前等待备份过程完成。

WAIT COMPLETED是默认值。

Asnapshot_option可用于确定备份是否与START BACKUP发出时或完成时的集群状态匹配。SNAPSHOTSTART使备份与备份开始时集群的状态相匹配; SNAPSHOTEND使备份反映备份完成时集群的状态。 SNAPSHOTEND是默认的,并且匹配在以前的 NDB Cluster 版本中发现的行为。

笔记

如果您将SNAPSHOTSTART选项与 一起使用 START BACKUP,并且 CompressedBackup 启用了该参数,则仅压缩数据和控制文件——不压缩日志文件。

如果同时使用 await_option和 a snapshot_option,则可以按任一顺序指定它们。例如,假设不存在 ID 为 4 的现有备份,以下所有命令均有效:

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. 如果管理客户端 ( ndb_mgm ) 尚未运行,则启动它。

  2. 执行START BACKUP命令。这会产生几行指示备份进度的输出,如下所示:

    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

    backup_id是此特定备份的唯一标识符。这个标识符保存在集群日志中,如果它没有被配置的话。node_id是协调备份与数据节点的管理服务器的标识符。此时在备份过程中集群已经接收并处理了备份请求。这并不意味着备份已完成。此处显示了此语句的示例:

    Node 2: Backup 1 started from node 1
  4. 管理客户端用类似这样的消息表示备份已经开始:

    Backup backup_id started from node node_id completed

    与备份已开始通知的情况一样,backup_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

也可以通过使用 or选项调用ndb_mgm从系统 shell 执行备份,如本例所示: -e--execute

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

以这种方式使用START BACKUP时,必须指定备份ID。

集群备份默认创建 在每个数据节点上的BACKUP子目录中 。DataDir这可以单独覆盖一个或多个数据节点,或者 config.ini使用 BackupDataDir 配置参数覆盖文件中的所有集群数据节点。为具有给定备份的备份创建的备份文件backup_id存储在备份目录中命名的子目录 中。 BACKUP-backup_id

正在取消备份。  要取消或中止正在进行的备份,请执行以下步骤:

  1. 启动管理客户端。

  2. 执行此命令:

    ndb_mgm> ABORT BACKUP backup_id

    该编号backup_id是备份启动时管理客户端响应中包含的备份标识符(在消息中)。 Backup backup_id started from node management_node_id

  3. 管理客户端使用 确认中止请求 。 Abort of backup backup_id ordered

    笔记

    此时,管理客户端还没有收到集群数据节点对这个请求的响应,备份还没有真正中止。

  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。第一个完成中止备份工作的节点报告中止原因是用户请求。(其余节点报告备份由于未指定的内部错误而中止。)

    笔记

    无法保证集群节点以 ABORT BACKUP任何特定顺序响应命令。

    这些消息意味着备份已终止,并且与此备份相关的所有文件已从群集文件系统中删除。 Backup backup_id started from node management_node_id has been aborted

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

$> ndb_mgm -e "ABORT BACKUP backup_id"
笔记

如果在 发出backup_idan 时没有运行 ID 的备份ABORT BACKUP,则管理客户端不会做出响应,集群日志中也不会指示发送了无效的中止命令。