6.2.10 InnoDB集群提示

本节介绍使用InnoDB群集时有很好的信息。

超级只读和实例

每当组复制停止时,super_read_only变量设置为确保未写入实例。当您尝试使用以下adminapi命令使用此类实例时,您将获得设置的选择super_read_only =关闭在实例上:

  • dba.configureinstance()

  • dba.configurelocalinstance()

  • dba.dropmetadataschema()

当Adminapi遇到具有的实例时super_read_only =上,在交互式模式下,您可以选择设置super_read_only =关闭。例如:

mysql-js> var mycluster = dba.dropmetadataSchema()你确定要删除元数据吗?[y / n]:y在'localhost:3310'处的mysql实例当前具有super_read_only系统变量设置,以保护它免于从应用程序的无意中更新。您必须首先取消配置它能够对此实例执行任何更改。有关更多信息,请参阅://www.delbede.com/doc/r10bet靠谱efman/en/server-ystem-variables.html#sysvar_super_read_only。你想禁用super_read_only并继续吗?[y / n]:y元数据模式成功删除。

显示了实例的当前活动会话的数量。您必须确保无意中没有应用程序可以写入实例。通过回答y您确认adminapi可以写入实例。如果在列出的实例中有多个开放会话,请在允许adminapi设置之前谨慎行事super_read_only =关闭

配置adminapi的用户

使用属于InnoDB Cluster或InnoDB Replicaset的实例,要求您使用具有正确权限的用户连接到实例的实例。Adminapi提供以下方法来管理合适的用户:

  • 在8.0.20和更高版本中,使用setupadminaccount(用户操作,创建或升级MySQL用户帐户的必要权限以管理InnoDB群集或InnoDB Replicaset。

  • 在8.0.20之前的版本中,创建管理用户的首选方法正在使用clusteradmin.选择与dba.configureinstance()手术。

有关更多信息,请参阅创建管理的用户帐户。如果您想手动配置一个管理用户,那么该用户需要以下权限,所有权限都具有格兰特选项

笔记

此权限列表是基于当前版本的MySQL shell。权限受版本之间发生变化。因此,管理账户的推荐方式正在使用所描述的操作创建管理的用户帐户

如果仅需要读取操作,例如要创建用户以进行监视目的,则可以使用具有更多限制权限的帐户。给用户your_user.监控InnoDB集群问题所需的权限:

在mysql_innodb_cluster_metadata上授予选择。*到your_user @'%';在mysql.slave_master_info上授予选择your_user @'%';在performency_schema.global_status授予选择your_user @'%';在performency_schema.global_variables上授予选择your_user @'%';在performency_schema.replication_applier_configuration上授予选择your_user @'%';在performency_schema.replication_applier_status授予选择your_user @'%';在performency_schema.replication_applier_status_by_coordinator上授予选择your_user @'%';在performency_schema.replication_applier_status_by_worker上授予选择your_user @'%';在performency_schema.replication_connection_configuration授予选择your_user @'%';在performency_schema.replication_connection_status授予选择your_user @'%';在performency_schema.replication_group_member_stats上授予选择your_user @'%';在performency_schema.replication_group_members上授予选择your_user @'%';在performency_schema.threads上选择your_user @'%'拨打选项;

有关更多信息,请参阅帐户管理陈述

InnoDB集群和自动增量

当您使用实例作为InnoDB群集的一部分时,auto_increment_increment.auto_increment_offset.变量的配置是为了避免大小为9 (Group Replication组支持的最大大小)的多主集群发生自动增量冲突的可能性。用于配置这些变量的逻辑可以总结为:

InnoDB集群和二进制日志清除

在MySQL 8中,自动清除二进制日志(如图所示)binlog_expire_logs_seconds.)。这意味着一组已经运行的时间较长的时间binlog_expire_logs_seconds.最终不会包含一个具有完整二进制日志的实例,其中包含实例应用的所有事务。这可能导致需要自动配置的实例,例如使用MySQL Enterprise Backup,在它们可以加入群集之前。运行8.0.17及更高版本支持MySQL克隆插件,该插件通过提供不依赖增量恢复的自动配置解决方案来解决此问题,请参阅第6.2.2.2节“使用innodb群集的mysql clone”。运行早期8.0.17的版本的实例仅支持增量恢复,结果是,根据实例运行的MySQL版本的版本,可能必须自动配置实例。否则依赖分布式恢复的操作,例如.addinstance()可能会失败。

在运行早期版本的MySQL的实例上,以下规则用于二进制日志清除:

因此,根据群集已经运行二进制日志的长度可以清除,并且您可能必须手动配置实例。同样,如果您手动清除二进制日志,您可能会遇到相同的情况。因此,强烈建议您稍后升级到8.0.17的MySQL版本,以充分利用MySQL克隆提供的自动配置,以进行分布式恢复,并在InnoDB集群供应配置实例时最小化停机时间。

重置恢复帐户密码

从8.0.18版本开始,您可以使用.resetrecoveryaccountspassword()操作以重置InnoDB集群创建的内部恢复帐户的密码,例如遵循自定义密码生存期策略。使用.resetrecoveryaccountspassword()操作重置群集使用的所有内部恢复帐户的密码。该操作为在线的每个实例上设置内部恢复帐户的新随机密码。如果无法达到实例,则操作失败。你可以使用力量忽略此类实例的选项,但不建议使用此操作,并且在使用此操作之前将实例返回更安全。此操作仅适用于InnoDB群集创建的密码,不能用于更新手动创建的密码。

笔记

执行此操作的用户必须具有所有必需的管理权限,特别是创建用户,为了确保可以更改恢复帐户的密码,而不管密码验证策略如何更改。换句话说,独立于是否是password_require_current.启用系统变量。