面试题答案
一键面试- 停机迁移
- 方法:在迁移开始前,停止对源数据库的所有写入操作,确保源数据库处于静止状态。然后将源数据库的数据完整地复制到目标数据库。
- 优势:操作相对简单直接,能有效保证数据一致性,因为在复制过程中源数据不会发生变化。
- 劣势:会导致业务中断,影响系统可用性,对于高可用要求的系统不太适用。
- 基于日志的增量迁移
- 方法:
- 全量复制:首先进行一次全量数据的复制,将源数据库中的所有数据拷贝到目标数据库。
- 增量同步:记录全量复制完成时源数据库的二进制日志位置,之后通过持续读取源数据库的二进制日志(binlog),获取后续发生的数据库变更操作,并将这些变更应用到目标数据库。
- 优势:可以在不停止源数据库写入的情况下完成迁移,减少对业务的影响。
- 劣势:配置和管理相对复杂,需要准确处理二进制日志,以避免数据丢失或重复应用。
- 方法:
- 双写模式
- 方法:在迁移过程中,应用程序同时向源数据库和目标数据库进行写入操作。这样在迁移完成前,两个数据库的数据保持同步更新。当确认目标数据库运行稳定后,再将应用程序切换到仅使用目标数据库。
- 优势:能最大程度减少业务中断时间,保证数据的实时一致性。
- 劣势:对应用程序有侵入性,需要修改应用程序代码来实现双写逻辑,增加了开发和维护成本。同时,双写可能带来性能问题,因为每次写入操作都要执行两次。
- 数据校验
- 方法:
- 迁移过程中:可以定期对源数据库和目标数据库中的部分关键数据进行抽样对比,检查数据的一致性。例如,计算某些表的行数、特定列的哈希值等,对比两个数据库的计算结果。
- 迁移完成后:使用专门的工具(如pt-table-checksum)对所有数据进行全面校验。该工具会计算表的校验和,然后对比源数据库和目标数据库的校验和,以确认数据是否一致。如果发现不一致,工具可以帮助定位差异所在。
- 方法: