在安装生产环境 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_applier
和group_replication_recovery
)在被采用的复制组上是允许的。InnoDB 集群不支持在 AdminAPI 管理的通道之外手动配置异步复制通道。如果您要将现有的复制拓扑迁移到 InnoDB 集群部署,并且需要在设置过程中暂时跳过此验证,则可以在创建集群时使用force
选项来绕过它。group_replication_tls_source
必须不设置为mysql_admin
。您希望与 InnoDB 集群一起使用的任何实例都必须启用性能模式。
-
MySQL Shell 用于配置服务器以在 InnoDB 集群中使用的预配脚本需要访问 Python。在 Windows 上,MySQL Shell 包含 Python,无需用户配置。在 Unix 上,Python 必须作为 shell 环境的一部分被找到。要检查您的系统是否正确配置了 Python,请发出
$ /usr/bin/env python
如果 Python 解释器启动,则无需进一步操作。如果前面的命令失败,请在
/usr/bin/python
和您选择的 Python 二进制文件之间创建一个软链接。有关更多信息,请参阅 支持的语言。 实例在 InnoDB 集群内必须使用唯一的
server_id
。当您使用
操作时,如果Cluster
.addInstance(instance
)instance
的server_id
已被集群中的实例使用,则该操作将失败并出现错误。应将实例配置为使用并行复制应用器。请参阅 第 7.5.6 节,“配置并行复制应用器”。
在为 InnoDB 集群配置实例的过程中,将配置使用实例所需的绝大多数系统变量。但是 AdminAPI 不会配置
transaction_isolation
系统变量,这意味着它将默认设置为REPEATABLE READ
。这不会影响单主集群,但如果您使用的是多主集群,那么除非您的应用程序依赖于REPEATABLE READ
语义,否则我们建议使用READ COMMITTED
隔离级别。请参阅 组复制限制。实例的相关配置选项,尤其是组复制配置选项,必须位于单个选项文件中。InnoDB 集群仅支持服务器实例的单个选项文件,不支持使用
--defaults-extra-file
选项来指定其他选项文件。对于任何与实例的选项文件一起使用的 AdminAPI 操作,必须指定主文件。如果您想使用多个选项文件来配置与 InnoDB 集群无关的配置选项,则必须手动配置这些文件,确保在考虑多个选项文件的使用优先级规则的情况下正确更新这些文件,并确保与 InnoDB 集群相关的设置不会被未识别的额外选项文件中的选项错误覆盖。