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

如何将Redshift聚合表同步至AWS Aurora MySQL实现精准复制

Redshift聚合表同步到Aurora MySQL的精准副本方案(支持多频次、无停机)

针对你的需求——每日多次将Redshift聚合表同步为Aurora MySQL的精准副本,且MySQL无停机,之前的UNLOAD+LOAD DATA方案无法处理删除的问题,这里提供几个落地性强的解决方案:

方案一:全量同步+原子表切换(适合聚合表全量生成的场景)

如果你的Redshift聚合表是定期全量重生成的(比如每次聚合都是覆盖式生成完整表),这个方案最高效且无停机:

  1. Redshift操作:用UNLOAD将聚合表数据导出到S3(推荐按主键分片,方便后续批量导入):
    UNLOAD ('SELECT * FROM your_aggregate_table')
    TO 's3://your-bucket/path/to/data/'
    IAM_ROLE 'arn:aws:iam::account-id:role/redshift-unload-role'
    FORMAT AS CSV HEADER;
    
  2. MySQL操作:
    • 创建与目标表结构一致的临时表(tmp_your_table)
    • 用Aurora的S3直接导入功能(或拉取CSV到MySQL服务器后用LOAD DATA INFILE)将S3上的数据导入临时表
    • 执行原子表切换(MySQL的RENAME TABLE是原子操作,几乎无锁):
      RENAME TABLE your_target_table TO old_your_table, tmp_your_table TO your_target_table;
      DROP TABLE old_your_table;
      
  3. 优势:全程无长时间锁表,业务完全不受影响;同步逻辑简单,出错概率低;适合大表全量同步。

方案二:增量+全量混合同步(适合聚合表有增量更新的场景)

如果聚合表是在原有数据基础上做增量更新(而非全量重生成),可以通过主键+时间戳实现精准同步:

  1. 前置准备:给Redshift聚合表添加last_updated_at时间戳字段,每次数据新增/更新时自动更新该字段;同时确保表有唯一主键(比如id)。
  2. 同步流程:
    • 记录每次同步的结束时间(比如存在MySQL的一个控制表sync_control中)
    • 从Redshift同步上次结束时间到当前时间的所有变更数据(新增/更新)到MySQL临时表
    • 执行三步同步:
      -- 更新现有行
      UPDATE your_target_table t
      JOIN tmp_sync_data tmp ON t.id = tmp.id
      SET t.col1 = tmp.col1, t.col2 = tmp.col2, ..., t.last_updated_at = tmp.last_updated_at;
      
      -- 插入新增行
      INSERT INTO your_target_table
      SELECT * FROM tmp_sync_data
      WHERE id NOT IN (SELECT id FROM your_target_table);
      
      -- 删除Redshift中已不存在的行(如果需要)
      DELETE FROM your_target_table
      WHERE last_updated_at < (SELECT last_sync_time FROM sync_control);
      
    • 更新sync_control中的同步时间为当前时间
  3. 优化点:更新和删除操作按主键范围分批执行(比如WHERE id BETWEEN 1 AND 1000),避免一次性锁表;如果Redshift有批量删除操作,可单独记录删除的主键列表,同步到MySQL后批量删除。

方案三:AWS托管服务组合(低代码维护)

如果不想自己写同步脚本,用AWS原生服务组合可以实现托管式同步:

  • AWS Glue:作为ETL工具,配置Crawler识别Redshift和Aurora的表结构,创建同步Job:
    • 全量同步:Glue读取Redshift全表数据,写入Aurora临时表,再执行原子切换
    • 增量同步:利用Redshift表的last_updated_at字段,Glue只同步上次同步后的变更数据,自动处理插入、更新、删除
  • CloudWatch Events:定时触发Glue Job,满足每日多次同步的需求
  • 优势:无需维护服务器和脚本,AWS托管保证稳定性;支持自动 schema 适配,减少数据类型兼容问题

关键注意事项

  • 确保Redshift与MySQL表的主键完全一致,这是精准匹配行的核心
  • 处理数据类型兼容:比如Redshift的TIMESTAMPTZ要转换为MySQL的DATETIME,DECIMAL精度要对齐
  • 监控同步状态:用CloudWatch监控Glue Job运行状态,或自定义脚本记录同步日志,失败时及时告警
  • 大表同步尽量选业务低峰期执行,减少对MySQL业务的影响

内容的提问来源于stack exchange,提问作者K.N. Bhargav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:55:37