天天看点

如何对MySQL数据库中的数据进行实时同步

数据传输(data transmission) 支持以数据库为核心的结构化存储产品之间的数据传输。 它是一种集数据迁移、数据订阅及数据实时同步于一体的数据传输服务。数据传输致力于在公有云、混合云场景下,解决远距离、毫秒级异步数据传输难题。

通过阿里云数据传输,并使用 dts-ads-writer 插件, 可以将您在阿里云的云数据库rds for mysql中数据表的变更实时同步到分析型数据库中对应的实时写入表中(rds端目前暂时仅支持mysql引擎)。

<b>前提条件</b>

您需要在您rds for mysql所在的云账号下开通阿里云数据传输服务。并 点击此处 下载dts-ads-writer插件到您的一台服务器上并解压(需要该服务器可以访问互联网,建议使用阿里云ecs以最大限度保障可用性)。服务器上需要有java 6或以上的运行环境(jre/jdk)。

<b>操作步骤</b>

1. 在分析型数据库上创建目标表,数据更新类型为实时写入,字段名称和mysql中的建议均相同;

2. 在阿里云数据传输的控制台上创建数据订阅通道,并记录这个通道的id;

(见: https://help.aliyun.com/document_detail/dts/getting-started/data-subscription.html),

3. 配置dts-ads-writer/app.conf文件,配置方式如下:

所有配置均保存在app.conf中,运行前请保证配置正确;修改配置后,请重启writer

基本配置:

tables节点的配置示例, 表示rds_db库下的rds_table表对应ads_table表,并且rds_table表的col1列对应ads_table表的col1_ads列, rds_table表的col2列对应ads_table表的col2_ads列

<b>注意事项:</b>

1)rds for mysql表和分析型数据库中表的主键定义必须完全一致;如果不一致会出现数据不一致问题。如果需要调整rds/分析型数据库表的主键,建议先停止writer进程;

2)一个插件进程中分析型数据库db只能是一个,由adsjdbcurl指定;

3)一个插件进程只能对应一个数据订阅通道;如果更新通道中的订阅对象时,需要重启进程

4)rds for mysql中ddl操作不做同步处理;

5)更新app.conf需要重启插件进程才能生效;

6)如果工具出现bug或某种其它原因需要重新同步历史数据,只能回溯最近24小时的数据(在阿里云数据传输的控制台中修改消费位点);

7)插件的最大同步性能与运行插件的服务器的互联网带宽和磁盘iops成正比。

4. 运行dts-ads-writer/bin/startup.sh(sh bin/startup.sh);

5. 配置监控程序监控进程存活和日志中的常见错误码。

logs目录下的日志中的异常信息均以errorcode=xxxx errormessage=xxxx形式给出,可以进行监控,具体如下:

如何对MySQL数据库中的数据进行实时同步
如何对MySQL数据库中的数据进行实时同步
如何对MySQL数据库中的数据进行实时同步