MySQL Shell 9.0  /  MySQL InnoDB 集群  /  InnoDB 集群要求

7.1 InnoDB 集群要求

在安装 InnoDB 集群的生产部署之前,请确保您打算使用的服务器实例满足以下要求。

  • InnoDB 集群使用组复制,因此您的服务器实例必须满足相同的要求。 请参阅 组复制要求。 AdminAPI 提供了 dba.checkInstanceConfiguration() 方法来验证实例是否满足组复制要求,以及 dba.configureInstance() 方法来配置实例以满足要求。

    注意

    使用沙盒部署时,实例会自动配置为满足这些要求。

  • 与组复制一起使用的数据,以及与 InnoDB 集群一起使用的数据,必须存储在 InnoDB 事务性存储引擎中。 使用其他存储引擎,包括临时 MEMORY 存储引擎,可能会导致组复制出错。 在将实例与组复制和 InnoDB 集群一起使用之前,请将其他存储引擎中的任何表转换为使用 InnoDB。 您可以通过在服务器实例上设置 disabled_storage_engines 系统变量来防止使用其他存储引擎,例如

    disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
  • 设置集群时,任何服务器实例上都不能有入站复制通道。 由组复制自动创建的通道(group_replication_appliergroup_replication_recovery)允许在正在采用的复制组上使用。 除了使用 AdminAPI 管理的异步复制通道之外,InnoDB 集群不支持手动配置的异步复制通道。 如果您要将现有的复制拓扑迁移到 InnoDB 集群部署,并且需要在设置过程中暂时跳过此验证,则可以在创建集群时使用 force 选项来绕过它。

  • group_replication_tls_source 不能设置为 mysql_admin

  • 您要与 InnoDB 集群一起使用的任何实例上都必须启用性能模式。

  • MySQL Shell 用于配置服务器以在 InnoDB 集群中使用的配置脚本需要访问 Python。 在 Windows 上,MySQL Shell 包含 Python,不需要用户配置。 在 Unix 上,必须在 shell 环境中找到 Python。 要检查您的系统是否已正确配置 Python,请发出

    $ /usr/bin/env python

    如果 Python 解释器启动,则无需进一步操作。 如果先前的命令失败,请在 /usr/bin/python 和您选择的 Python 二进制文件之间创建一个软链接。 有关更多信息,请参阅 支持的语言

  • 实例必须在 InnoDB 集群中使用唯一的 server_id。 当您使用 Cluster.addInstance(instance) 操作时,如果集群中的实例已使用 instanceserver_id,则该操作将失败并显示错误。

  • 应将实例配置为使用并行复制应用器。 请参阅 第 7.5.6 节“配置并行复制应用器”

  • 在为 InnoDB 集群配置实例的过程中,将配置使用实例所需的大多数系统变量。 但是 AdminAPI 不会配置 transaction_isolation 系统变量,这意味着它默认为 REPEATABLE READ。 这不会影响单主集群,但是如果您使用的是多主集群,那么除非您在应用程序中依赖 REPEATABLE READ 语义,否则我们建议使用 READ COMMITTED 隔离级别。 请参阅 组复制限制

  • 实例的相关配置选项,尤其是组复制配置选项,必须位于单个选项文件中。 InnoDB 集群仅支持服务器实例的单个选项文件,并且不支持使用 --defaults-extra-file 选项来指定其他选项文件。 对于任何使用实例选项文件工作的 AdminAPI 操作,都必须指定主文件。 如果要对与 InnoDB 集群无关的配置选项使用多个选项文件,则必须手动配置文件,确保考虑到使用多个选项文件的优先级规则正确更新它们,并确保与 InnoDB 集群相关的设置不会被额外无法识别的选项文件中的选项错误覆盖。