6.2.4处理实例

本节描述AdminAPI操作适用于实例。您可以配置实例集群与InnoDB使用它们之前,检查一个实例的状态,等等。

使用dba.checkInstanceConfiguration ()

在创建生产部署之前从MySQL服务器实例,您需要检查每个实例是正确配置。除了dba.configureInstance (),检查配置作为配置实例的一部分,您可以使用dba.checkInstanceConfiguration (实例)函数。这确保了实例满足6.2.1节,“MySQL集群InnoDB要求”在不改变任何配置实例。这并不检查实例上的任何数据,看看检查实例状态为更多的信息。

你使用连接的用户实例必须有合适的特权,例如配置配置用户AdminAPI。下面演示了发行这一运行MySQL壳:

mysql-js > dba.checkInstanceConfiguration (icadmin@ic-1:3306)请提供“icadmin@ic-1:3306”的密码:* * *验证MySQL实例ic-1:3306用于一个集群InnoDB…这个实例报告自己的地址作为ic-1客户和其他集群成员将通过这个地址默认与它交流。如果这是不正确的,report_host MySQL系统变量应该被改变。检查现有表是否符合集团复制要求……没有检测到不兼容表检查实例配置…一些配置选项需要固定:+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | + | |变量当前值要求值| | + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | enforce_gtid_consistency了| | |更新只读变量并重新启动服务器| | gtid_mode了| | |更新只读变量并重新启动服务器| | server_id | 1 | |更新只读变量并重新启动服务器| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +请使用dba.configureInstance()命令来修复这些问题。{“config_errors”:[{“行动”:“重启”,“当前”:“关”,“选项”:“enforce_gtid_consistency”,“要求”:“在”},{“行动”:“重启”,“当前”:“关”,“选项”:“gtid_mode”,“要求”:“在”},{“行动”:“重启”,“当前”:“1”,“选项”:“server_id”,“要求”:"}),“状态”:“错误”}

重复这个过程您计划使用的每个服务器实例作为集群的一部分。报告生成后运行dba.checkInstanceConfiguration ()提供所需的任何配置更改的信息才能进行。的行动字段config_error报告的部分告诉你是否MySQL实例需要重启,以发现任何变化的配置文件。

配置实例,dba.configureLocalInstance ()

实例不支持自动保存配置更改(见保存设置)需要你连接到服务器,运行MySQL外壳,连接到本地实例和问题dba.configureLocalInstance ()。这使得MySQL后壳修改实例的选项文件对远程实例运行以下命令:

  • dba.configureInstance ()

  • dba.createCluster ()

  • 集群.addInstance ()

  • 集群.removeInstance ()

  • 集群.rejoinInstance ()

重要的

未能保存配置更改一个实例的选项文件可能导致实例而不是下一个重启后重新加入集群。

推荐的方法是登录到远程计算机,例如使用SSH,作为根用户运行MySQL壳,然后连接到本地MySQL服务器。例如,使用——uri选择连接到本地实例:

壳> sudo -我mysqlsh——uri =实例

或者使用\连接命令登录到本地实例。然后发出dba.configureInstance (实例),在那里实例本地实例的连接信息,保存任何更改本地实例的选择文件。

mysql-js > dba.configureLocalInstance (“icadmin@ic-2:3306”)

重复这个过程为集群中的每个实例不支持自动保存配置更改。例如如果你添加2实例集群也不支持自动保存配置更改,必须连接到每台服务器和持续InnoDB集群所需的配置更改之前重新启动实例。同样如果你修改集群结构,例如改变实例的数量,你需要为每个服务器实例重复这个过程相应地更新InnoDB集群元数据集群中的每个实例。

检查实例状态

cluster.checkInstanceState ()函数可以被用来验证现有的数据实例不阻止它加入集群。这个过程是通过验证实例的全局事务标识符(GTID)状态相比GTIDs已经处理的集群。GTIDs看到更多的信息GTID格式和存储。这张支票使您能够确定一个实例,处理事务可以添加到集群中。

下面演示了发行这一运行MySQL壳:

mysql-js > cluster.checkInstanceState (“icadmin@ic-4:3306”)

这个函数的输出可以是下列之一:

  • 好的新:实例没有任何GTID交易执行,因此它不能与GTIDs冲突由集群执行

  • 好的可恢复:实例执行GTIDs不冲突与执行GTIDs集群的种子实例

  • 错误分化:实例执行GTIDs发散的执行GTIDs集群的种子实例

  • 错误lost_transactions:实例执行GTIDs超过执行GTIDs集群的种子实例

实例有一个好的状态可以被添加到集群因为任何数据在集群实例是一致的。换句话说实例检查没有任何冲突的事务执行与GTIDs执行的集群,并可以恢复到其他集群实例一样的状态。