1

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

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

4

1 回答 1

1

有几种可能的解决方案适合您。

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

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

它支持您正在使用的 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”;

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

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

    [mysqld] log-bin=mysql-bin server-id=1 binlog_format = ROW log-slave-updates=true

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

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

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

    mysql> GRANT REPLICATION SLAVE, SELECT, RELOAD, REPLICATION CLIENT, LOCK TABLES, EXECUTE ON . TO 'alooma'@'%';

    mysql> 刷新权限;

于 2017-07-31T09:43:43.953 回答