gpt4 book ai didi

amazon-redshift - 在 mysql 到 redshift 复制期间缓慢插入和更新命令

转载 作者:行者123 更新时间:2023-12-04 16:05:16 26 4
gpt4 key购买 nike

我正在尝试从 MySQL 到 redshift 制作一个复制服务器,为此,我正在解析 MySQL 二进制日志。对于初始复制,我将转储 mysql 表,将其转换为 CSV 文件并将其上传到 S3,然后使用 redshift copy 命令。为此,性能是有效的。

在初始复制之后,为了在我读取 binlog 时进行连续同步,插入和更新必须按顺序运行,这非常慢。

有什么可以提高性能的吗?

我能想到的一种可能的解决方案是将语句包装在一个事务中,然后立即发送该事务,以避免多次网络调用。但这并不能解决 redshift 中单个更新和插入语句运行速度很慢的问题。单个更新语句需要 6 秒。知道 redshift 的局限性(它是一个列式数据库,单行插入会很慢)可以做些什么来解决这些局限性?

编辑1:
关于 DMS:我想使用 redshift 作为一个仓储解决方案,它只是不断地复制我们的 MYSQL,我不想对数据进行非规范化,因为我在 mysql 中有 170 多个表。在持续复制期间,DMS 在一天内多次显示许多错误,并在一两天后完全失败,并且很难破译 DMS 错误日志。此外,当我删除和重新加载表时,它会删除 redshift 上的现有表并创建新表,然后开始插入数据,这在我的情况下会导致停机。我想要的是创建一个新表,然后用新表切换旧表并删除旧表

最佳答案

这是让 DMS 正常工作所需要做的事情

1) 使用“迁移和持续复制”和“在目标上删除表”创建并运行 dms 任务

2)这可能会失败,别担心。 “停止”dms 任务。

3)在 Redshift 上对表进行以下更改

  • 将所有日期和时间戳更改为 varchar(因为使用的选项
    by dms for redshift copy 无法处理 '00:00:00 00:00' 日期
    你进入 mysql)
  • 将所有 bool 更改为 varchar - 由于 dms 中的错误。

  • 4)在dms上-在“目标表准备模式”中将任务修改为“截断”

    5) 重新启动 dms 任务 - 完全重新加载

    现在 - 初始副本和正在进行的二进制日志复制应该可以工作。

    确保您使用的是最新的复制实例软件版本

    确保您完全按照此处的说明进行操作

    http://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html

    如果您的来源是 aurora,还要确保您已将 binlog_checksum 设置为“none”(错误的文档)

    关于amazon-redshift - 在 mysql 到 redshift 复制期间缓慢插入和更新命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47333312/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com