【问题标题】:What is the best way to automate replication of RDS (MySQL) schema to AWS Redshift?将 RDS (MySQL) 架构自动复制到 AWS Redshift 的最佳方法是什么?
【发布时间】:2017-08-09 14:03:44
【问题描述】:

我们使用 ruby​​ 脚本将数据从 MySQL 迁移到 Redshift(PostgreSQL)。目前我们使用 YAML 配置文件来维护模式信息(列名和类型)。因此,每当 MySQL 表发生更改时,我们都需要手动更改 YAML文件。现在,我们正在考虑将 YAML 配置作为 JSON 对象移动到数据库(PSQL)。但是我们仍然需要手动更改架构配置。我们希望自动化该过程。(最好使用 Ruby。)

PS:我们使用 bin-log 来增量更新 AWS Redshift 中的数据。

【问题讨论】:

  • 您是否考虑过 AWS Database Migration Service?

标签: mysql database amazon-redshift data-migration data-pipeline


【解决方案1】:

有几种可能的解决方案供您选择。

第一个是使用 AWS Data Pipeline。这是一项在不同 AWS 计算和存储服务之间移动数据的服务。 (https://aws.amazon.com/datapipeline/)

另一种选择是使用 Alooma 等数据集成工具。它可以近乎实时地从托管在Amazon RDS to a AWS Redshift 上的 MySQL 数据库中复制表。

它支持您正在使用的 bin-log 复制方法。

按照以下步骤复制您的数据:

为托管的 MySQL 设置 bin-log:

要复制 MySQL 表,Alooma 需要设置基于行的复制,以便能够读取您的 MySQL 事件。

  1. 通过运行以下语句验证您的 binlog 是否已配置 - 返回的值应为 ROW:

    mysql> SHOW GLOBAL VARIABLES LIKE 'binlog_format';

  2. 验证您的 binlog 行格式是否设置为 FULL:

    mysql> SHOW GLOBAL VARIABLES LIKE 'binlog_row_image';

  3. 验证您的日志从属更新选项是否设置为开启:

    mysql> 显示全局变量,例如“log_slave_updates”;

如果您的 MySQL 当前未设置为基于行的复制,则需要进行设置。

  1. 在您的 my.cnf 文件(在 /etc/mysql/ 下)中包含以下行。下面的示例适用于“vanilla” MySQL 5.6 安装:

    [mysqld] 日志-bin=mysql-bin 服务器 ID=1 binlog_format = ROW 日志从更新=真

  2. 确保重新启动 MySQL 服务器以获取更改。

  3. 创建一个 Alooma 用户,类似于 MySQL 从属用户:

    mysql> CREATE USER 'alooma'@'%' IDENTIFIED BY 'YOUR_PASSWORD';

    mysql> GRANT REPLICATION SLAVE, SELECT, RELOAD, REPLICATION CLIENT, 锁定表,在 上执行。 TO 'alooma'@'%';

    mysql> 刷新权限;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2019-03-06
    • 2020-01-24
    • 1970-01-01
    • 2010-09-13
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多