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

本文涉及的产品
数据传输服务DTS,同步至DuckDB 3个月
简介: 数据传输(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形式给出,可以进行监控,具体如下:



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
5月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
5月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
306 0
|
3月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
3月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
130 11
|
4月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
4月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
393 10
|
4月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
409 0
|
5月前
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
156 0
|
6月前
|
存储 SQL Java
数据存储使用文件还是数据库,哪个更合适?
数据库和文件系统各有优劣:数据库读写性能较低、结构 rigid,但具备计算能力和数据一致性保障;文件系统灵活易管理、读写高效,但缺乏计算能力且无法保证一致性。针对仅需高效存储与灵活管理的场景,文件系统更优,但其计算短板可通过开源工具 SPL(Structured Process Language)弥补。SPL 提供独立计算语法及高性能文件格式(如集文件、组表),支持复杂计算与多源混合查询,甚至可替代数据仓库。此外,SPL 易集成、支持热切换,大幅提升开发运维效率,是后数据库时代文件存储的理想补充方案。

热门文章

最新文章

推荐镜像

更多