MySQL NDB 群集 API 开发人员指南  /  NDB 群集 API:概述和概念  /  NDB 群集 API 概述:版本兼容性

1.2 NDB 群集 API 概述:版本兼容性

NDB API 现在相当成熟,并且在最近的版本中几乎没有重大变化。如果发生此类变化,则会在受影响的对象和方法的文档中指明。

NDB API 应用程序的 API 版本由应用程序用来提供 NDB API 功能的 libndbclient 版本决定。由于需要支持滚动升级,因此我们针对多个版本(7.5 到 8.2)执行基本测试,包括旧 API 版本连接到新版本的数据节点,以及新 API 版本连接到旧版本的数据节点。我们不再对 NDB 7.5 之前的版本执行此类测试,因为这些版本不再在生产环境中维护或支持。

此外,在 NDB 8.0 中,已删除与 7.5 之前 API 版本的一些兼容性,但保留了与 7.5 和 7.6 版本的兼容性。

NDB 中添加新功能时,通常会以这样的方式完成:新功能包括检查当前连接的数据节点是否运行支持该功能的版本。这样做是为了防止在滚动升级期间,在集群完全升级到添加对该功能的支持之前意外使用该功能。

如果使用较新版本的 NDB API 的应用程序针对不支持该应用程序使用的新功能的较旧集群运行,则该应用程序在尝试使用该功能时会引发错误代码 4003 功能尚未实现。根据所涉及的新功能,可能会出现其他错误(请参阅 第 2.4.2 节“NDB 错误代码:按类型”)。

当使用旧版本 libndbclient 的应用程序连接到运行较新版本 NDB 的集群时,数据节点应该支持较旧的 API 调用,但也需要考虑其他因素。特别是,如果集群上的模式使用了旧 API 版本不支持的新功能,则操作可能会不太理想或引发错误。以下列出了一些示例:

  • 集群中有一些表使用 JSON 数据类型,这是 7.5 版本之前的 NDB 所不知道的

  • 集群使用一个或多个完全复制的表,这些表在 7.5 版本之前的 NDB 中不受支持

  • 集群包含使用生成列的表,这些表在 7.5 版本之前的 NDB 中不受支持

在线升级集群时(即,使用滚动重启),将保留现有的表模式,从而避免过早激活新的模式功能。当升级重新创建模式并恢复所有数据时,情况并非如此,因为默认情况下,新版本可能会使用新的模式功能。因此,最佳做法是在升级生产系统之前使用特定模式、操作和版本进行测试,以捕获将旧应用程序或 SQL 节点连接到运行较新版本 NDB 的集群时可能出现的任何问题。

有关编译 NDB API 和 MGM API 应用程序的一般要求的信息,请参阅 第 2.1.1.1 节“一般要求”