Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.5 NDB 集群程序  / 23.5.23 ndb_restore — 恢复 NDB Cluster 备份  /  21.5.24.1 将 NDB 备份恢复到不同版本的 NDB Cluster

21.5.24.1 将 NDB 备份恢复到不同版本的 NDB Cluster

以下两节提供有关将本机 NDB 备份恢复到与备份所在版本不同的 NDB Cluster 版本的信息。

此外,您应该查阅 第 21.3.7 节,“升级和降级 NDB Cluster”,了解在尝试将 NDB 备份恢复到运行不同版本的 NDB 软件的集群时可能遇到的其他问题。

还建议查看 NDB Cluster 8.0 中的新增功能以及 第 2.11.3 节,“MySQL 5.7 中的更改”,了解 NDB 8.0 和之前版本的 NDB Cluster 之间可能与您的特定情况相关的其他更改。

21.5.24.1.1 将 NDB 备份恢复到以前版本的 NDB Cluster

由于使用了早期版本中不存在的功能,将从更高版本的 NDB Cluster 获取的备份恢复到先前版本时,您可能会遇到问题。此处列出了其中一些问题:

  • 默认情况下,在 NDB 8.0 中创建的表使用 utf8mb4_ai_ci字符集,这在 NDB 7.6 及更早版本中不可用,因此不能由这些早期版本之一的ndb_restore二进制文件读取。在这种情况下,有必要更改任何使用的表, utf8mb4_ai_ci以便它们在执行备份之前使用旧版本中支持的字符集。

  • 由于 MySQL 服务器和 NDB 处理表元数据的方式发生变化,使用 NDB 8.0.14 或更高版本中包含的 MySQL 服务器二进制文件创建或更改的表无法使用ndb_restore恢复 到早期版本的 NDB Cluster。这些表使用 旧版本的mysqld.sdi无法理解的文件。

    在 NDB 8.0.14 或更高版本中创建的表的备份,这些表是在 NDB 8.0.13 或更早版本中创建的,并且自升级到 NDB 8.0.14 或更高版本后未更改,应该可以恢复到旧版本的 NDB Cluster。

    由于可以分别恢复元数据和表数据,在这种情况下,您可以从使用 mysqldump生成的转储中恢复表模式,或者通过手动执行必要的语句,然后使用带 选项 的ndb_restoreCREATE TABLE 仅导入表数据。--restore-data

  • 在 NDB 8.0.22 及更高版本中创建的加密备份无法使用NDB 8.0.21或更早版本的 ndb_restore 恢复。

  • NDB_STORED_USER 在 NDB 8.0.18 之前不支持 该权限。

  • NDB Cluster 8.0.18 及之后的版本最多支持 144 个数据节点,而早期版本最多只支持 48 个数据节点。有关此不兼容性导致问题的情况的信息, 请参阅 第 21.5.24.2.1 节,“恢复到比原来更少的节点” 。

21.5.24.1.2 将 NDB 备份恢复到更高版本的 NDB Cluster

通常,应该可以将在旧版本 NDB 中使用ndb_mgm客户端 START BACKUP命令创建的备份恢复到新版本,前提是您使用新版本附带的ndb_restore二进制文件。(可能可以使用旧版本的ndb_restore,但不推荐这样做。)此处列出了其他潜在问题:

  • 从备份(--restore-meta 选项)恢复元数据时,ndb_restore通常会尝试完全按照备份时的原样重现捕获的表模式。

    在 8.0.14 之前的 NDB 版本中创建的表使用 .frm文件作为其元数据。NDB 8.0.14及以后版本的mysqld可以读取这些文件 ,可以使用其中包含的信息创建 .sdi以后版本的MySQL数据字典使用的文件。

  • 将较旧的备份恢复到较新版本的 NDB 时,可能无法利用较新的功能,例如 hashmap 分区、更多的 hashmap 桶、读取备份和不同的分区布局。出于这个原因,最好使用mysqldumpmysql客户端恢复旧模式,这允许 NDB 使用新模式功能。

  • 使用不支持小数秒的旧时间类型的表(在 MySQL 5.6.4 和 NDB 7.3.31 之前使用)无法使用 ndb_restore恢复到 NDB 8.0 。您可以使用 来检查此类表CHECK TABLE,然后将它们升级到更新的时间列格式,如有必要,REPAIR TABLEmysql客户端中使用;这必须在进行备份之前完成。有关详细信息,请参阅 准备安装以进行升级

    您还可以使用通过mysqldump创建的转储来恢复此类表。

  • NDB 8.0 不支持在 NDB 7.6 及更早版本中创建的分布式授权表。此类表可以恢复到 NDB 8.0 集群,但它们对访问控制没有影响。