文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  使用 NDB Cluster 管理客户端创建备份

25.6.8.2 使用 NDB Cluster 管理客户端创建备份

在开始备份之前,请确保集群已正确配置以执行备份。(参见 第 25.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_id 必须紧随 START BACKUP 关键字之后,在使用任何其他选项之前。

START BACKUP 支持使用 ENCRYPT PASSWORD=password 创建加密备份。 password 必须满足以下所有要求

  • 使用任何可打印的 ASCII 字符,但以下字符除外:!'"$%\^

  • 长度不超过 256 个字符

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

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

key = KDF(random_salt, password)

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

注意

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

可以从 encryption_option 中省略 PASSWORD 选项。在这种情况下,管理客户端会提示用户输入密码。

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

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

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

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 是默认值。

可以使用 snapshot_option 来确定备份是与发出 START BACKUP 命令时还是完成备份时集群的状态匹配。SNAPSHOTSTART 会导致备份与备份开始时的集群状态匹配;SNAPSHOTEND 会导致备份反映备份完成时的集群状态。SNAPSHOTEND 是默认值,与以前 NDB Cluster 版本中的行为匹配。

注意

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

如果同时使用 wait_optionsnapshot_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

还可以通过系统 shell 执行备份,方法是使用 -e--execute 选项调用 ndb_mgm,例如

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

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

默认情况下,集群备份创建在每个数据节点上 DataDirBACKUP 子目录中。可以使用 BackupDataDir 配置参数在 config.ini 文件中为一个或多个数据节点单独覆盖此设置,或为所有集群数据节点覆盖此设置。为具有给定 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"
注意

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