MST
星途 面试题库

面试题:MySQL数据库迁移中数据一致性如何保证

在进行MySQL数据库迁移时,怎样确保源数据库和目标数据库中的数据在迁移过程及迁移完成后保持一致性?请简述常用的方法和策略。
49.3万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

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