Skip to content

MySQL 在线和离线迁移

离线迁移方法

1. 物理备份恢复

适用场景

  • 同版本迁移
  • 数据量较大
  • 可以接受较长停机时间

迁移步骤

  1. 源库准备

    • 停止写入操作
    • 执行物理备份
  2. 目标库准备

    • 安装相同版本的 MySQL
    • 配置相同的参数
  3. 数据恢复

    • 将备份文件复制到目标库
    • 执行物理恢复
  4. 验证

    • 启动 MySQL 服务
    • 验证数据一致性
    • 切换应用连接

2. 逻辑备份恢复

适用场景

  • 跨版本迁移
  • 数据量较小
  • 需要过滤数据

迁移步骤

  1. 源库备份

    • 使用 mysqldump 导出数据
    • 可选:使用 --single-transaction 减少锁表时间
  2. 目标库准备

    • 安装目标版本的 MySQL
    • 创建必要的数据库和用户
  3. 数据导入

    • 使用 mysql 命令导入数据
    • 或使用 mysqlimport 导入 CSV 数据
  4. 验证

    • 验证数据一致性
    • 检查索引和约束
    • 切换应用连接

在线迁移方法

1. 主从复制

适用场景

  • 数据量较大
  • 业务不能接受停机
  • 需要平滑切换

迁移步骤

  1. 搭建主从复制

    • 在目标库上配置从库
    • 从源库获取备份并恢复
    • 启动复制进程
  2. 数据同步

    • 监控复制延迟
    • 确保数据完全同步
  3. 应用切换

    • 执行主从切换
    • 或使用 VIP 漂移
    • 验证应用连接

2. 第三方工具

常用工具

  • Percona XtraBackup

    • 支持热备份
    • 适用于大数据库迁移
  • MySQL Shell Dump & Load

    • 支持并行导出导入
    • 适用于跨版本迁移
  • MySQL Enterprise Backup

    • 企业级备份工具
    • 支持增量备份
  • DataX

    • 阿里开源的数据迁移工具
    • 支持异构数据源
  • Canal

    • 基于 binlog 的增量同步工具
    • 适用于实时数据同步

迁移工具选择

基于数据量

数据量推荐工具迁移类型
< 10GBmysqldump离线
10GB - 100GBPercona XtraBackup离线/在线
> 100GB主从复制 + XtraBackup在线

基于版本兼容性

迁移场景推荐工具注意事项
同版本迁移物理备份恢复配置文件保持一致
跨小版本迁移物理备份恢复注意参数变化
跨大版本迁移逻辑备份恢复需验证 SQL 兼容性

迁移前准备

1. 迁移评估

  • 数据量评估:估算数据大小和迁移时间
  • 性能评估:评估源库和目标库的性能差异
  • 风险评估:识别潜在风险和应对措施

2. 环境准备

  • 目标库配置:确保硬件和软件满足要求
  • 网络带宽:确保足够的网络带宽
  • 存储容量:确保目标库有足够的存储空间

3. 迁移计划

  • 时间窗口:选择合适的迁移时间
  • 人员安排:明确迁移职责
  • 回滚计划:制定详细的回滚策略

迁移执行

1. 执行迁移

  • 严格按照计划执行:遵循预定的迁移步骤
  • 实时监控:监控迁移进度和性能
  • 问题处理:及时处理迁移过程中的问题

2. 验证迁移

  • 数据一致性验证:确保源库和目标库数据一致
  • 功能验证:确保应用功能正常
  • 性能验证:确保目标库性能满足要求

3. 切换应用

  • 切换策略:选择合适的切换方式
  • 切换时间:选择业务低峰期
  • 切换验证:验证应用连接和功能

迁移后维护

1. 监控

  • 性能监控:监控目标库的性能
  • 复制监控:如果使用主从复制
  • 空间监控:监控存储空间使用情况

2. 优化

  • 参数优化:根据目标库硬件调整参数
  • 索引优化:检查和优化索引
  • SQL 优化:优化慢查询

3. 文档更新

  • 更新架构文档:记录新的数据库架构
  • 更新运维文档:更新相关的运维流程
  • 更新监控配置:更新监控系统配置

常见问题(FAQ)

Q1: 在线迁移过程中如何减少对源库的影响?

A1: 可以采取以下措施:

  • 使用低优先级的复制线程
  • 限制复制带宽
  • 在业务低峰期进行迁移
  • 使用多级复制架构

Q2: 跨版本迁移时需要注意什么?

A2: 跨版本迁移需要注意:

  • 检查 SQL 兼容性
  • 检查参数变化
  • 验证存储引擎特性
  • 测试应用功能

Q3: 如何验证迁移后的数据一致性?

A3: 可以使用以下方法:

  • 使用 pt-table-checksum 工具
  • 比较表行数和大小
  • 抽样查询关键数据
  • 运行应用功能测试

Q4: 迁移过程中遇到复制延迟怎么办?

A4: 处理复制延迟的方法:

  • 优化源库性能
  • 增加目标库资源
  • 调整复制参数
  • 考虑使用并行复制

Q5: 如何制定迁移回滚计划?

A5: 制定回滚计划的步骤:

  • 备份源库状态
  • 记录迁移前的配置
  • 准备回滚脚本
  • 明确回滚触发条件
  • 测试回滚流程