如何对MySQL数据库中的数据进行实时同步-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

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

简介: 数据传输(Data Transmission) 支持以数据库为核心的结构化存储产品之间的数据传输。 它是一种集数据迁移、数据订阅及数据实时同步于一体的数据传输服务。数据传输致力于在公有云、混合云场景下,解决远距离、毫秒级异步数据传输难题。
数据传输(Data Transmission) 支持以数据库为核心的结构化存储产品之间的数据传输。 它是一种集数据迁移、数据订阅及数据实时同步于一体的数据传输服务。数据传输致力于在公有云、混合云场景下,解决远距离、毫秒级异步数据传输难题。
通过阿里云数据传输,并使用 dts-ads-writer 插件, 可以将您在阿里云的云数据库RDS for MySQL中数据表的变更实时同步到分析型数据库中对应的实时写入表中(RDS端目前暂时仅支持MySQL引擎)。

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

操作步骤
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
基本配置:
{
  "dtsAccessId": "",  // 拥有数据订阅通道的云账号的accessId, 必须配置
  "dtsAccessKey": "", // 拥有数据订阅通道的云账号的accessKey, 必须配置
  "dtsTunnelId": "",  // 数据订阅通道的id, 必须配置; 注意是id,不是通道名称
  "adsUserName": "",  // 访问您的分析型数据库的用户名(accessId), 必须配置
  "adsPassword": "",  // 访问您的分析型数据库的密码(accessKey), 必须配置
  "adsJdbcUrl": "",   // 访问分析型数据库的jdbc连接串, 必须配置(格式jdbc:mysql://ip:port/dbname)
  "tables": [
    {
      "source": {
        "primaryKeys": [""] // 主键定义, 必须配置; 注意RDS和分析型数据库中的主键定义必须一致
        "db": "",     // 源头RDS的db名称, 必须配置
        "table": "",    // 源头RDS的table名称, 必须配置
        "skipColumns": ["col1"]   // 可选,若在此配置了RDS表某列名,则该列不会同步
      },
      "target": {            
        "table": "" // 分析型数据库表的table名称, 必须配置
      },
      "columnMapping": {
        "": ""  // rds表和ads表的列对应关系:key为rds的列名, value为分析型数据库的列名,选填,不填则按照列名一一对应
      } 
    }
  ]
}
tables节点的配置示例, 表示rds_db库下的rds_table表对应ads_table表,并且rds_table表的col1列对应ads_table表的col1_ads列, rds_table表的col2列对应ads_table表的col2_ads列
"tables": [
    {
      "source": {
        "primaryKeys": [
          "col1",
          "col2"
        ],
        "db": "rds_db",
        "table": "rds_table"
      },
      "target": {
        "table": "ads_table"
      },
      "columnMapping": {
        "col1": "col1_ads",
        "col2": "col2_ads"
      }
    }
  ]
注意事项:
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形式给出,可以进行监控,具体如下:
0b9a4fa5620488283d8e332387989d88f9f3528d
2598cadea6c4d2ed799847a01410a1ffd761b570
118bfdf5e659831b3b8024368acd2f601ff9f564

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章
最新文章
相关文章