21.1.6 使用 InnoDB 和 NDB 群集的 MySQL 服务器

MySQL Server 在存储引擎中提供了多种选择。由于NDBInnoDB都可以用作事务 MySQL 存储引擎,因此 MySQL Server 的用户有时会对 NDB Cluster 感兴趣。他们认为NDB是一种可能的选择,或升级到 MySQL 5.7 中默认的InnoDB存储引擎。尽管NDBInnoDB具有共同的 Feature,但是在体系结构和实现上存在差异,因此某些现有的 MySQL Server 应用程序和使用场景可能非常适合 NDB 群集,但并非全部。

在本节中,我们将讨论并比较 NDB 7.5 使用的NDB存储引擎和 MySQL 5.7 使用的InnoDB的某些特性。接下来的几节提供技术比较。在许多情况下,必须在考虑所有因素的情况下,根据具体情况决定何时何地使用 NDB Cluster。尽管为每种可能的使用情况提供详细信息超出了本文档的范围,但我们还尝试针对NDB而不是InnoDB后端的某些通用类型的应用程序的相对适用性提供一些非常一般的指导。

NDB Cluster 7.5 使用基于 MySQL 5.7 的mysqld,包括对InnoDB 1.1 的支持。尽管可以将InnoDBtable 与 NDB 群集一起使用,但此类 table 并未群集。也不能将 NDB Cluster 7.5 发行版中的程序或库与 MySQL Server 5.7 配合使用,反之亦然。

虽然确实可以在 NDB 群集或 MySQL 服务器(最有可能使用InnoDB存储引擎)上运行某些类型的通用业务应用程序,但是在体系结构和实现上还是存在一些重要差异。 第 21.1.6.1 节,“ NDB 和 InnoDB 存储引擎之间的差异”,提供了这些差异的摘要。由于差异,某些使用场景显然更适合一个引擎或另一个引擎;参见第 21.1.6.2 节“ NDB 和 InnoDB 工作负载”。反过来,这会对更适合与NDBInnoDB一起使用的应用程序类型产生影响。请参阅第 21.1.6.3 节“ NDB 和 InnoDB 功能使用摘要”,以比较每种类型在通用类型的数据库应用程序中使用的相对适用性。

有关NDBMEMORY存储引擎的相对 Feature 的信息,请参见何时使用 MEMORY 或 NDB 群集

有关 MySQL 存储引擎的更多信息,请参见第 15 章,备用存储引擎