【MySQL Shell】8.1 InnoDB ClusterSet 的要求

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

8.1 InnoDB ClusterSet 的要求

InnoDB ClusterSet 部署的基础是 MySQL 8.0.27 或更高版本的现有 InnoDB 集群Cluster 以及许多独立的 MySQL Server 实例这些实例可以形成副本集群Replica Cluster为该主集群提供容灾能力。如果您想试用 InnoDB ClusterSet 可以使用 MySQL Shell 8.0.27 或更高版本在本地机器上搭建沙盒部署。您需要安装 MySQL Server 8.0.27 或更高版本以及 MySQL Router 8.0.27 或者更高版本。使用 MySQLShell 中的 AdminAPI 命令您可以创建沙盒 MySQL Server 实例使用其中一些实例设置 InnoDB 集群然后按照本节中的说明使用其他实例作为副本集群设置 InnoDB ClusterSet 部署。有关部署和管理沙盒实例的说明请参阅 第 6.8 节 “ AdminAPI MySQL 沙盒”

重点
建议您始终使用最新版本的 MySQL Shell 。MySQL Shell 的最新版本可以与 MySQL 5.7 或 8.0 的任何 GA 版本一起使用。

要设置InnoDB ClusterSet的生产部署请确保您有以下组件

  • 软件组件
  • InnoDB Cluster
  • MySQL Server 实例
  • MySQL Router 实例

软件组件

设置 InnoDB ClusterSet 部署需要 MySQL Server 8.0.27 或更高版本、 MySQL Shell 8.0.27 和 MySQL Router 8.0.27 或者更高版本。这些是 AdminAPI 所需的软件组件。请参阅 第 6.2 节 “安装 AdminAPI 软件组件”

始终使用最新版本的 MySQL Shell 和 MySQL Router 并确保其版本与 MySQL Server 版本相同或更高。这两种产品都可以管理较旧的 MySQL Server 版本但较旧的版本无法管理较新的 MySQL Server 发行版中的功能。

InnoDB Cluster

要作为主集群的现有 InnoDB Cluster 。这是 InnoDB ClusterSet 部署提供容灾能力的集群。可以采用 Group Replication 组作为 InnoDB Cluster 。有关设置 InnoDB Cluster 或采用 Group Replication 组的说明请参阅 第 7.4 节 “部署生产 InnoDB Cluster”

作为主集群的 InnoDB Cluster 必须满足以下要求

  • 集群不能已经是 InnoDB ClusterSet 部署的一部分。InnoDB Cluster 只能参与一个 InnoDB ClusterSet 部署。

  • 集群中的所有成员服务器实例必须为 MySQL 8.0.27 或更高版本。

  • InnoDB Cluster 元数据版本必须为 2.1.0 或更高。当您对集群执行任何操作例如 dba.getCluster() 命令时AdminAPI 会警告您集群的元数据是否需要更新。通过在 MySQLShell 8.0.27 或更高版本中发出 dba.upgradeMetadata() 命令您可以将元数据更新为 InnoDB ClusterSet 操作的适当版本。请注意升级集群的元数据后它不能由旧的 MySQL Shell 版本管理。有关详细信息请参阅 第 6.11 节 “升级元数据模式”

  • 集群必须处于单主模式。InnoDB Cluster 可以是单主模式或多主模式但 InnoDB ClusterSet 不支持多主模式。您可以在 MySQLShell 中使用 cluster.switchToSinglePrimaryMode() 命令将多主模式下的集群转换为单主模式并选择一个实例作为主服务器。

  • 对于 8.0.27 版及更高版本的 MySQL Server 实例对于 InnoDB ClusterSet 中的 InnoDB Cluster 必须在集群中的所有成员服务器上使用相同的值设置 group_replication_view_change_uuid 系统变量以便为视图更改事件提供可选 UUID 。 在 MySQL 8.0.27 之后使用 dba.createCluster() 命令创建的 InnoDB Cluster 获取为所有成员服务器上的系统变量生成和设置的值。在 MySQL 8.0.27 之前创建的 InnoDB Cluster 可能没有设置这些系统变量但 InnoDB ClusterSet 创建过程会对此进行检查如果没有则会失败并显示警告。
    Cluster.rescan() 命令可用于在 InnoDB Cluster 中的所有成员服务器上生成和设置 group_replication_view_change_uuid 的值。在 MySQLShell 8.0.29 之前该命令在扫描集群时自动执行此操作之后必须重新启动集群以实现更改。在 MySQL Shell 8.0.29 之后该命令返回一条警告消息告诉您必须为系统变量设置值或者您可以启用选项 updateViewChangeUuid 以便在扫描期间自动生成和设置值。重新启动集群后可以重试 InnoDB ClusterSet 创建过程。

  • 任何成员服务器上都不能有来自组外服务器的入站复制通道。允许使用组复制自动创建的通道 group_replication_appliergroup_replication_recovery

  • 您需要知道集群的 InnoDB Cluster 服务器配置帐户用户名和密码请参阅 第 8.3 节 “InnoDB ClusterSet 的用户帐户” 。这是在 InnoDB Cluster 的成员服务器上使用 dba.configureInstance 设置的帐户。您需要在将组成副本集群的 MySQL Server 实例上创建此帐户并使用它来设置它们。

    注意
    您不能使用 InnoDB Cluster 管理员帐户使用 cluster.setupAdminAccount() 设置为副本群集设置独立的 MySQL Server 实例。cluster.setupAdminAccount() 在独立实例上不可用如果您使用 dba.configureInstance 或手动在独立实例中创建其中一个帐户则随后将从主集群复制该帐户导致复制停止并出现错误。

  • 在创建 InnoDB ClusterSet 部署时InnoDB Cluster 必须在线且运行正常其主成员服务器必须可以使用 MySQL Shell 访问。

