InnoDB集群恢复正在进行时,发生的事情: 在从供体的二进制日志进行状态转移的过程中,加入成员复制并应用来自供体的二进制日志的所需事务,在收到事务时应用事务,直到二进制日志记录加入成员加入组的点(视图更改事件)。在此过程中,加入成员缓冲该组应用的新事务。当来自二进制日志的状态转移完成时,加入成员应用缓冲的事务。
简而言之:
- 读取可能会在 donor 受到影响,但不会在另一个在线复制副本实例中受到影响(除非指定,否则将自动选择donor,从8.0.21开始可能会这样
group_replication_advertise_recovery_endpoints
) - 在 non-donor实例中,读取不应受到影响
- donor 可能会降低集群式写入的速度,因为作为恢复实例的源,它会很忙
如果实例已经接近流量控制阈值,第三种情况的后果可能会更明显:如果恢复已加入的复制副本实例会使队列增加一点点(这是预期的),这可能会触发流量控制。
要隔离这些原因,可以:
- 为配置一个更高的值 group_replication_flow_control_applier_threshold
- 或者干脆禁用 DISABLED group_replication_flow_control_mode