4.7.4restore cluster命令

restore cluster
    {--backupid=|-I }backup_id
    [--disable-indexes|-x]
    [--disable-metadata|-M]
    [--epoch|-e]
    [--exclude-databases=db_name]
    [--exclude-intermediate-sql-tables]
    [--exclude-missing-columns]
    [--exclude-missing-tables]
    [--exclude-tables=db_name.tbl_name[,db_name.tbl_name][,...]]
    [--include-databases=db_name]
    [--include-tables=db_name.tbl_name[,db_name.tbl_name][,...]]
    [--lossy-conversions]
    [--no-binlog|-l]
    [--no-restore-disk-objects]
    [{--parallelism=|-p }#]
    [--privilege-tables|-P]
    [--progress-frequency]
    [--rewrite-database]
    [--skip-broken-objects]
    [{--skip-nodeid=|-s }id_list]
    [--skip-table-check]
    [--skip-unknown-objects]
    cluster_name

此命令将集群从具有指定备份 ID(--backupid选项;缩写:)的备份还原-I到名为 的 MySQL 集群 cluster_name。在其最简单的形式中,它可以如下所示使用,将命名的集群恢复 mycluster到备份 ID 为 3 的备份中保存的状态:

mcm> restore cluster --backupid=3 mycluster;
+--------------------------------+
| Command result                 |
+--------------------------------+
| Restore completed successfully |
+--------------------------------+
1 row in set (18.60 sec)

如果要将现有集群恢复到已知的良好状态,则必须先擦除所有现有数据。使用 停止集群 stop cluster,然后使用 选项重新启动它start cluster--initial这会导致数据节点文件系统被清除。(请注意,必须手动删除磁盘数据文件。)在此之后,您可以使用所需的备份恢复集群restore cluster

重要的

为了使用 恢复备份 restore cluster,集群在其配置中必须有一个未使用的槽用于ndbapi 进程。否则,该命令将失败并显示错误Unable to perform restore - no vacant ndbapi slots in config for cluster cluster_name。有关如何向集群添加空闲槽 的信息,请参阅 添加空闲进程。ndbapi

可以与此命令一起使用的其他选项包括:

--disable-indexes--disable-metadata。  要在恢复表数据时忽略索引,请使用--disable-indexes选项(缩写形式:) -x。这样做可以减少恢复大型数据集所需的时间,尤其是在使用许多索引的情况下。--disable-metadata同样,您可以使用选项(简称 :)在恢复过程中忽略元数据 -M

--epoch 当使用--epoch选项(缩写形式 -e:)时,纪元信息将恢复到 cluster 复制状态表(mysql.ndb_apply_status),这对于 NDB Cluster 复制中的副本很有用。

--exclude-databases--exclude-tables。  --exclude-databases使用选项和 防止一个或多个数据库或表被恢复--exclude-tables--exclude-databases获取不应恢复的一个或多个数据库的逗号分隔列表。 采用不应恢复--exclude-tables的一个或多个表(使用格式)的逗号分隔列表 。使用 or 时,只排除选项命名的那些数据库或表;所有其他数据库和表都已恢复。 database.table--exclude-databases--exclude-tables

--exclude-missing-columns 使用此选项时,restore cluster与在备份中找到的那些表的版本相比,忽略正在还原的表中丢失的任何列。

--exclude-missing-tables 使用此选项时,restore cluster忽略备份中未在目标数据库中找到的任何表。

--exclude-intermediate-sql-tables[=TRUE|FALSE] 执行ALTER TABLE 操作时,mysqld创建中间表(其名称以 为前缀 #sql-)。当 时TRUE,该 --exclude-intermediate-sql-tables选项会阻止restore cluster恢复此类操作可能遗留下来的此类表。这个选项是TRUE默认的。

--include-databases--include-tables。  分别使用--include-databases选项或 --include-tables仅恢复特定数据库或表的选项。 --include-databases接受要恢复的数据库的逗号分隔列表。 获取要恢复--include-tables的以逗号分隔的表列表( 格式)。当 使用或 时,只恢复那些以该选项命名的数据库或表;所有其他数据库和表都被排除在外 ,并且不会被恢复。 database.table--include-databases--include-tablesrestore cluster

--lossy-conversions 使用--lossy-conversions允许在从备份恢复数据时对列值进行有损转换(类型降级或符号更改)。除了一些例外,管理降级的规则与 MySQL 复制相同;有关属性降级当前支持的特定类型转换的信息, 请参阅 具有不同数据类型的列的复制。restore cluster报告它在每个属性和列的有损转换期间执行的任何数据截断。

--no-binlog --no-binlog选项(缩写形式 :)-l阻止集群中的任何 SQL 节点(mysqld进程)将恢复的数据写入其二进制日志。

--no-restore-disk-objects 该选项停止restore cluster恢复任何 MySQL 集群磁盘数据对象,例如表空间和日志文件组;有关这些对象的更多信息, 请参阅 NDB Cluster 磁盘数据表。

--parallelism=# --parallelism选项(缩写形式 :)设置命令尝试使用 的-p最大并行事务数。restore cluster默认值为 128;最大值为 1024,最小值为 1。

--privilege-tables --privilege-tables选项(缩写形式 -P:)导致恢复分布式授权所需的表(请参阅 使用共享授权表的分布式权限)。

--progress-frequency= N。  每秒将状态报告打印到mcm在 备份过程中 创建 N 的临时 stdout 转储文件中。0(默认值)导致不打印状态报告。最大值为 65535。 mcm_data/clusters/cluster_name/nodeid/tmp

--rewrite-database= old_dbname, new_dbname 此选项会导致 old_dbname备份中具有名称的数据库在名称下恢复new_dbname

--skip-nodeid --skip-nodeid选项(缩写形式 -s:)采用以逗号分隔的节点 ID 列表。列出其 ID 的节点可能包括数据节点、SQL 节点或两者。恢复过程会跳过具有这些 ID 的节点。

--skip-broken-objects 此选项导致restore cluster在读取备份时忽略损坏的表,并继续恢复任何剩余的表(未损坏的表)。目前,该 --skip-broken-objects选项仅在缺少 blob 部分表的情况下有效。

--skip-table-check 可以在不恢复表元数据的情况下恢复数据。这样做的默认行为是 restore cluster如果表数据与表模式不匹配则失败并报错;这可以使用--skip-table-check 选项覆盖。

--skip-unknown-objects 此选项会导致restore cluster在读取备份时忽略任何它无法识别的模式对象。这可用于恢复,例如,从较新版本的 MySQL Cluster 制作的备份到较旧版本。