MySQL Server 实例

您可以将多个独立的 MySQL Server 实例创建为一个或多个副本集群。尽管 InnoDB ClusterSet 部署可以包括由单个服务器实例组成的副本集群但建议每个副本集群中至少有三个成员服务器用于容错。在用于容灾的生产部署中每个副本集群将位于另一个位置例如不同的数据中心。

副本集群中使用的每个 MySQL Server 实例必须满足以下要求

  • 该服务器还不是 InnoDB ClusterSet 部署、 InnoDB ClusterSet 或 InnoDB ReplicaSet 的一部分。

  • 您不需要服务器上的数据。如果服务器以前用于处理事务则当数据成为副本集群的成员时数据将被覆盖除非事务恰好是主集群上事务的子集。

  • 该服务器不是当前运行的组复制组的一部分即使单个服务器已离开该组。您不能将现有组复制组或其当前成员或前成员作为副本群集。如果要使用当前在复制组中的服务器实例请对该组的所有成员执行 STOP GROUP_REPLICATION 命令使该组完全脱机。然后可以使用 AdminAPI 将单独的服务器实例制作成副本集群。

    重点
    在使用以前的 Group Replication 组成员作为 InnoDB ClusterSet 副本集群的成员时要谨慎特别是如果您对 Group Replication 配置选项进行了大量更改或者如果该组是在更早的版本中创建的并且您根据该版本中的情况进行了配置更改。
    InnoDB ClusterSet 副本群集创建过程将覆盖您在命令中指定新设置的任何现有持久化 Group Replication 配置选项。它还始终覆盖以下系统变量即使您没有在命令中指定它们 group_replication_group_name group_replication_group_seeds group_replication_local_address group_replication_view_change_uuidgroup_replication_enforce_update_everywhere_checks 。 但是您更改的其他组复制配置选项仍保持原样。这些自定义设置可能会干扰 InnoDB ClusterSet 的运行或性能InnoDB ClusterSet 希望 MySQL 8.0.27 默认值用于 Group Replication 组复制配置选项这些选项在 InnoDB ClusterSet 副本群集创建过程中不会更改。
    如果确实要使用已配置的组复制服务器请检查并删除所有自定义项如果可能特别是检查 group_replication_single_primary_mode 系统变量是否设置为默认值 ON 。 在这种情况下对于前组复制组成员最安全的选择是重新安装 MySQL Server 而不是将安装升级到 MySQL 8.0.27。

  • 服务器为 MySQL 8.0.27 或更高版本。如果要通过克隆为副本集群配置更多成员服务器则所有服务器必须处于同一版本并且位于同一操作系统上。

  • 服务器具有在整个 InnoDB ClusterSet 中唯一的服务器 ID server_id 系统变量 和服务器 UUID server_uuid 系统变量 包括任何脱机或无法访问的成员服务器。

  • 服务器上未配置入站inbound复制通道。仅允许组复制通道 group_replication_appliergroup_replication_recovery

  • 服务器可以连接到 InnoDB ClusterSet 中的主集群并且主集群可以连接到它。

  • 在创建 InnoDB ClusterSet 部署时服务器必须在线且健康并且可以使用 MySQL Shell 访问。

所需的用户帐户凭据、 InnoDB ClusterSet 元数据和 Group Replication 配置将在 InnoDB ClusterSet 副本集群创建过程中设置。

MySQL Router 实例

一个或多个 MySQL 路由器实例用于将客户端应用程序流量路由到 InnoDB ClusterSet 部署中的适当集群。建议将 MySQL Router 部署在与客户端应用程序相同的主机上。

重点
如果您正在使用现有的 InnoDB Cluster 作为 InnoDB ClusterSet 部署中的主集群并且您已经针对该集群启动了 MySQL Router 请针对 InnoDB ClusterSet 使用 --force 选项再次启动它然后停止并重新启动 MySQL Router 。 需要为 InnoDB ClusterSet 更新 MySQL Router 实例的静态配置文件中的设置。按照 第 8.5 节 “将 MySQL Router 与 InnoDB ClusterSet 集成” 中描述的步骤进行操作。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysqlshell