4.7.2backup cluster命令

backup cluster [--backupid=backup_id]
    [--snapshotstart | --snapshotend]
    [--waitstarted | --waitcompleted]
    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            | Comment |
+----------+--------+---------+----------------------+---------+
| 1        | 1      | tonfisk | 2016-10-24 22:24:54Z |         |
| 1        | 2      | tonfisk | 2016-10-24 22:24:54Z |         |
| 2        | 1      | tonfisk | 2016-10-24 22:24:54Z |         |
| 2        | 2      | tonfisk | 2016-10-24 22:24:54Z |         |
+----------+--------+---------+----------------------+---------+
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

NDB 表元数据的逻辑备份

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

mcm> list backups --all newcluster;
+----------+--------+---------+----------------------+---------+
| BackupId | NodeId | Host    | Timestamp            | Comment |
+----------+--------+---------+----------------------+---------+
| 1        | 1      | tonfisk | 2016-08-12 16:55:52Z |         |
| 1        | 2      | tonfisk | 2016-08-12 16:55:52Z |         |
| 1        | 3      | tonfisk | 2016-08-12 16:55:52Z |         |
| 1        | 4      | tonfisk | 2016-08-12 16:55:52Z |         |
| 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 表元数据创建逻辑备份:

  • At least one mysqld node must be running on the cluster for the logical backup to be performed

  • No backup was created for any mysqld node that was not running.

  • Metadata for non-NDB tables are not backed up.

  • The logical backup is NOT a proper point-in-time backup—no DDL operations should be performed on the cluster when the backup process is running on the cluster, or the backed-up metadata will become inconsistent with the backed-up data.

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