以下两部分提供了关于将本机NDB备份恢复到不同版本的NDB集群的信息。
此外,你应该咨询23.2.7节“新开发银行集群升级和降级”,以解决在试图将NDB备份恢复到运行不同版本的NDB软件的集群时可能遇到的其他问题。
复习一下也是可取的NDB集群8.0有什么新特性,以及第2.11.4节“MySQL 8.0的更改”,以查看与您的具体情况相关的NDB集群8.0与之前版本之间的其他更改。
由于使用了早期版本中不存在的特性,您可能会在从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或更高版本中对8.0.13或更高版本中创建的表进行备份,且升级到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 Cluster 8.0.18及以上版本最多支持144个数据节点,较早版本最多支持48个数据节点。看到第23.4.23.2.1节“恢复到比原来更少的节点”,以获取有关这种不兼容导致问题的情况的信息。
方法创建的备份通常应该能够恢复ndb_mgm客户端开始备份
命令转换为新版本,前提是您使用ndb_restore新版本自带的二进制文件。的旧版本是可能的ndb_restore,但不建议这样做。)下面列出了其他可能的问题:
从备份恢复元数据时(
——restore-meta
选项),ndb_restore通常尝试重新生成捕获的表模式,与执行备份时完全相同。在8.0.14之前的NDB版本中创建的表
.frm
用于元数据的文件。可以读取这些文件mysqld在NDB 8.0.14及更高版本中,可以使用其中包含的信息创建.sdi
MySQL数据字典在后续版本中使用的文件。当将旧的备份恢复到新版本的NDB时,可能无法利用新特性,如hashmap分区、更多的hashmap桶数量、读备份和不同的分区布局。因此,可能更可取的方法是使用, mysqldump和mysql客户端,允许NDB使用新的模式特性。
使用不支持分数秒的旧时态类型的表(在MySQL 5.6.4和NDB 7.3.31之前使用)不能恢复到NDB 8.0ndb_restore.您可以使用
检查表
,然后将它们升级为较新的时态列格式,如有必要,使用修理表
在mysql客户端;这必须在进行备份之前完成。看到第2.11.5节“为升级准备安装”,以查询更多资料。还可以使用创建的转储来恢复这些表, mysqldump.
在NDB 7.6及更早版本中创建的分布式授权表在NDB 8.0中不支持。这些表可以恢复到NDB 8.0集群中,但对访问控制没有影响。