以下两节提供了关于将NDB本地备份恢复到与备份版本不同的NDB集群版本的信息。
此外,你应该咨询18.3.7节“NDB集群升级降级”,用于试图将NDB备份恢复到运行不同版本的NDB软件的集群时可能遇到的其他问题。
复习一下也是可取的NDB集群8.0有什么新特性,以及章节2.11.3,“MySQL 5.6的变化”,以了解NDB 8.0与以前的NDB集群版本之间可能与您的特定情况相关的其他更改。
当从NDB集群的新版本恢复到旧版本时,您可能会遇到问题,因为使用了旧版本中不存在的特性。下面列出了其中一些问题:
在NDB 8.0中创建的表默认使用
utf8mb4_ai_ci
字符集,在NDB 7.6及更早版本中是不可用的,因此不能被读取ndb_restore这些早期版本之一的二进制文件。在这种情况下,有必要修改使用的任何表utf8mb4_ai_ci
以便在执行备份之前使用旧版本支持的字符集。由于MySQL服务器和NDB处理表元数据的方式发生了变化,使用从NDB 8.0.14或更高版本包含的MySQL服务器二进制文件创建或修改的表不能使用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个数据节点。看到第18.5.22.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时,可能无法利用新特性,如哈希映射分区、更大数量的哈希映射桶、读备份和不同的分区布局。出于这个原因,使用, mysqldump和mysql客户端,允许NDB使用新的模式特性。
使用不支持小数秒的旧时态类型(在MySQL 5.6.4和NDB 7.3.31之前使用)的表无法恢复到NDB 8.0ndb_restore.您可以使用检查这些表
检查表
,然后将它们升级为较新的时态列格式,如有需要,可使用修理表
在mysql客户端;这必须在备份之前完成。看到准备升级安装,以获取更多资料。还可以使用创建的转储来恢复这些表, mysqldump.
NDB 8.0不支持在NDB 7.6及更早版本中创建的分布式授权表。这些表可以恢复到NDB 8.0集群中,但对访问控制没有影响。