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

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

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

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

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

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

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

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

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

    在 NDB 8.0 中创建的在 NDB 7.6 或更早版本中创建的表的备份,以及自升级到 NDB 8.0 以来未更改的表,应该可以恢复到旧版本的 NDB Cluster。

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

  • 多线程备份。 NDB在 NDB 8.0 中进行的多线程备份可以通过以下两种方式之一 恢复到运行早期版本的集群 :

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

  • NDB_STORED_USER 特权。 NDB_STORED_USER 权限仅在 NDB 8.0 中受支持。

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

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

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

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

    在 8.0 之前的 NDB 版本中创建的表使用 .frm文件作为其元数据。NDB 8.0中的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客户端中使用;这必须在进行备份之前完成。有关详细信息,请参阅 第 2.11.5 节“准备升级安装”

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

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