我们使用ruby脚本将数据从MySQL迁移到Redshift(PostgreSQL)。目前我们使用YAML配置文件来维护架构信息(列名和类型)。因此,每当MySQL表被更改时,我们需要手动更改YAML files.Now,我们正在考虑将YAML配置作为JSON对象移动到数据库(PSQL)。但我们仍然需要手动更改架构配置。我们希望自动化该过程。(最好使用Ruby。)
PS:我们使用bin-log逐步更新AWS Redshift中的数据。
答案 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事件。
通过运行以下语句验证您的binlog是否已配置 - 返回的值应为ROW:
mysql> SHOW GLOBAL VARIABLES LIKE 'binlog_format';
验证您的binlog行格式是否设置为FULL:
mysql> SHOW GLOBAL VARIABLES LIKE 'binlog_row_image';
确认您的日志从站更新选项设置为ON:
的MySQL>显示全球变量'log_slave_updates';
如果您的MySQL当前未设置为基于行的复制,则需要进行设置。
在my.cnf文件中包含以下行(在/ etc / mysql /下)。以下示例用于“vanilla”MySQL 5.6安装:
的[mysqld] 登录斌= mysql的斌 服务器ID = 1 binlog_format = ROW log-slave-updates = true
确保重启MySQL服务器以获取更改。
创建一个Alooma用户,类似于MySQL从属用户:
的MySQL>通过'YOUR_PASSWORD'创建用户'alooma'@'%';
的MySQL> GRANT REPLICATION SLAVE,SELECT,RELOAD,REPLICATION CLIENT, LOCK TABLES,在上执行。 ''alooma'@'%';
的MySQL> FLUSH PRIVILEGES;