面试题答案
一键面试集群架构层面
- 节点冗余:Galera Cluster 本身具备多节点冗余特性,即使某个节点在备份期间发生故障,其他正常节点依然保存着数据副本。在设计集群时,应确保节点数量满足一定的容错要求,例如三节点或以上,以保障部分节点故障时,集群整体仍能正常运行并提供数据。
- 同步机制:Galera Cluster 采用同步复制机制,确保所有节点的数据一致性。在备份时,利用这种同步特性,从多个同步状态良好的节点进行备份,这样即使有节点故障,只要其他同步节点的数据是完整的,备份的数据就有可能保持完整性。
备份策略层面
- 热备份:采用热备份工具,如 xtrabackup。它可以在数据库运行时进行备份,不影响业务的正常读写操作。在备份期间节点故障时,xtrabackup 能够记录备份过程中的日志位置等关键信息。在备份完成后,可利用这些信息结合集群的日志系统(如二进制日志)进行数据的一致性恢复。
- 多节点备份:从多个节点同时进行备份。在备份期间若某个节点故障,其他节点的备份可以作为补充。在后续验证和恢复时,对比多个节点备份的数据,以确保备份数据的完整性。例如,可以先对各个节点备份的数据进行哈希计算,比较哈希值来判断数据的一致性。
- 备份时间选择:尽量选择在业务低峰期进行备份,降低备份期间节点故障对业务的影响。同时,在低峰期节点负载较低,数据变更频率相对较小,能一定程度上减少备份期间因数据频繁变化带来的完整性风险。
验证机制层面
- 数据校验和:在备份过程中,对备份的数据块计算校验和(如 MD5、SHA - 1 等)。在恢复前,重新计算备份数据的校验和并与之前记录的校验和进行对比。若校验和一致,则说明备份数据在存储和传输过程中未被损坏,数据完整性初步得到验证。
- 日志对比:Galera Cluster 有自己的复制日志和二进制日志。备份完成后,对比备份数据中的日志位置和集群正常运行时的日志。若备份数据的日志能够完整衔接上集群故障前的日志,说明备份数据从日志层面是完整的,可用于恢复。例如,通过检查二进制日志的序列号和位置,确保备份数据包含了从上次全量备份后到故障前的所有数据变更记录。
- 模拟恢复测试:在正式恢复到生产集群前,搭建一个与生产环境相似的测试环境,将备份数据恢复到测试环境的集群中。对测试集群进行各种功能性和数据完整性测试,如查询数据的准确性、数据一致性检查等。若测试环境能够正常运行且数据无误,说明备份数据可用于恢复整个集群到故障前的状态。