面试题答案
一键面试常用的复制和集群方案
- 主从复制:主库将写操作记录到二进制日志(binlog),从库通过 I/O 线程连接主库获取 binlog 并写入中继日志(relay log),再由 SQL 线程重放中继日志中的事件来同步数据。
- Galera Cluster:多主复制集群,数据同步基于同步复制,所有节点都是活跃的可读写节点。
- MHA(Master High Availability):主从复制基础上,具备自动故障检测和主库切换功能。
Galera Cluster 工作原理、数据同步机制及节点故障处理
- 工作原理:Galera Cluster 是一个多主的同步复制集群。每个节点都可以接受读写请求,当有数据修改时,节点会将写操作封装成一个事务,并分配一个全局的事务标识符(GTID)。
- 数据同步机制:节点间通过同步协议进行数据同步。当一个节点接收到写事务,它会向集群中其他节点广播该事务。其他节点在接收到事务后,会进行认证和验证,如果验证通过,就会将该事务应用到本地数据库。这个过程是同步的,确保所有节点的数据一致性。
- 节点故障处理:当某个节点发生故障时,集群中的其他节点会检测到心跳丢失。集群会自动将故障节点从集群中移除,剩余节点继续正常工作,同时会重新计算集群的状态和配置信息,以维持集群的正常运行。
网络分区时保障数据可用性和一致性的措施
- 分区检测:利用心跳检测机制,快速发现网络分区情况。例如可以通过监控节点间的连接状态、心跳包的接收情况来判断。
- 选择主分区:根据一定规则选择包含多数节点的分区作为主分区继续提供服务。例如基于法定人数(quorum)机制,多数节点存活的分区可以继续处理读写请求。
- 暂停非主分区:对非主分区的节点暂停写操作,防止数据不一致。可以通过设置只读模式等方式,确保非主分区的数据不会被修改。
- 数据同步:当网络恢复后,将非主分区的数据与主分区进行同步。可以利用 Galera Cluster 自身的数据同步机制,将主分区在分区期间产生的新数据同步到非主分区节点。
- 监控与报警:在整个过程中,设置完善的监控和报警机制,及时通知运维人员处理异常情况,确保业务尽快恢复正常。