5.7.2backup cluster命令

backup cluster [--backupid=backup_id]
    [--snapshotstart | --snapshotend]
    [--waitstarted | --waitcompleted]
    [--password-file=filepath]
    cluster_name

此命令创建名为 MySQL NDB Cluster 的备份 cluster_namebackup cluster只备份集群的 NDB表;使用其他 MySQL 存储引擎(例如 InnoDBMyISAM)的表将被忽略。

默认情况下,此命令使用ndb_mgmd分配和返回的备份 ID (有关更多信息,请参阅 使用 NDB 集群管理客户端创建备份backup_id中 的讨论 );您可以通过使用该选项 指定备份 ID 来覆盖此行为 。--backupid

--snapshotstart 选项使备份与备份开始时集群的状态相匹配。

--snapshotend 选项使备份在备份完成时反映集群的状态。如果未指定任何选项,则 MySQL Cluster Manager 客户端的行为就好像 --snapshotend已被使用一样。

使用该 --waitstarted 选项时,MySQL Cluster Manager 客户端会等到备份开始后才将控制权返回给用户,之后用户可以使用 show status命令和该--backup选项检查备份进程的状态。

使用该 --waitcompleted 选项时,MySQL Cluster Manager 客户端会等待备份过程完成,然后再将控制权返回给用户。如果既未 指定--waitstarted--waitcompleted未指定,则客户端的行为就好像 --waitcompleted 已被使用过一样。

mcm> backup cluster mycluster;
+-------------------------------+
| Command result                |
+-------------------------------+
| Backup completed successfully |
+-------------------------------+
1 row in set (33.50 sec)

您可以通过检查 的输出来验证备份是否已执行list backups,如下所示:

mcm> list backups mycluster;
+----------+--------+---------+----------------------+-------+---------+
| BackupId | NodeId | Host    | Timestamp            | Parts | Comment |
+----------+--------+---------+----------------------+-------+---------+
| 1        | 1      | tonfisk | 2016-10-24 22:24:54Z | 1     |         |
| 1        | 2      | tonfisk | 2016-10-24 22:24:54Z | 1     |         |
| 2        | 1      | tonfisk | 2016-10-24 22:24:54Z | 1     |         |
| 2        | 2      | tonfisk | 2016-10-24 22:24:54Z | 1     |         |
+----------+--------+---------+----------------------+-------+---------+
4 rows in set (0.02 sec)

输出中的每一行代表一个备份 映像——即特定于给定数据节点上命名集群的给定备份的一组备份文件。Timestamp值采用 UTC。备份图像保存在文件夹 中,其中是一个集群参数。如果 不指定,则占用 的值 ,使图片存放在目录 中 。 BackupDataDir/BACKUP/BACKUP-IdBackupDataDirBackupDataDirDataDirDatadir/BACKUP/BACKUP-backup_id

通过删除此映像目录及其内容,可以从给定节点中删除不需要的备份。BACKUP 要完全删除给定的备份,您必须从每个数据节点的目录中删除相应的图像。只要备份或还原操作未在进行中,您就可以执行此操作。在删除图像之前不需要停止集群或 MySQL Cluster Manager 代理。

与和 BackupId一起使用 。 abort backuprestore cluster

对于 8.0.28 及更高版本: MySQL Cluster Manager 支持NDB使用 AES-256-CBC 创建本机加密集群备份。要创建加密备份,请使用该 --password-file 选项 提供包含密码的文件。 有关密码选择的限制,请参阅 使用 NDB Cluster Management Client 创建备份。密码文件必须满足以下要求:

  • 该文件必须存在于与 发出命令的客户端所连接 的mcmd代理 相同的主机上。backup cluster

  • 相对文件路径被认为是相对于最后一个项目符号中提到 的mcmd代理的工作目录。

  • 在类 Unix 平台上,文件只能由文件所有者读写;在 Windows 平台上,Everyone 组不应读取它。

NDB 表元数据的逻辑备份

为了在恢复期间为集群重新配置提供更大的灵活性,该backup cluster 命令还为集群中 NDB 表的元数据创建逻辑备份。将 --all选项与list backups命令一起使用以列出所有备份,包括 NDB 表元数据的逻辑备份,这些备份由注释 Schema标记:

mcm> list backups --all newcluster;
+----------+--------+---------+----------------------+------+---------+
| BackupId | NodeId | Host    | Timestamp            | Part | Comment |
+----------+--------+---------+----------------------+------+---------+
| 1        | 1      | tonfisk | 2016-08-12 16:55:52Z | 1    |         |
| 1        | 2      | tonfisk | 2016-08-12 16:55:52Z | 1    |         |
| 1        | 3      | tonfisk | 2016-08-12 16:55:52Z | 1    |         |
| 1        | 4      | tonfisk | 2016-08-12 16:55:52Z | 1    |         |
| 1        | 50     | tonfisk | 2016-08-12 16:55:55Z |      | Schema  |
+----------+--------+---------+----------------------+------+---------+
5 rows in set (0.02 sec)

逻辑备份是使用 mysqldump实用程序创建的。备份以文件 扩展名保存,可在文件夹中找到 ,其中(注意名称是小写的)是一个mysqld参数,仅用于指定由 MySQL Cluster Manager 创建的逻辑备份的位置。如果在mcm客户端使用命令 不指定,则使用默认值 ,这样逻辑备份保存在文件夹中 。 BACKUP-BackupID.mysql_nodeid.schema.sqlbackupdatadir/BACKUP/BACKUP-idbackupdatadirbackupdatadirset/mcm_data_repository/clusters/clustername/mysqld_nodeid//mcm_data_repository/clusters/clustername/mysqld_nodeid/BACKUP/BACKUP-Id

以下限制适用于为 NDB 表元数据创建逻辑备份:

  • 至少一个mysqld节点必须在集群上运行才能执行逻辑备份

  • 没有为任何未运行 的mysqld节点 创建备份。

  • 不备份非 NDB 表的元数据。

  • 逻辑备份不是正确的时间点备份——当备份过程在集群上运行时,不应在集群上执行 DDL 操作,否则备份的元数据将与备份的数据不一致。

NDB 表元数据的备份有助于将数据从集群恢复到具有不同配置的另一个集群(例如,当要恢复的目标集群具有不同数量的数据节点时);有关某些用例 ,请参阅 第 4.6.2.4 节“部分恢复 - 添加的数据节点”第 4.6.2.5 节“将备份恢复到具有较少数据节点的集群” 。