自动将RDS(MySQL)架构复制到AWS Redshift的最佳方法是什么?

时间:2017-03-17 21:18:33

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

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

PS:我们使用bin-log逐步更新AWS Redshift中的数据。

1 个答案:

答案 0 :(得分:0)

有几种可能的解决方案。

第一个是使用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. 确认您的日志从站更新选项设置为ON:

    的MySQL>显示全球变量'log_slave_updates';

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

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

      的[mysqld] 登录斌= mysql的斌 服务器ID = 1 binlog_format = ROW log-slave-updates = true

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

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

      的MySQL>通过'YOUR_PASSWORD'创建用户'alooma'@'%';

      的MySQL> GRANT REPLICATION SLAVE,SELECT,RELOAD,REPLICATION CLIENT,        LOCK TABLES,在上执行。 ''alooma'@'%';

      的MySQL> FLUSH PRIVILEGES;