1.MGR特点
① 高一致性,基于原生复制及 paxos协议 组复制技术 ,并以插件的方式提供,提供一致数据安全保证;
② 高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制;
③ 高扩展性,节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到 新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;
④ 高灵活性,有单主模式和多主模式,单主模式下,会自动选主,所有更新操作都在主上进行;多主模式下,所有 server 都可以同时处理更新操作。
MGR 是 MySQL 数据库未来发展的一个重要方向。
小结:高一致性,高容错性,高扩展性,高灵活性
3. MGR结构需求
1)引擎必须为 innodb,因为需事务支持在 commit 时对各节点进行冲突检查
2)每个表必须有主键,在进行事务冲突检测时需要利用主键值对比
3)必须开启 binlog 且为 row 格式
4)开启 GTID,且主从状态信息存于表中(--master-info-repository=TABLE 、--relay-log-info-repository=TABLE),--log-slave-updates 打开
5)一致性检测设置--transaction-write-set-extraction=XXHASH64
3. MGR使用限制
1)和普通复制 binlog 校验不能共存,需设置--binlog-checksum=none
2)不支持 gap lock(间隙锁),隔离级别需设置为 read_committed
3)不支持对表进行锁操作(lock /unlock table),不会发送到其他节点执行 ,影响需要对表进行加锁操作的情况,列入 mysqldump 全表备份恢复操作
4)不支持 serializable(序列化)隔离级别
5)DDL 语句不支持原子性,不能检测冲突,执行后需自行校验是否一致;不支持外键:多主不支持,单主模式不存在此问题;最多支持 9 个节点:超过 9 台 server 无法加入组