## A.10 MySQL 8.0 常见问题解答：NDB 集群

[](<>)[](<>)[](<>)

在以下部分中，我们将回答有关 MySQL NDB Cluster 和[`新开发银行`](mysql-cluster.html)存储引擎。

[](<>)A.10.1。[哪些版本的 MySQL 软件支持 NDB Cluster？我必须从源代码编译吗？](faqs-mysql-cluster.html#faq-cluster-which-versions-support-cluster)A.10.2.[“NDB”和“NDBCLUSTER”是什么意思？](faqs-mysql-cluster.html#faq-cluster-what-is-ndb)A.10.3.[使用 NDB Cluster 与使用 MySQL Replication 有什么区别？](faqs-mysql-cluster.html#faq-cluster-what-cluster-vs-replication)A.10.4。[我需要任何特殊的网络来运行 NDB Cluster 吗？集群中的计算机如何通信？](faqs-mysql-cluster.html#faq-cluster-how-cluster-network-need)A.10.5。[我需要多少台计算机来运行 NDB Cluster，为什么？](faqs-mysql-cluster.html#faq-cluster-what-min-hosts-cluster)A.10.6。[NDB Cluster 中的不同计算机做了什么？](faqs-mysql-cluster.html#faq-cluster-what-hosts-do-clustering)A.10.7。[当我在 NDB Cluster 管理客户端中运行 SHOW 命令时，我看到一行如下所示的输出：](faqs-mysql-cluster.html#faq-cluster-what-show-nodegroup-star)A.10.8。[我可以在哪些操作系统上使用 NDB Cluster？](faqs-mysql-cluster.html#faq-cluster-which-os-clustering)A.10.9。[运行 NDB Cluster 的硬件要求是什么？](faqs-mysql-cluster.html#faq-cluster-what-cluster-requirements)A.10.10。[我需要多少 RAM 才能使用 NDB Cluster？是否可以完全使用磁盘内存？](faqs-mysql-cluster.html#faq-cluster-what-memory-needed-cluster)A.10.11。[我可以在 NDB Cluster 中使用哪些文件系统？网络文件系统或网络共享呢？](faqs-mysql-cluster.html#faq-cluster-what-cluster-file-systems)A.10.12。[我可以在虚拟机（例如由 VMWare、VirtualBox、Parallels 或 Xen 创建的那些）内运行 NDB Cluster 节点吗？](faqs-mysql-cluster.html#faq-cluster-can-cluster-vm)A.10.13。[我正在尝试填充 NDB Cluster 数据库。加载过程提前终止，我收到如下错误消息：](faqs-mysql-cluster.html#faq-cluster-why-error-1114)A.10.14。[NDB Cluster 使用 TCP/IP。这是否意味着我可以通过 Internet 在远程位置使用一个或多个节点来运行它？](faqs-mysql-cluster.html#faq-cluster-can-cluster-remote-network)A.10.15。[我是否必须学习新的编程或查询语言才能使用 NDB Cluster？](faqs-mysql-cluster.html#faq-cluster-what-language-needed-cluster)A.10.16。[NDB Cluster 支持哪些编程语言和 API？](faqs-mysql-cluster.html#faq-cluster-what-api-cluster-support)A.10.17。[NDB Cluster 是否包含任何管理工具？](faqs-mysql-cluster.html#faq-cluster-what-cluster-management-tools)A.10.18。[使用 NDB Cluster 时如何找出错误或警告消息的含义？](faqs-mysql-cluster.html#faq-cluster-what-cluster-errors-are)A.10.19。[NDB Cluster 事务安全吗？支持哪些隔离级别？](faqs-mysql-cluster.html#faq-cluster-is-cluster-transaction-safe)A.10.20。[NDB Cluster 支持哪些存储引擎？](faqs-mysql-cluster.html#faq-cluster-what-storage-engines-cluster)A.10.21。[如果发生灾难性故障（例如，整个城市断电而我的 UPS 发生故障），我会丢失所有数据吗？](faqs-mysql-cluster.html#faq-cluster-is-data-loss-no-power)A.10.22。[是否可以在 NDB Cluster 中使用 FULLTEXT 索引？](faqs-mysql-cluster.html#faq-cluster-can-cluster-fullindex)A.10.23。[我可以在一台计算机上运行多个节点吗？](faqs-mysql-cluster.html#faq-cluster-can-multinode-cluster-one-host)A.10.24。[我可以将数据节点添加到 NDB Cluster 而不重新启动它吗？](faqs-mysql-cluster.html#faq-cluster-how-add-nodes-no-restart)A.10.25。[使用 NDB Cluster 时我应该注意哪些限制？](faqs-mysql-cluster.html#faq-cluster-what-cluster-limitations)A.10.26。[NDB Cluster 是否支持外键？](faqs-mysql-cluster.html#faq-cluster-have-foreign-keys-cluster)A.10.27。[如何将现有的 MySQL 数据库导入 NDB Cluster？](faqs-mysql-cluster.html#faq-cluster-how-import-db-cluster)A.10.28。[NDB Cluster 节点如何相互通信？](faqs-mysql-cluster.html#faq-cluster-how-nodes-communicate)A.10.29。[什么是仲裁员？](faqs-mysql-cluster.html#faq-cluster-what-is-arbitrator)A.10.30。[NDB Cluster 支持哪些数据类型？](faqs-mysql-cluster.html#faq-cluster-what-types-cluster-support)A.10.31。[如何启动和停止 NDB Cluster？](faqs-mysql-cluster.html#faq-cluster-how-start-stop-cluster)A.10.32。[当 NDB Cluster 关闭时，NDB Cluster 数据会发生什么？](faqs-mysql-cluster.html#faq-cluster-what-shutdown-do-data)A.10.33。[为 NDB Cluster 拥有多个管理节点是个好主意吗？](faqs-mysql-cluster.html#faq-cluster-have-multiple-node-managers)A.10.34。[我可以在一个 NDB Cluster 中混合不同类型的硬件和操作系统吗？](faqs-mysql-cluster.html#faq-cluster-have-different-cluster-hosts)A.10.35。[我可以在单个主机上运行两个数据节点吗？两个 SQL 节点？](faqs-mysql-cluster.html#faq-cluster-have-multiple-nodes-one-host)A.10.36。[我可以在 NDB Cluster 中使用主机名吗？](faqs-mysql-cluster.html#faq-cluster-have-host-names-cluster)A.10.37。[NDB Cluster 是否支持 IPv6？](faqs-mysql-cluster.html#faq-cluster-have-ipv6-support-cluster)A.10.38。[如何处理具有多个 MySQL 服务器的 NDB Cluster 中的 MySQL 用户？](faqs-mysql-cluster.html#faq-cluster-have-multiple-users-servers-cluster)A.10.39。[如果其中一个 SQL 节点发生故障，我如何继续发送查询？](faqs-mysql-cluster.html#faq-cluster-how-continue-after-node-error)A.10.40。[如何备份和恢复 NDB Cluster？](faqs-mysql-cluster.html#faq-cluster-how-backup-restore-cluster)A.10.41。[什么是“天使过程”？](faqs-mysql-cluster.html#faq-cluster-what-angel-process)

| [](<>)[](<>)<br/><br/>**A.10.1。** | 哪些版本的 MySQL 软件支持 NDB Cluster？我必须从源代码编译吗？ |
| :-------------------------------- | :--------------------------------------- |
|  | 标准 MySQL Server 8.0 版本不支持 NDB Cluster。相反，MySQL NDB Cluster 作为单独的产品提供。可用的 NDB Cluster 发行系列包括以下内容：<br/><br/>* **NDB 集群 7.2。**此系列不再支持新部署或维护。NDB Cluster 7.2 的用户应尽快升级到更新的版本系列。我们建议新部署使用最新的 NDB Cluster 8.0 版本。<br/><br/>* **NDB 集群 7.3。**本系列是 NDB Cluster 以前的通用 (GA) 版本，仍可用于生产，但我们建议新部署使用最新的 NDB Cluster 8.0 版本。最新的 NDB Cluster 7.3 版本可以从<https://dev.mysql.com/downloads/cluster/>.<br/><br/>* **NDB 集群 7.4。**本系列是 NDB Cluster 以前的通用 (GA) 版本，仍可用于生产，但我们建议新部署使用最新的 NDB Cluster 8.0 版本。最新的 NDB Cluster 7.4 版本可以从<https://dev.mysql.com/downloads/cluster/>.<br/><br/>* **NDB 集群 7.5。**本系列是 NDB Cluster 以前的通用可用性 (GA) 版本，仍可用于生产，但我们建议新部署使用最新的 NDB Cluster 7.6 版本。最新的 NDB Cluster 7.5 版本可以从<https://dev.mysql.com/downloads/cluster/>.<br/><br/>* **NDB 集群 7.6。**本系列是 NDB Cluster 以前的通用 (GA) 版本，仍可用于生产，但我们建议新部署使用最新的 NDB Cluster 8.0 版本。最新的 NDB Cluster 7.6 版本可以从<https://dev.mysql.com/downloads/cluster/>.<br/><br/>* **NDB 集群 8.0。**本系列是 NDB Cluster 的最新通用 (GA) 版本，基于 8.0 版[`新开发银行`](mysql-cluster.html)存储引擎和 MySQL Server 8.0。NDB Cluster 8.0 可用于生产；用于生产的新部署应使用本系列中的最新 GA 版本，目前是 NDB Cluster 8.0.29。您可以从以下位置获取最新的 NDB Cluster 8.0 版本<https://dev.mysql.com/downloads/cluster/>.有关本系列中的新功能和其他重要更改的信息，请参阅[第 23.2.4 节，“NDB Cluster 中的新增功能”](mysql-cluster-what-is-new.html).<br/><br/>您可以从源代码获取和编译 NDB Cluster（请参阅[第 23.3.1.4 节，“在 Linux 上从源代码构建 NDB 集群”](mysql-cluster-install-linux-source.html)， 和[第 23.3.2.2 节，“在 Windows 上从源代码编译和安装 NDB Cluster”](mysql-cluster-install-windows-source.html))，但对于除最特殊情况外的所有情况，我们建议使用 Oracle 提供的适合您的操作平台和环境的以下安装程序之一：<br/><br/>*基于网络的[NDB 集群自动安装程序](mysql-cluster-installer.html)（适用于支持的所有平台`新开发银行`)<br/><br/>* Linux [二进制发布](mysql-cluster-install-linux-binary.html) (`压缩包`文件）<br/><br/>* Linux [RPM 包](mysql-cluster-install-linux-rpm.html)<br/><br/>* Linux [`.deb`文件](mysql-cluster-install-debian.html)<br/><br/>*视窗[二进制“免安装”版本](mysql-cluster-install-windows-binary.html)<br/><br/>*视窗[微星安装程序](mysql-installer.html)<br/><br/>安装包也可以从您平台的包管理系统中获得。<br/><br/>你可以判断你的 MySQL Server 是否有[`新开发银行`](mysql-cluster.html)支持使用其中一种语句`显示变量，如 'have_%'`, [`显示引擎`](show-engines.html)， 要么[`显示插件`](show-plugins.html). |
| [](<>)[](<>)<br/><br/>**A.10.2.** | “NDB”和“NDBCLUSTER”是什么意思？ |
|  | “新开发银行”代表“**ñ**网络**D**数据**b**ASE”。`新开发银行`和`NDBCLUSTER`都是支持 MySQL 集群支持的存储引擎的名称。`新开发银行`是首选，但任何一个名称都是正确的。 |
| [](<>)[](<>)<br/><br/>**A.10.3.** | 使用 NDB Cluster 与使用 MySQL Replication 有什么区别？ |
|  | 在传统的 MySQL 复制中，源 MySQL 服务器更新一个或多个副本。事务是按顺序提交的，缓慢的事务会导致副本滞后于源。这意味着如果源失败，则副本可能没有记录最后几个事务。如果交易安全引擎，例如[`InnoDB`](innodb-storage-engine.html)正在使用时，事务要么在副本上完成，要么根本不应用，但复制并不能保证源和副本上的所有数据始终保持一致。在 NDB Cluster 中，所有数据节点保持同步，任何一个数据节点提交的事务都会提交给所有数据节点。在数据节点发生故障的情况下，所有剩余的数据节点保持一致状态。<br/><br/>简而言之，标准 MySQL 复制是异步的，而 NDB Cluster 是同步的。<br/><br/>NDB Cluster 中也提供异步复制。NDB Cluster Replication（有时也称为“geo-replication”）包括在两个 NDB Cluster 之间复制以及从 NDB Cluster 复制到非 Cluster MySQL 服务器的能力。看[第 23.7 节，“NDB 集群复制”](mysql-cluster-replication.html). |
| [](<>)[](<>)<br/><br/>**A.10.4。** | 我需要任何特殊的网络来运行 NDB Cluster 吗？集群中的计算机如何通信？ |
|  | NDB Cluster 旨在用于高带宽环境，计算机使用 TCP/IP 连接。它的性能直接取决于集群计算机之间的连接速度。NDB Cluster 的最低连接要求包括典型的 100 兆以太网网络或等效网络。我们建议您尽可能使用千兆以太网。 |
| [](<>)[](<>)<br/><br/>**A.10.5。** | 我需要多少台计算机来运行 NDB Cluster，为什么？ |
|  | 运行一个可行的集群至少需要三台计算机。然而，最低*推荐的*NDB Cluster 中的计算机数量为四台：各一台运行管理节点和 SQL 节点，两台计算机用作数据节点。两个数据节点的目的是提供冗余；管理节点必须在单独的机器上运行，以保证在其中一个数据节点发生故障时继续提供仲裁服务。<br/><br/>为了提供更高的吞吐量和高可用性，您应该使用多个 SQL 节点（连接到集群的 MySQL 服务器）。也可以（尽管不是绝对必要）运行多个管理服务器。 |
| [](<>)[](<>)<br/><br/>**A.10.6。** | NDB Cluster 中的不同计算机做了什么？ |
|  | NDB Cluster 具有物理和逻辑组织，计算机是物理元素。集群的逻辑或功能元素称为节点，容纳集群节点的计算机有时称为集群主机。共有三种类型的节点，每种类型对应于集群中的特定角色。这些是：<br/><br/>* **管理节点。**该节点为整个集群提供管理服务，包括其他节点的启动、关闭、备份和配置数据。管理节点服务器被实现为应用程序[**数据库\_管理**](mysql-cluster-programs-ndb-mgmd.html);用于控制 NDB Cluster 的管理客户端是[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html).看[第 23.5.4 节，“ndb_mgmd — NDB 集群管理服务器守护进程”](mysql-cluster-programs-ndb-mgmd.html)， 和[第 23.5.5 节，“ndb_mgm — NDB 集群管理客户端”](mysql-cluster-programs-ndb-mgm.html), 有关这些程序的信息。<br/><br/>* **数据节点。**这种类型的节点存储和复制数据。数据节点功能由[`新开发银行`](mysql-cluster.html)数据节点进程[**ndbd**](mysql-cluster-programs-ndbd.html).有关详细信息，请参阅[第 23.5.1 节，“ndbd - NDB Cluster 数据节点守护程序”](mysql-cluster-programs-ndbd.html).<br/><br/>\***SQL 节点。**这只是 MySQL 服务器的一个实例（[**mysqld**](mysqld.html)) 是在支持的情况下构建的[`NDBCLUSTER`](mysql-cluster.html)存储引擎并从`--ndb-集群`启用引擎和`--ndb-连接字符串`选项以使其能够连接到 NDB Cluster 管理服务器。有关这些选项的更多信息，请参阅[第 23.4.3.9.1 节，“NDB 集群的 MySQL 服务器选项”](mysql-cluster-options-variables.html#mysql-cluster-program-options-mysqld).<br/><br/>笔记<br/><br/>API 节点是直接使用集群数据节点进行数据存储和检索的任何应用程序。因此，可以将 SQL 节点视为一种 API 节点，它使用 MySQL 服务器为集群提供 SQL 接口。您可以使用 NDB API 编写此类应用程序（不依赖于 MySQL 服务器），它为 NDB Cluster 数据提供直接的、面向对象的事务和扫描接口；看[NDB Cluster API 概述：NDB API](https://dev.mysql.com/doc/ndbapi/en/overview-ndb-api.html)， 了解更多信息。 |
| [](<>)[](<>)<br/><br/>**A.10.7。** | 当我运行`显示`在 NDB Cluster 管理客户端中的命令，我看到一行输出，如下所示：<br/><br/>`<br/>id=2 @10.100.10.32（版本：8.0.29-ndb-8.0.29 节点组：0，*）<br/>`<br/><br/>什么是`*`意思是？这个节点与其他节点有何不同？ |
|  | 最简单的答案是，“这不是您可以控制的事情，在任何情况下都无需担心，除非您是编写或分析 NDB Cluster 源代码的软件工程师”。<br/><br/>如果您对该答案不满意，这里有一个更长、更具技术性的版本：<br/><br/>NDB Cluster 中的许多机制需要数据节点之间的分布式协调。这些分布式算法和协议包括全局检查点、DDL（模式）更改和节点重启处理。为了使这种协调更简单，数据节点“选择”它们的一个作为领导者。没有面向用户的机制来影响此选择，这是完全自动的；它的事实*是*自动是 NDB Cluster 内部架构的关键部分。<br/><br/>当一个节点充当任何这些机制的“领导者”时，它通常是活动的协调点，其他节点充当“跟随者”，按照领导者的指示执行他们的部分活动。如果充当领导者的节点失败，则其余节点将选举新的领导者。由旧领导者协调的正在进行的任务可能会失败或由新领导者继续，这取决于所涉及的实际机制。<br/><br/>这些不同的机制和协议中的一些可能具有不同的领导节点，但通常为所有这些节点选择相同的领导节点。在输出中指示为领导者的节点[`显示`](mysql-cluster-mgm-client-commands.html#ndbclient-show)在管理客户端内部被称为[`信息和通信技术`](https://dev.mysql.com/doc/ndb-internals/en/ndb-internals-kernel-blocks-dbdict.html)经理，负责协调 DDL 和元数据活动。<br/><br/>NDB Cluster 的设计方式使得领导者的选择在集群本身之外没有明显的影响。例如，当前领导者的 CPU 或资源使用率并没有明显高于其他数据节点，并且领导者的故障对集群的影响不应与任何其他数据节点的故障有明显不同的影响。 |
| [](<>)[](<>)<br/><br/>**A.10.8。** | 我可以在哪些操作系统上使用 NDB Cluster？ |
|  | 大多数类 Unix 操作系统都支持 NDB Cluster。NDB Cluster 在 Microsoft Windows 操作系统的生产设置中也受支持。<br/><br/>有关在各种操作系统版本、操作系统发行版和硬件平台上为 NDB Cluster 提供的支持级别的更多详细信息，请参阅<https://www.mysql.com/support/supportedplatforms/cluster.html>. |
| [](<>)[](<>)<br/><br/>**A.10.9。** | 运行 NDB Cluster 的硬件要求是什么？ |
|  | NDB Cluster 应该在任何平台上运行[`新开发银行`](mysql-cluster.html)-启用的二进制文件可用。对于数据节点和 API 节点，更快的 CPU 和更多的内存可能会提高性能，并且 64 位 CPU 可能比 32 位处理器更有效。用于数据节点的机器上必须有足够的内存来保存每个节点的数据库份额（请参阅*我需要多少内存？*了解更多信息）。对于仅用于运行 NDB Cluster 管理服务器的计算机，要求最低；一台普通的台式电脑（或同等设备）通常足以完成这项任务。节点可以通过标准 TCP/IP 网络和硬件进行通信。他们还可以使用高速 SCI 协议；但是，使用 SCI 需要特殊的网络硬件和软件（参见[第 23.4.4 节，“在 NDB 集群中使用高速互连”](mysql-cluster-interconnects.html)）。 |
| [](<>)[](<>)<br/><br/>**A.10.10。** | 我需要多少 RAM 才能使用 NDB Cluster？是否可以完全使用磁盘内存？ |
|  | NDB Cluster 最初仅在内存中实现，但当前可用的所有版本还提供将 NDB Cluster 存储在磁盘上的能力。看[第 23.6.10 节，“NDB Cluster 磁盘数据表”](mysql-cluster-disk-data.html)， 了解更多信息。<br/><br/>对于内存`新开发银行`表，您可以使用以下公式粗略估计集群中每个数据节点需要多少 RAM：<br/><br/>`<br/>(SizeofDatabase × NumberOfReplicas × 1.1 ) / NumberOfDataNodes<br/>`<br/><br/>为了更准确地计算内存需求，需要为集群数据库中的每个表确定每行所需的存储空间（参见[第 11.7 节，“数据类型存储要求”](storage-requirements.html)，详情），并将其乘以行数。您还必须记住按如下方式考虑任何列索引：<br/><br/>*为一个创建的每个主键或哈希索引[`NDBCLUSTER`](mysql-cluster.html)表每条记录需要 21-25 个字节。这些索引使用`索引内存`.<br/><br/>*每个有序索引每条记录需要 10 个字节的存储空间，使用`数据存储器`.<br/><br/>*创建主键或唯一索引也会创建有序索引，除非该索引是使用`使用哈希`.换一种说法：<br/><br/>  *Cluster 表上的主键或唯一索引通常每条记录占用 31 到 35 个字节。<br/><br/>  *但是，如果创建主键或唯一索引`使用哈希`，那么每条记录只需要 21 到 25 个字节。<br/><br/>使用创建 NDB Cluster 表`使用哈希`对于所有主键和唯一索引，通常会导致表更新运行得更快——在某些情况下，比对表的更新快 20% 到 30%`使用哈希`未用于创建主键和唯一键。这是因为需要更少的内存（因为没有创建有序索引），并且必须使用更少的 CPU（因为必须读取和可能更新的索引更少）。但是，这也意味着必须通过其他方式来满足本来可以使用范围扫描的查询，这可能会导致选择速度变慢。<br/><br/>在计算集群内存需求时，您可能会发现有用的[**数据库\_大小.pl**](mysql-cluster-programs-ndb-size-pl.html)在最近的 MySQL 8.0 版本中可用的实用程序。此 Perl 脚本连接到当前（非集群）MySQL 数据库，并创建一个报告，说明该数据库在使用[`NDBCLUSTER`](mysql-cluster.html)存储引擎。有关详细信息，请参阅[第 23.5.28 节，“ndb_size.pl — NDBCLUSTER 大小需求估计器”](mysql-cluster-programs-ndb-size-pl.html).<br/><br/>特别重要的是要记住*每个 NDB Cluster 表都必须有一个主键\*。这[`新开发银行`](mysql-cluster.html)如果未定义主键，存储引擎会自动创建主键；创建此主键时没有`使用哈希`.<br/><br/>您可以使用在任何给定时间使用多少内存来存储 NDB Cluster 数据和索引`报告内存使用情况`命令在[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)客户;看[第 23.6.1 节，“NDB 集群管理客户端中的命令”](mysql-cluster-mgm-client-commands.html)， 了解更多信息。此外，当 80% 可用时，警告会写入集群日志[`数据存储器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datamemory)或（在 NDB 7.6 之前）[`索引内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-indexmemory)正在使用中，并在使用率达到 90%、99% 和 100% 时再次使用。 |
| [](<>)[](<>)<br/><br/>**A.10.11。** | 我可以在 NDB Cluster 中使用哪些文件系统？网络文件系统或网络共享呢？ |
|  | 通常，主机操作系统本机的任何文件系统都应该与 NDB Cluster 一起工作。如果您发现给定的文件系统与 NDB Cluster 一起工作得特别好（或不是特别好），我们邀请您在[NDB 集群论坛](https://forums.mysql.com/list.php?25).<br/><br/>对于Windows，我们建议您使用`NTFS`NDB集群的文件系统，就像我们对标准MySQL所做的一样。我们不使用`脂肪`或`VFAT`文件系统。因此，我们不建议将其用于MySQL或NDB群集。<br/><br/>NDB集群作为无共享解决方案实现；这背后的想法是，单个硬件的故障不应导致多个群集节点的故障，甚至可能不会导致整个群集的故障。因此，NDB群集不支持使用网络共享或网络文件系统。这也适用于共享存储设备，如SAN。 |
| [](<>)[](<>)<br/><br/>**A.10.12。** | 我可以在虚拟机（例如由VMWare、VirtualBox、Parallels或Xen创建的虚拟机）内运行NDB群集节点吗？ |
|  | NDB群集支持在虚拟机中使用。我们目前支持并测试使用[甲骨文虚拟机](http://www.oracle.com/technetwork/server-storage/vm/index.html).<br/><br/>一些NDB集群用户已经使用其他虚拟化产品成功部署了NDB集群；在这种情况下，Oracle可以提供NDB群集支持，但特定于虚拟环境的问题必须提交给该产品的供应商。 |
| [](<>)[](<>)<br/><br/>**A.10.13。** | 我正在尝试填充NDB群集数据库。加载过程提前终止，我收到如下错误消息：<br/><br/>`错误1114:表“my_cluster_table”已满`<br/><br/>为什么会这样？ |
|  | 原因很可能是您的设置没有为所有表数据和所有索引提供足够的RAM，*包括[`NDB`](mysql-cluster.html)存储引擎，并在表定义不包括主键定义时自动创建*.<br/><br/>还值得注意的是，所有数据节点都应该具有相同数量的RAM，因为集群中的任何数据节点都不能使用比任何单个数据节点可用的最小内存量更多的内存。例如，如果有四台计算机托管群集数据节点，其中三台有3GB的RAM可用于存储群集数据，而其余的数据节点只有1GB的RAM，那么每个数据节点最多可以为NDB群集数据和索引投入1GB的内存。<br/><br/>在某些情况下，在MySQL客户端应用程序中，即使在[**ndb\_米高梅-e“所有报告备忘录”**](mysql-cluster-programs-ndb-mgm.html)显示出显著的免费[`数据存储器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datamemory).你可以强迫[`NDB`](mysql-cluster.html)通过使用`最大排数`选择[`创建表格`](create-table.html).一般来说，设置`最大排数`将存储在表中的行数增加一倍就足够了。<br/><br/>出于类似的原因，有时也会遇到数据节点在数据负载较重的节点上重新启动的问题。这个[`MinFreePct`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-minfreepct)参数可以通过保留一部分（默认情况下为5%）来帮助解决此问题[`数据存储器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datamemory)和（NDB 7.6之前）[`索引记忆`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-indexmemory)用于重新启动。此保留内存不可用于存储[`NDB`](mysql-cluster.html)表格或数据。 |
| [](<>)[](<>)<br/><br/>**A.10.14。** | NDB集群使用TCP/IP。这是否意味着我可以在互联网上运行它，在远程位置有一个或多个节点？ |
|  | 它是*非常*群集不太可能在这种情况下可靠运行，因为NDB群集的设计和实施假设它将在保证专用高速连接的条件下运行，例如在使用100 Mbps或千兆以太网（最好是后者）的LAN设置中。我们既不测试也不保证其性能使用任何比这慢。<br/><br/>此外，必须记住，NDB集群中节点之间的通信不安全；它们既不加密，也不受任何其他保护机制的保护。群集最安全的配置是在防火墙后面的专用网络中，无法从外部直接访问任何群集数据或管理节点。（对于SQL节点，您应该采取与MySQL服务器的任何其他实例相同的预防措施。）有关更多信息，请参阅[第23.6.18节，“NDB群集安全问题”](mysql-cluster-security.html). |
| [](<>)[](<>)<br/><br/>**A.10.15。** | 使用NDB Cluster需要学习新的编程或查询语言吗？ |
|  | *不*。尽管使用了一些专用命令来管理和配置群集本身，但以下操作只需要标准（My）SQL语句：<br/><br/>*创建、更改和删除表<br/><br/>*插入、更新和删除表数据<br/><br/>\*创建、更改和删除主索引和唯一索引<br/><br/>设置NDB群集需要一些专门的配置参数和文件，请参阅[第23.4.3节，“NDB群集配置文件”](mysql-cluster-config-file.html)，以获取有关这些的信息。<br/><br/>NDB群集管理客户端中使用了几个简单的命令([**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html))用于启动和停止群集节点等任务。看见[第23.6.1节，“NDB群集管理客户端中的命令”](mysql-cluster-mgm-client-commands.html). |
| [](<>)[](<>)<br/><br/>**A.10.16。** | NDB集群支持哪些编程语言和API？ |
|  | NDB Cluster支持与标准MySQL服务器相同的编程API和语言，包括ODBC。Net、MySQL C API以及PHP、Perl和Python等流行脚本语言的众多驱动程序。使用这些API编写的NDB集群应用程序的行为与其他MySQL应用程序类似；它们将SQL语句传输到MySQL服务器（NDB Cluster是一个SQL节点），并接收包含数据行的响应。有关这些API的更多信息，请参阅[第29章，*连接器和API*](connectors-apis.html).<br/><br/>NDB集群还支持使用NDB API的应用程序编程，它提供了NDB集群数据的低层C++接口，而不需要经过MySQL服务器。看见[NDB API](https://dev.mysql.com/doc/ndbapi/en/ndbapi.html).此外，许多[`NDBCLUSTER`](mysql-cluster.html)管理功能由C语言MGM API公开；看见[米高梅API](https://dev.mysql.com/doc/ndbapi/en/mgm-api.html)，以获取更多信息。<br/><br/>NDB Cluster还支持使用ClusterJ进行Java应用程序编程，ClusterJ支持使用会话和事务的域对象数据模型。看见[Java和NDB集群](https://dev.mysql.com/doc/ndbapi/en/mccj-overview-java.html)，以获取更多信息。<br/><br/>此外，NDB集群还支持`memcached`，允许开发人员使用`memcached`界面有关更多信息，请参阅[NDB群集的ndbmemcache Memcache API（不再受支持）](https://dev.mysql.com/doc/ndbapi/en/ndbmemcache.html).<br/><br/>NDB Cluster还包括支持NoSQL应用程序的适配器`节点。js`，以NDB集群作为数据存储。看见[用于JavaScript的MySQL NoSQL连接器](https://dev.mysql.com/doc/ndbapi/en/ndb-nodejs.html)，以获取更多信息。 |
| [](<>)[](<>)<br/><br/>**A.10.17。** | NDB集群是否包含任何管理工具？ |
|  | NDB集群包括一个用于执行基本管理功能的命令行客户端。看见[第23.5.5节，“ndb_mgm-NDB群集管理客户端“](mysql-cluster-programs-ndb-mgm.html)和[第23.6.1节，“NDB群集管理客户端中的命令”](mysql-cluster-mgm-client-commands.html).<br/><br/>MySQL Cluster Manager还支持NDB Cluster 7.6及更早版本，这是一款提供高级命令行界面的独立产品，可以自动执行许多NDB群集管理任务，如滚动重启和配置更改。从版本1.4.8开始，MySQL Cluster Manager还为NDB Cluster 8.0提供实验性支持。有关MySQL群集管理器的更多信息，请参阅[MySQL Cluster Manager 1.4.8用户手册](https://dev.mysql.com/doc/mysql-cluster-manager/1.4/en/).<br/><br/>NDB Cluster还提供了一个基于浏览器的图形化自动安装程序，用于设置和部署NDB Cluster，作为NDB Cluster软件发行版的一部分。有关更多信息，请参阅[NDB群集自动安装程序（NDB 7.5）（不再支持）](https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-auto.html). |
| [](<>)[](<>)<br/><br/>**A.10.18。** | 使用NDB Cluster时，如何找出错误或警告消息的含义？ |
|  | 有两种方法可以做到这一点：<br/><br/>*从内部[**mysql**](mysql.html)客户，使用**显示错误**或**显示警告**在收到错误或警告情况通知后立即。<br/><br/>*在系统shell提示符下，使用[**佩罗尔--ndb*`错误代码`***](perror.html). |
| [](<>)[](<>)<br/><br/>**A.10.19。** | NDB集群事务安全吗？支持哪些隔离级别？ |
|  | *对*。对于使用[`NDB`](mysql-cluster.html)存储引擎，支持事务。目前，NDB集群只支持[`阅读承诺`](innodb-transaction-isolation-levels.html#isolevel_read-committed)事务隔离级别。 |
| [](<>)[](<>)<br/><br/>**A.10.20。** | NDB群集支持哪些存储引擎？ |
|  | NDB集群需要[`NDB`](mysql-cluster.html)存储引擎。也就是说，为了在NDB集群中的节点之间共享表，必须使用`引擎=NDB`（或同等选项）`引擎=NDBCLUSTER`).<br/><br/>可以使用其他存储引擎（例如[`InnoDB`](innodb-storage-engine.html)或[`米萨姆`](myisam-storage-engine.html))在与NDB集群一起使用的MySQL服务器上，但是由于这些表不使用[`NDB`](mysql-cluster.html)，它们不参与聚类；每个这样的表都严格地位于创建它的MySQL服务器实例的本地。<br/><br/>NDB集群与[`InnoDB`](innodb-storage-engine.html)在架构、需求和实现方面进行集群；尽管两人的名字有任何相似之处，但并不兼容。有关`InnoDB`集群，请参见[MySQL AdminAPI](https://dev.mysql.com/doc/mysql-shell/8.0/en/admin-api-userguide.html).另见[第23.2.6节，“使用InnoDB的MySQL服务器与NDB集群的比较”](mysql-cluster-compared.html)，以获取有关`NDB`和`InnoDB`存储引擎。 |
| [](<>)[](<>)<br/><br/>**A.10.21。** | 如果发生灾难性故障，例如，整个城市都会断电*和*我的UPS故障我会丢失所有数据吗？ |
|  | 所有提交的事务都会被记录。因此，尽管发生灾难时可能会丢失一些数据，但这应该是非常有限的。通过最小化每个事务的操作数，可以进一步减少数据丢失。（无论如何，在每个事务中执行大量操作都不是一个好主意。） |
| [](<>)[](<>)<br/><br/>**A.10.22。** | 有可能使用`全文`具有NDB群集的索引？ |
|  | `全文`索引目前仅由[`InnoDB`](innodb-storage-engine.html)和[`米萨姆`](myisam-storage-engine.html)存储引擎。看见[第12.10节，“全文搜索功能”](fulltext-search.html)，以获取更多信息。 |
| [](<>)[](<>)<br/><br/>**A.10.23。** | 我可以在一台计算机上运行多个节点吗？ |
|  | 这是可能的，但并不总是可取的。运行集群的主要原因之一是提供冗余。为了充分利用这种冗余，每个节点都应该位于一台单独的机器上。如果在一台机器上放置多个节点，而该机器出现故障，则会丢失所有这些节点。因此，如果您在一台机器上运行多个数据节点，则它是*极其*重要的是，它们的设置方式应确保此机器的故障不会导致给定节点组中所有数据节点的丢失。<br/><br/>考虑到NDB Cluster可以在装载了低成本（甚至是无成本）操作系统的商品硬件上运行，因此为保护任务关键型数据而额外花费一两台机器是非常值得的。还值得注意的是，对运行管理节点的群集主机的要求很低。这项任务可以通过一个300 MHz Pentium或等效的CPU、足够的操作系统RAM，以及少量的系统开销来完成[**ndb\_管理节点**](mysql-cluster-programs-ndb-mgmd.html)和[**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html)过程。<br/><br/>在一台主机上运行多个群集数据节点是可以接受的，该主机具有多个CPU、内核或两者兼有。NDB Cluster发行版还提供了多线程版本的数据节点二进制文件，用于此类系统。有关更多信息，请参阅[第23.5.3节，“ndbmtd-NDB群集数据节点守护程序（多线程）”](mysql-cluster-programs-ndbmtd.html).<br/><br/>在某些情况下，还可以在同一台机器上同时运行数据节点和SQL节点；这种安排的执行情况取决于许多因素，如内核和CPU的数量，以及数据节点和SQL节点进程可用的磁盘和内存量，在规划这种配置时必须考虑这些因素。 |
| [](<>)[](<>)<br/><br/>**A.10.24。** | 我可以在不重新启动NDB群集的情况下将数据节点添加到NDB群集吗？ |
|  | 可以向正在运行的NDB群集添加新的数据节点，而无需使群集脱机。有关更多信息，请参阅[第23.6.7节，“在线添加NDB群集数据节点”](mysql-cluster-online-add-node.html).<br/><br/>对于其他类型的NDB群集节点，只需滚动重启即可（请参见[第23.6.5节，“执行NDB集群的滚动重启”](mysql-cluster-rolling-restart.html)). |
| [](<>)[](<>)<br/><br/>**A.10.25。** | 在使用NDB Cluster时，我应该注意哪些限制？ |
|  | 限制[`NDB`](mysql-cluster.html)MySQL NDB集群中的表包括：<br/><br/>*不支持临时表；A.[`创建临时表`](create-table.html)语句使用`引擎=NDB`或`引擎=NDBCLUSTER`由于一个错误而失败。<br/><br/>*唯一支持的用户定义分区类型[`NDBCLUSTER`](mysql-cluster.html)桌子是`钥匙`和`线性键`.试图创造一个`NDB`使用任何其他分区类型的表失败，并出现错误。<br/><br/>* `全文`不支持索引。<br/><br/>*不支持索引前缀。只能为完整的列编制索引。<br/><br/>*不支持空间索引（尽管可以使用空间列）。看见[第11.4节，“空间数据类型”](spatial-types.html).<br/><br/>*对部分事务和部分回滚的支持与其他事务存储引擎（如[`InnoDB`](innodb-storage-engine.html)这可以使个人陈述倒退。<br/><br/>*每个表允许的最大属性数为512。属性名称不能超过31个字符。对于每个表，表名和数据库名的最大组合长度为122个字符。<br/><br/>*在NDB 8.0之前，表行的最大大小为14 KB，不计算在内[`斑点`](blob.html)价值观在NDB 8.0中，这个最大值增加到30000字节。看见[第23.2.7.5节，“NDB集群中与数据库对象相关的限制”](mysql-cluster-limitations-database-objects.html)，以获取更多信息。<br/><br/>对于每行的行数没有设置限制`NDB`桌子表大小的限制取决于许多因素，尤其是每个数据节点可用的RAM量。<br/><br/>有关NDB集群中限制的完整列表，请参阅[第23.2.7节，“NDB集群的已知限制”](mysql-cluster-limitations.html).另见[第23.2.7.11节，“以前的NDB群集问题在NDB群集8.0中解决”](mysql-cluster-limitations-resolved.html). |
| [](<>)[](<>)<br/><br/>**A.10.26。** | NDB集群是否支持外键？ |
|  | NDB集群为外键约束提供了支持，这与[`InnoDB`](innodb-storage-engine.html)存储引擎；看见[第1.7.3.2节，“外键约束”](constraint-foreign-key.html)，以获取更详细的信息，以及[第13.1.20.5节，“外键约束”](create-table-foreign-keys.html)。需要外键支持的应用程序应使用NDB Cluster 7.3、7.4、7.5或更高版本。 |
| [](<>)[](<>)<br/><br/>**A.10.27。** | 如何将现有的MySQL数据库导入NDB集群？ |
|  | 您可以像使用任何其他版本的MySQL一样，将数据库导入NDB集群。除了本FAQ中其他地方提到的限制之外，唯一的其他特殊要求是，要包含在集群中的任何表都必须使用[`NDB`](mysql-cluster.html)存储引擎。这意味着必须使用`引擎=NDB`或`引擎=NDBCLUSTER`.<br/><br/>还可以将使用其他存储引擎的现有表转换为[`NDBCLUSTER`](mysql-cluster.html)使用一个或多个[`改变桌子`](alter-table.html)陈述但是，表的定义必须与[`NDBCLUSTER`](mysql-cluster.html)在进行转换之前存储引擎。在MySQL 8.0中，还需要额外的解决方法；看见[第23.2.7节，“NDB集群的已知限制”](mysql-cluster-limitations.html)，以获取详细信息。 |
| [](<>)[](<>)<br/><br/>**A.10.28。** | NDB集群节点如何相互通信？ |
|  | 集群节点可以通过三种不同的传输机制进行通信：TCP/IP、SHM（共享内存）和SCI（可伸缩一致性接口）。如果可用，默认情况下，在驻留在同一集群主机上的节点之间使用SHM；然而，这被认为是实验性的。SCI是一种用于构建可扩展多处理器系统的高速（每秒1千兆比特及以上）高可用性协议；它需要特殊的硬件和驱动程序。看见[第23.4.4节，“使用NDB集群的高速互连”](mysql-cluster-interconnects.html)，了解有关使用SCI作为NDB群集传输机制的更多信息。 |
| [](<>)[](<>)<br/><br/>**A.10.29。** | 什么是仲裁员？ |
|  | 如果集群中的一个或多个数据节点出现故障，则可能并非所有集群数据节点都能够“看到”彼此。事实上，在网络分区中，两组数据节点可能会相互隔离，这也被称为“大脑分裂”场景。这种情况是不可取的，因为每组数据节点都试图表现得像整个集群一样。仲裁员需要在相互竞争的数据节点集之间做出决定。<br/><br/>当至少一个节点组中的所有数据节点都处于活动状态时，网络分区不是问题，因为集群的任何一个子集都不能单独形成功能集群。当没有一个节点组的所有节点都处于活动状态时，真正的问题就出现了，在这种情况下，网络划分（即“大脑分裂”场景）成为可能。然后需要一名仲裁员。所有集群节点都将同一节点识别为仲裁器，仲裁器通常是管理服务器；但是，可以将集群中的任何MySQL服务器配置为充当仲裁器。仲裁器接受第一组集群节点与之联系，并通知剩余的一组节点关闭。仲裁员的选择由`仲裁级别`MySQL服务器和管理服务器节点的配置参数。你也可以使用`仲裁级别`用于控制仲裁员选择过程的配置参数。有关这些参数的更多信息，请参见[第23.4.3.5节，“定义NDB群集管理服务器”](mysql-cluster-mgm-definition.html).<br/><br/>仲裁员的角色本身不会对如此指定的主机施加任何繁重的要求，因此仲裁员主机不需要特别快，也不需要特别为此目的拥有额外的内存。 |
| [](<>)[](<>)<br/><br/>**A.10.30。** | NDB群集支持哪些数据类型？ |
|  | NDB集群支持所有常见的MySQL数据类型，包括与MySQL的空间扩展相关的数据类型；然而[`NDB`](mysql-cluster.html)存储引擎不支持空间索引。（空间索引仅由[`米萨姆`](myisam-storage-engine.html); 看见[第11.4节，“空间数据类型”](spatial-types.html)，以获取更多信息。）此外，在与一起使用时，在索引方面也存在一些差异[`NDB`](mysql-cluster.html)桌子。<br/><br/>笔记<br/><br/>NDB群集磁盘数据表（即使用`表空间。。。存储磁盘引擎=NDB`或`表空间。。。存储磁盘引擎=NDBCLUSTER`)只有固定宽度的行。这意味着（例如）每个磁盘数据表记录都包含一个[`瓦查尔（255）`](char.html)列需要255个字符的空间（如表中使用的字符集和排序规则所需），而不考虑其中存储的实际字符数。<br/><br/>看见[第23.2.7节，“NDB集群的已知限制”](mysql-cluster-limitations.html)，以获取有关这些问题的更多信息。 |
| [](<>)[](<>)<br/><br/>**A.10.31。** | 如何启动和停止NDB群集？ |
|  | 必须按照以下顺序分别启动群集中的每个节点：<br/><br/>1.使用[**ndb\_管理节点**](mysql-cluster-programs-ndb-mgmd.html)命令<br/><br/>你必须包括[`-f`](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_config-file)或[`--配置文件`](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_config-file)选项，告诉管理节点在哪里可以找到其配置文件。<br/><br/>2.使用[**ndbd**](mysql-cluster-programs-ndbd.html)命令<br/><br/>每个数据节点必须以[`-c`](mysql-cluster-programs-ndbd.html#option_ndbd_ndb-connectstring)或[`--ndb连接字符串`](mysql-cluster-programs-ndbd.html#option_ndbd_ndb-connectstring)选项，以便数据节点知道如何连接到管理服务器。<br/><br/>3.使用您喜欢的启动脚本启动每个MySQL服务器（SQL节点），例如[**mysqld\_安全**](mysqld-safe.html).<br/><br/>每个MySQL服务器都必须使用[`--ndbcluster`](mysql-cluster-options-variables.html#option_mysqld_ndbcluster)和[`--ndb连接字符串`](mysql-cluster-options-variables.html#option_mysqld_ndb-connectstring)选项。这些选项会导致[**mysqld**](mysqld.html)使能[`NDBCLUSTER`](mysql-cluster.html)存储引擎支持以及如何连接到管理服务器。<br/><br/>这些命令中的每一个都必须从包含受影响节点的机器上的系统外壳运行。（您不必亲自出现在机器上——远程登录外壳可用于此目的。）您可以通过启动[`NDB`](mysql-cluster.html)管理客户端[**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html)在包含管理节点并发布`显示`或`所有状态`命令<br/><br/>要关闭正在运行的群集，请发出以下命令`关闭`在管理客户端。或者，您可以在系统外壳中输入以下命令：<br/><br/>`<br/>$>ndb_mgm-e“关机”<br/>`<br/><br/>（本例中的引号是可选的，因为`-e`选项此外`关闭`命令与其他管理客户端命令一样，不区分大小写。）<br/><br/>这两个命令中的任何一个都会导致[**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html), [**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html)，以及任何[**ndbd**](mysql-cluster-programs-ndbd.html)进程优雅地终止。作为SQL节点运行的MySQL服务器可以使用[**关闭**](mysqladmin.html).<br/><br/>有关更多信息，请参阅[第23.6.1节，“NDB群集管理客户端中的命令”](mysql-cluster-mgm-client-commands.html)和[第23.3.6节，“NDB集群的安全关闭和重启”](mysql-cluster-install-shutdown-restart.html).<br/><br/>MySQL Cluster Manager和NDB Cluster自动安装程序提供了额外的方法来处理NDB群集节点的启动和停止。看见[MySQL Cluster Manager 1.4.8用户手册](https://dev.mysql.com/doc/mysql-cluster-manager/1.4/en/)和[第23.3.8节，“NDB群集自动安装程序（不再受支持）”](mysql-cluster-installer.html)，以获取有关这些工具的更多信息。 |
| [](<>)[](<>)<br/><br/>**A.10.32。** | 当NDB群集关闭时，NDB群集数据会发生什么变化？ |
|  | 集群的数据节点保存在内存中的数据被写入磁盘，并在下次集群启动时重新加载到内存中。 |
| [](<>)[](<>)<br/><br/>**A.10.33。** | 一个NDB集群有多个管理节点是个好主意吗？ |
|  | 它可以作为一个故障保险箱。在任何给定的时间，只有一个管理节点控制集群，但可以将一个管理节点配置为主管理节点，并在主管理节点出现故障时由一个或多个附加管理节点接管。<br/><br/>看见[第23.4.3节，“NDB群集配置文件”](mysql-cluster-config-file.html)，以获取有关如何配置NDB群集管理节点的信息。 |
| [](<>)[](<>)<br/><br/>**A.10.34。** | 我可以在一个NDB集群中混合使用不同种类的硬件和操作系统吗？ |
|  | 是的，只要所有的机器和操作系统都有相同的“endian”（都是大端或小端）。<br/><br/>也可以在不同节点上使用不同NDB集群版本的软件。但是，我们只支持将此类使用作为滚动升级过程的一部分（请参阅[第23.6.5节，“执行NDB集群的滚动重启”](mysql-cluster-rolling-restart.html)). |
| [](<>)[](<>)<br/><br/>**A.10.35。** | 我可以在一台主机上运行两个数据节点吗？两个SQL节点？ |
|  | 是的，这是可能的。对于多个数据节点，建议（但不是必需的）每个节点使用不同的数据目录。如果希望在一台计算机上运行多个SQL节点，则[**mysqld**](mysqld.html)必须使用不同的TCP/IP端口。<br/><br/>可以在同一台主机上同时运行数据节点和SQL节点，但您应该知道[**ndbd**](mysql-cluster-programs-ndbd.html)或[**ndbmtd**](mysql-cluster-programs-ndbmtd.html)进程可能会与其他进程竞争内存[**mysqld**](mysqld.html). |
| [](<>)[](<>)<br/><br/>**A.10.36。** | 我可以在NDB集群中使用主机名吗？ |
|  | 是的，可以对群集主机使用DNS和DHCP。但是，如果您的应用程序需要“五个9”的可用性，则应该使用固定（数字）IP地址，因为使群集主机之间的通信依赖于DNS和DHCP等服务会带来额外的潜在故障点。 |
| [](<>)[](<>)<br/><br/>**A.10.37。** | NDB集群是否支持IPv6？ |
|  | SQL节点（MySQL服务器）之间的连接支持IPv6，但所有其他类型的NDB群集节点之间的连接必须使用IPv4。<br/><br/>实际上，这意味着您可以使用IPv6在NDB群集之间进行复制，但同一NDB群集中的节点之间的连接必须使用IPv4。有关更多信息，请参阅[第23.7.3节，“NDB群集复制中的已知问题”](mysql-cluster-replication-issues.html). |
| [](<>)[](<>)<br/><br/>**A.10.38。** | 在拥有多个MySQL服务器的NDB集群中，我如何处理MySQL用户？ |
|  | MySQL用户帐户和权限通常不会在访问同一NDB群集的不同MySQL服务器之间自动传播。MySQL NDB Cluster使用[`NDB_存储用户`](privileges-provided.html#priv_ndb-stored-user)特权看见[使用共享授权表的分布式权限](https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-privilege-distribution.html)，以获取更多信息。您应该知道，此实现是NDB 8.0的新实现，与NDB Cluster早期版本中使用的共享权限机制不兼容，NDB 8.0不再支持该机制。 |
| [](<>)[](<>)<br/><br/>**A.10.39。** | 如果其中一个SQL节点出现故障，如何继续发送查询？ |
|  | MySQL NDB群集不提供SQL节点之间的任何自动故障切换。应用程序必须准备好处理SQL节点的丢失和它们之间的故障转移。 |
| [](<>)[](<>)<br/><br/>**A.10.40。** | 如何备份和恢复NDB群集？ |
|  | 您可以在NDB管理客户端和中使用NDB群集本机备份和恢复功能[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)程序看见[第23.6.8节，“NDB集群的在线备份”](mysql-cluster-backup.html)和[第23.5.23节，“ndb\_还原-还原NDB群集备份“](mysql-cluster-programs-ndb-restore.html).<br/><br/>您还可以使用中为此目的提供的传统功能[**mysqldump**](mysqldump.html)还有MySQL服务器。看见[第4.5.4节，“mysqldump-数据库备份程序”](mysqldump.html)，以获取更多信息。 |
| [](<>)[](<>)<br/><br/>**A.10.41。** | 什么是“天使过程”？ |
|  | 此进程监视并在必要时尝试重新启动数据节点进程。如果启动后检查系统上的活动进程列表[**ndbd**](mysql-cluster-programs-ndbd.html)，您可以看到实际上有两个进程以该名称运行，如图所示（我们省略了[**ndb\_管理节点**](mysql-cluster-programs-ndb-mgmd.html)和[**ndbd**](mysql-cluster-programs-ndbd.html)为了简洁起见）：<br/><br/>`<br/>$>/ndb_mgmd<br/><br/>$>ps aux | grep ndb<br/>me 23002 0.0 0 122948 3104？Ssl 14:14 0:00/ndb_mgmd<br/>me 23025 0.0 0.0 5284 820分/2秒+14:14 0:00 grep ndb<br/><br/>/ndbd-c 127.0.0.1——首字母<br/><br/>$>ps aux | grep ndb<br/>me 23002 0.0 0.0 123080 3356？Ssl 14:14 0:00/ndb_mgmd<br/>me 23096 0.0 0.0 35876 2036？Ss 14:14 0:00/ndbmtd-c 127.0.0.1——首字母<br/>me 23097 1.0 2.4 524116 91096？Sl 14:14 0:00/ndbmtd-c 127.0.0.1——首字母<br/>me 23168 0.0 0.0 5284 812分/2 R+14:15 0:00 grep ndb<br/>`<br/><br/>这个[**ndbd**](mysql-cluster-programs-ndbd.html)过程显示`0`对于内存和CPU的使用来说，angel进程（尽管它实际上只使用很少的内存和CPU）。这个过程只是检查主要的[**ndbd**](mysql-cluster-programs-ndbd.html)或[**ndbmtd**](mysql-cluster-programs-ndbmtd.html)进程（实际处理数据的主数据节点进程）正在运行。如果允许这样做（例如[`StopOnError`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-stoponerror)配置参数设置为`错误的`)，angel进程尝试重新启动主数据节点进程。 |
