下面的两个部分提供了关于将本地NDB备份恢复到NDB集群的不同版本的信息。
此外,您应该咨询第21.2.7节,“升级和降级NDB集群”,用于在尝试将NDB备份恢复到运行不同版本NDB软件的集群时可能遇到的其他问题。
它也建议审查NDB Cluster 8.0有什么新功能, 也第2.11.3节,“MySQL 5.7的变化”NDB 8.0和以前版本的NDB集群之间的其他变化可能与你的特殊情况有关。
由于使用早期版本中不存在的功能,您可能会在恢复从后续NDB群集的备份时恢复到前一个的备份时遇到问题。以下列出了其中一些问题:
在NDB 8.0中创建的表默认使用
utf8mb4_ai_ci
字符集,在NDB 7.6和更早的版本中是不可用的,所以不能被ndb_restore来自这些早期版本之一的二进制文件。在这种情况下,有必要使用任何表来使用utf8mb4_ai_ci
以便在执行备份之前使用旧版本支持的字符集。由于MySQL Server和NDB句柄表元数据的变化,使用来自NDB 8.0.14或更高版本的包含包含的MySQL Server Binary创建或更改的表无法使用ndb_restore到NDB集群的早期版本。这些表的使用
.sdi
的旧版本不能理解的文件mysqld.。在NDB 8.0.14或更高版本中拍摄的备份在NDB 8.0.13或更早版本中创建,并且由于升级到NDB 8.0.14或更高版本而未更改,则应恢复到旧版本的NDB群集。
由于可以分别恢复元数据和表数据,因此在这种情况下可以从使用的转储恢复表模式,mysqldump,或通过执行必要的
创建表
语句,然后只导入表数据ndb_restore与——恢复数据
选项。在NDB 8.0.22及以后版本中创建的加密备份不能使用ndb_restore从NDB 8.0.21或更早。
这
ndb_stored_user.
在NDB 8.0.18之前不支持特权。NDB群集8.0.18及更高版本支持最多144个数据节点,而早期版本最多支持48个数据节点。看第21.4.24.2.1节,“恢复到比原来少的节点”,有关此不兼容导致问题的情况的信息。
通常,应该可以恢复使用ndb_mgm.客户开始备份
命令转换为新版本的NDB,前提是使用ndb_restore新版本附带的二进制文件。(可能使用旧版本的ndb_restore,但不建议这样做。)其他潜在的问题在这里列出:
从备份恢复元数据(
——restore-meta
选项),ndb_restore通常尝试完全重现捕获的表模式,就像备份时一样。在8.0.14之前的NDB版本中创建的表
.frm
文件的元数据。可以通过这些文件读取mysqld.在NDB 8.0.14及更高版本中,可以使用其中包含的信息来创建.sdi
MySQL数据字典在后续版本中使用的文件。在将较旧版本的NDB还原到更新的NDB时,可能无法利用较新的功能,例如HashMap分区,大量HashMap存储桶,读取备份和不同的分区布局。因此,可能最好恢复旧的模式使用,mysqldump和mysql客户端,允许NDB使用新的架构功能。
使用旧时态类型的表不支持小数秒(在MySQL 5.6.4和NDB 7.3.31之前使用)不能恢复到NDB 8.0使用ndb_restore。您可以使用
检查表
,然后将其升级为较新的时态列格式,如果需要,使用修复表
在mysql客户;这必须在备份之前完成。看为升级准备安装, 想要查询更多的信息。您还可以使用创建的转储来恢复这些表,mysqldump。
NDB 8.0不支持在NDB 7.6及之前创建的分布式授权表。这些表可以恢复到NDB 8.0集群中,但是它们对访问控制没有影响。