MySQL Shell 9.0  /  MySQL InnoDB ClusterSet  /  InnoDB ClusterSet 限制

8.2 InnoDB ClusterSet 限制

InnoDB ClusterSet 使用 InnoDB Cluster 技术,该技术反过来使用 Group Replication 技术。因此,这两个技术的限制也适用于与 InnoDB ClusterSet 一起使用的服务器实例。参见第 7.2 节,“InnoDB Cluster 限制”Group Replication 限制.

  • InnoDB ClusterSet 为了最大限度地提高灾难容错能力,优先考虑可用性而不是一致性。正常的复制延迟或网络分区可能意味着在主集群出现问题时,某些或所有副本集群与主集群不完全一致。在这些情况下,如果您触发紧急故障转移,任何未复制或不同的事务都有丢失的风险,并且只能手动恢复和协调(如果它们可以访问)。无法保证在紧急故障转移时数据会保留。

    如果您无法容忍在故障转移期间出现任何事务或数据丢失,请考虑使用单个 InnoDB 集群(其成员服务器部署在多个数据中心中),而不是将 InnoDB ClusterSet 作为您的解决方案。请记住,这种解决方案会对写入性能产生明显的影响,因为稳定的低延迟网络对于 InnoDB Cluster 成员服务器相互通信以就事务达成共识至关重要。

  • InnoDB ClusterSet 不会自动故障转移到副本集群。由于可能丢失事务,并且数据一致性没有保证,因此管理员必须做出并实施执行紧急故障转移的决定。如果原始主集群仍然在线,应尽快关闭它(只要可以联系到它)。

  • InnoDB ClusterSet 仅支持异步复制,不能使用半同步复制。

  • InnoDB ClusterSet 仅支持主和副本 InnoDB 集群实例的单主模式。不支持多主模式。

  • InnoDB ClusterSet 部署只能包含一个读写主集群。所有副本集群都是只读的。不允许使用具有多个主集群的活动-活动设置,因为在集群发生故障的情况下,无法保证数据一致性。

  • 一个 InnoDB 集群只能参与一个 InnoDB ClusterSet 部署。因此,每个 InnoDB ClusterSet 部署都为单个 InnoDB 集群提供可用性和灾难恢复解决方案。

  • 现有的 InnoDB 集群不能用作 InnoDB ClusterSet 部署中的副本集群。副本集群必须从单个服务器实例启动,作为新的 InnoDB 集群。可以使用作为 Group Replication 组一部分的服务器实例作为副本集群,但您必须首先完全结束 Group Replication 组,并注意任何可能影响 InnoDB ClusterSet 的自定义 Group Replication 设置。有关更多信息,请参见第 8.1 节,“InnoDB ClusterSet 要求”.

  • InnoDB ClusterSet 不支持使用运行 MySQL Server 5.7 的实例。