You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure MySQL回滚同步至AWS MySQL方案及增量数据查询请求

从Azure MySQL同步增量数据回AWS MySQL的回滚方案

一、回滚同步操作步骤

1. 暂停Azure侧业务写入

  • 立即暂停所有指向Azure MySQL的业务写入操作,比如关停相关应用实例、设置临时流量拦截规则,避免增量数据持续产生导致同步遗漏。

2. 确认回滚基准时间点

  • 明确需要同步的起始时间(比如故障发现时间、迁移完成后的指定时间点),这个时间点要与之前AWS到Azure同步的最终完成时间对齐,避免重复同步历史数据。

3. 导出Azure MySQL增量数据

  • 使用mysqldump工具过滤导出指定时间后的新增/修改数据,支持多Schema、多表批量导出:
    mysqldump -h <azure-mysql-host> -u <username> -p --databases schema1 schema2 \
    --tables table1 table2 --where="updated_at >= 'YYYY-MM-DD HH:MM:SS'" --no-create-info > incremental_data.sql
    
    注意事项:
    • 若存在迁移后Azure侧新增的表,需单独导出表结构:mysqldump -h <azure-host> -u <user> -p --databases schema1 --tables new_table --no-data > new_table_schema.sql,先导入结构再导数据。
    • --no-create-info参数跳过表结构导出,因为AWS侧已有一致的表结构。

4. 验证增量数据文件

  • 打开导出的SQL文件,检查数据行数、时间范围是否符合预期,排查是否包含错误SQL语句。

5. 导入增量数据至AWS MySQL

  • 使用mysql命令将增量数据导入AWS,处理主键冲突时按需选择策略:
    mysql -h <aws-mysql-host> -u <username> -p < incremental_data.sql
    
    可选优化:
    • 临时禁用外键约束避免导入失败:
      SET FOREIGN_KEY_CHECKS=0;
      -- 执行导入
      SET FOREIGN_KEY_CHECKS=1;
      
    • 若存在主键重复,可将SQL中的INSERT替换为REPLACE INTO(覆盖旧数据)或INSERT IGNORE(跳过重复),需根据业务场景选择。

6. 校验数据一致性

  • 对比Azure与AWS侧指定表的关键指标:
    -- 对比行数
    SELECT COUNT(*) FROM schema1.table_name;
    -- 对比最新数据
    SELECT * FROM schema1.table_name ORDER BY updated_at DESC LIMIT 10;
    

7. 恢复AWS侧业务流量

  • 确认数据完全一致后,切换业务流量回AWS MySQL,恢复正常业务运行。

二、查询指定时间后增量数据的SQL语句

1. 单表增量查询(基于更新/创建时间)

假设表包含created_at(创建时间)和updated_at(更新时间)字段,查询指定时间后新增或修改的数据:

SELECT * FROM `schema_name`.`table_name`
WHERE created_at >= 'YYYY-MM-DD HH:MM:SS' 
OR updated_at >= 'YYYY-MM-DD HH:MM:SS';

2. 批量生成多Schema多表查询语句

自动生成指定Schema和表的增量查询脚本:

SELECT CONCAT(
    'SELECT * FROM `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` ',
    'WHERE created_at >= ''YYYY-MM-DD HH:MM:SS'' OR updated_at >= ''YYYY-MM-DD HH:MM:SS'';'
) AS incremental_query
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA IN ('schema1', 'schema2')
AND TABLE_NAME IN ('table1', 'table2');

3. 无时间字段时的增量查询(依赖Binlog)

若表未维护时间字段,需通过Azure MySQL的Binlog提取增量:

  • 确认Binlog开启:SHOW VARIABLES LIKE 'log_bin';
  • 查看可用Binlog文件:SHOW BINARY LOGS;
  • 解析指定时间范围的Binlog:
    mysqlbinlog --start-datetime="YYYY-MM-DD HH:MM:SS" --stop-datetime="YYYY-MM-DD HH:MM:SS" \
    -h <azure-mysql-host> -u <username> -p --read-from-remote-server <binlog-filename> > binlog_incremental.sql
    
    解析后需手动过滤出目标Schema和表的操作语句,再导入AWS。

内容的提问来源于stack exchange,提问作者VIGNESH A KUNDER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 14:48:25