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

What is the best way to automate replication of RDS (MySQL) schema to AWS Redshift?

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

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

有几个可能的解决方案。

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

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

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

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

为托管设置 bin-log MySQL:

要复制 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] log-bin=mysql-bin 服务器-id=1 binlog_format = 行 日志奴隶更新=真

  2. 确保重新启动您的 MySQL 服务器以使更改生效。

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

    mysql> 创建用户 'alooma'@'%' 由 'YOUR_PASSWORD' 识别;

    mysql> 授予复制从机,SELECT,重新加载,复制客户端, 锁定表,在 . 上执行 TO 'alooma'@'%';

    mysql> 刷新权限;