MySQL 外壳 8.0  / 第 7 章 MySQL InnoDB 集群  /  7.1 InnoDB 集群要求

7.1 InnoDB 集群要求

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

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

    笔记

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

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

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

  • group_replication_tls_source不得设置为mysql_admin

  • 必须在要与 InnoDB Cluster 一起使用的任何实例上启用性能模式。

  • MySQL Shell 用于配置服务器以在 InnoDB Cluster 中使用的供应脚本需要访问 Python。在 Windows 上,MySQL Shell 包括 Python,不需要用户配置。在 Unix 上,Python 必须作为 shell 环境的一部分找到。要检查您的系统是否正确配置了 Python,请执行以下操作:

    $ /usr/bin/env python

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

  • 从 8.0.17 版本开始,实例必须 server_id在 InnoDB 集群中使用唯一性。当您使用该 操作时,如果集群 中的实例已使用该操作,则该操作将失败并出现错误。 Cluster.addInstance(instance)server_idinstance

  • 从 8.0.23 版本开始,实例应配置为使用并行复制应用程序。请参阅 第 7.5.6 节,“配置并行复制应用程序”

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

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