说明你对InnoDB集群的整体认知。
MySQL组复制技术是InnoDB集群实现的基础,组复制安装在集群中的每个服务器实例上。组复制能够创建弹性复制拓扑,在集群中的服务器脱机时可以自动重新配置自己。必须至少有三台服务器才能组成一个可以提供高可用性的组。组可以在单主模式下运行,一次只有一台服务器接受更新:也可以在多主模式下运行,所有服务器都可以接受更新,即使更新是同时发布的。
MySQL Router位于应用程序和集群之间,用来实现负载均衡。
MySQL Shell用来管理集群,通过MySQL Shell的管理API,可以使用熟悉的JavaScript,Python或SQL命令来管理MySQL集群。
请对组复制的原理和功能做一个完整的描述,并说明组复制有哪些先决条件和限制。
组复制是MySQL的一个插件,它能够在一组服务器之间进行高可用的复制数据,并自动处理服务器故障转移,当成员因崩溃,故障或重新连接而加入或离开组时自动重新配置组,并解决冲突。集群中的服务器属于一个复制组(replication group),一个复制组最多9台最少3台服务器,必须使用全局事务标识符(GTID),组成员身份是自动管理的,服务器可以随时离开和加入该组,一台服务器的更改将复制到组的所有成员。
使用组复制技术必须要满足以下条件和限制:
- 通讯低延迟,要求集群服务器位于本地网络
- 基于复制冲突检测的需要,组复制仅适用于InnoDB存储引擎,GTID要启用,表有主键
- 对于复制配置,要启用二进制日志记录和从属服务器更新,二进制日志用行格式记录,元数据必须以table格式存储