mysql数据同步ES方案---DTS

在上一篇文章中,我通过一个简单的例子实现了如何通过 Canal 实现 MySQL 数据到 Elasticsearch 的同步,以满足增量捕获和实时同步的需求。然而实际情况中,比如在我之前工作的公司,为了减少运维工作量和代码操作的复杂性,我们通常选择使用云数据库。比如,我们的 MySQL 使用的是阿里云的云数据库 RDS 实例,Elasticsearch 则采用阿里云的云检索服务。所以这次文章中,我将基于阿里云的两个云数据库进行数据同步,利用阿里云的数据传输服务(DTS)来实现。DTS 的优点在于其高集成度和便捷性,使得数据同步更加简便高效。

准备工作


一、云数据库 RDS 实例配置及命令
  1. 登录阿里云控制台并创建 RDS MySQL 实例

    • 打开阿里云控制台,导航到 云数据库 RDS 服务页面。
    • 按需选择 RDS MySQL 实例类型,配置实例的 规格存储空间网络
    • 创建实例后,进入实例详情页面,配置 数据库白名单,允许 DTS 和 Elasticsearch 实例访问 RDS。
    • 设置好白名单后,创建一个具有足够权限的数据库用户账号,此账号将在数据同步过程中被 DTS 使用。
  2. 登录 RDS MySQL 实例并创建模拟数据表

    • 使用创建的账号登录 RDS MySQL 实例(可使用 MySQL 客户端、Navicat 等工具)。

    • 创建一个日志表,用于模拟数据同步工作。表结构如下:

      CREATE TABLE sync_log (id INT AUTO_INCREMENT PRIMARY KEY,log_message VARCHAR(255),log_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
      );
      
    • 该表包含三个字段:id(主键)、log_message(日志内容),和 log_time(记录时间),用于测试数据同步到 Elasticsearch 的效果。

  3. 插入初始数据

    • 为确保同步任务有数据可测试,插入一些测试日志数据:

      INSERT INTO sync_log (log_message) VALUES 
      ('Log entry 1'),
      ('Log entry 2'),
      ('Log entry 3');
      
    • 执行以上 SQL 后,可以使用 SELECT * FROM sync_log; 命令查看表中的数据,确认插入成功。这些数据将通过 DTS 同步到 Elasticsearch,以验证同步配置的效果。

至此,云数据库 RDS 的准备工作已完成。


二、Elasticsearch 实例配置及命令

  1. 创建 Elasticsearch 实例

    • 在阿里云控制台选择 Elasticsearch 服务,创建一个新的实例。
    • 配置实例规格、存储空间和访问策略,确保允许 DTS 和 RDS 实例访问此 Elasticsearch 实例。
  2. 关于索引创建

    • 如果需要 MySQL 表的字段结构与 Elasticsearch 索引保持一致,可以在 DTS 配置中选择 全表同步,DTS 会自动根据 MySQL 表结构创建对应的 Elasticsearch 索引和字段映射。
    • 因此,无需手动创建索引或定义字段结构,DTS 同步后将自动完成索引创建。
  3. 验证索引创建

    • 同步任务完成后,可以在 Kibana 的 Discover 页面中查看自动生成的索引。

    • 使用以下命令检查索引结构,确认字段设置正确:

      GET sync_log/_mapping
      

完成这些准备工作后,接下来,可以使用 DTS 启动 MySQL 数据到 Elasticsearch 的同步任务。

数据同步前:MySQL 与 Elasticsearch 数据比对

在开始数据同步之前,我们可以先查看 MySQL 中的全量数据,并确认 Elasticsearch 中 sync_log 索引是否存在或为空。以下是具体步骤:

  1. 查看 MySQL 中的全量数据

    • 在 MySQL 控制台中运行以下命令,查看 sync_log 表的所有数据:

      SELECT * FROM sync_log;
      

      在这里插入图片描述

  2. 查看 Elasticsearch 中的 sync_log 索引数据

    • 确保 sync_log 索引在数据同步前不存在该索引或为空,以便清晰地观察同步效果。在 Kibana 的 Dev Tools 中使用以下命令,查询 sync_log 索引中的前十条数据:

      GET /sync_log/_search
      {"size": 10
      }
      

      在这里插入图片描述

开始数据同步:将 MySQL 数据同步到 Elasticsearch

  • 进入阿里云数据同步服务(DTS)控制台

    • 登录阿里云控制台,在顶部导航栏中找到并点击 数据传输服务(Data Transmission Service) ,进入 DTS 产品界面。
    • 在 DTS 控制台页面,点击 数据同步,进入数据同步任务的管理页面。
  • 创建同步任务

    • 数据同步 页面,点击 创建同步任务 按钮,开始配置新的同步任务。
      • 弹出任务配置页面,按照以下步骤完成配置。
  • 配置源数据库(RDS MySQL)

    • 源库信息 部分,选择 RDS实例 作为源库类型。
    • 选择你创建的 RDS MySQL 实例,并填写相关的连接信息,如数据库名称和访问权限账号。
    • 测试连接:点击 测试连接 按钮,确认源数据库连接无误后,继续下一步。
  • 配置目标数据库(Elasticsearch)

    • 目标库信息 部分,选择 Elasticsearch 作为目标库类型。
    • 输入 Elasticsearch 实例的连接信息,包括 访问地址端口、以及对应的 访问权限账号和密码
    • 测试连接:点击 测试连接 按钮,确保 DTS 可以正常访问目标 Elasticsearch 实例。

    在这里插入图片描述

  • 选择同步对象

    • 配置完源和目标数据库信息后,进入 对象配置 配置页面。

    • 在源数据库结构中选择要同步的表,例如 sync_log 表。

    • 确保勾选了 全量同步增量同步,以便将 MySQL 中的历史数据和后续新增数据都同步到 Elasticsearch。

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

  • 高级设置(可选):

    • 如果有特殊需求,可以在 高级设置 中配置数据转换、字段映射等细节。
    • 确认所有设置无误后,点击 下一步 继续。
  • 启动同步任务

    • 配置完成后,点击 预检查并启动,DTS 将对同步任务进行预检查,以确保配置正确。

      在这里插入图片描述

    • 预检查通过后,点击 购买 按钮,选择合适的数据链路并启动

    在这里插入图片描述

    备注: 这里是测试 故选择最低链路规格。实际要根据具体数据同步量选择合适的链路规格

    • 返回 任务列表 页面,找到创建的同步任务,并监控任务状态,确认同步任务已正常启动并运行。

      在这里插入图片描述

      在这里插入图片描述

    • 同步任务完成后,登录 Kibana 控制台。进入 Discover 页面,搜索并查看 sync_log 索引。通过使用以下命令,查询 sync_log 索引中的前十条数据:

      GET /sync_log/_search
      {"size": 10
      }
      

      在这里插入图片描述

通过上述截图我们可以看到通过dts我们已经把mysql指定表中的数据和结构已经全部同步到Elasticsearch里面。

增量数据同步测试

  1. 向 MySQL 中插入增量数据

    • 在 MySQL 中,向 sync_log 表中插入一条新的数据,以测试增量同步是否正常工作。例如,执行以下 SQL 命令:

      INSERT INTO sync_log (log_message) VALUES ('Incremental log entry');
      
    • 插入完成后,可以使用 SELECT * FROM sync_log; 命令查看新数据是否已添加到表中。

      在这里插入图片描述

  2. 登录 Kibana 检查增量同步数据**:

    • 等待 DTS 将增量数据同步到 Elasticsearch。

    • 登录 Kibana 控制台,进入 Discover 页面,查看 sync_log 索引。

    • 搜索或刷新数据,确认 sync_log 索引中是否包含刚刚插入的增量数据,确保 DTS 正确完成了增量同步。

      在这里插入图片描述

通过上述截图我们可以看到 通过dts数据传输 mysql的数据变动也会同步到Elasticsearch里面。

总结

通过上面的步骤,我们成功地使用阿里云的数据传输服务(DTS)将 MySQL 数据同步到了 Elasticsearch,实现了全量和增量数据的同步。DTS 自动创建了与 MySQL 表结构一致的 Elasticsearch 索引,大大简化了配置过程,同时确保了数据的实时性和一致性。在实际操作中,DTS 提供了便捷的任务管理和监控功能,使我们能够随时查看同步进度并快速验证数据同步效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/451355.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android OpenGL粒子特效

在本篇,我们将开启一个新的项目,探索粒子的世界。粒子是一种基本的图形元素,它们通常被表示为一组点。通过巧妙地组合一些基础的物理效果,我们能够创造出许多令人惊叹的视觉效果。想象一下,我们可以模拟一个水滴从喷泉…

Xcode使用Instruments的dsym还原符号堆栈问题

文章目录 设置符号表的步骤参考资料 设置符号表的步骤 instruments 的 Settings 中,可以设置符号表的搜索路径 没有生效的话,继续看 File 里面的 Symbols - 出现弹窗后点击 Add Symbols - 然后再点击 Apply。 参考资料 https://xjkstar.github.i…

Unity URP shader ———魔系符文宝石是如何练成的

各位同学大家好 我已经很久没有没有写教程了,最近项目比较忙。各种加班各种带小孩儿,不过,老师一有机会也在给尽可能服务大家,今天来一个硬菜:移动端高效魔系符文如何制作,国庆起来,老师抽了点…

汽车免拆诊断案例 | 2013款宝马116i车偶尔加速不良

故障现象  一辆2013款宝马116i车,搭载N13B16A 发动机,累计行驶里程约为12.1万km。车主反映,该车行驶中偶尔加速无反应,且发动机故障灯异常点亮。 故障诊断 接车后试车,故障现象无法再现。用故障检测仪检测&#xff…

RestClient查询文档match查询、精确查询和布尔查询

目录 match查询 精确查询 布尔查询 match查询 全文检索的match和multi_match查询与match_all的API基本一致。差别是查询条件,也就是query的部分。 因此,Java代码上的差异主要是request.source().query()中的参数了。同样是利用QueryBuilders提供的方法…

解决在Windows中安装tensorflow2.10无法检测到GPU的问题

解决在Windows中安装tensorflow2.10无法检测到GPU的问题 官方给出的Windows本地安装方式 更新显卡驱动到最新。安装anaconda或miniconda作为python环境的管理工具。创建新的环境tf:conda create --name tf python3.9,然后进入改环境:conda …

redis的zset实现下滑滚动分页查询思路

常规zset查询 我们redis的数据为 我们知道 我们常规查询的话 我们假如 zset 表中 有7个元素,然后我们进行分页查询的话,我们一次查3个元素,然后查出来元素 和元素的分数 我们redis的语法应该这样写 zrevrangebyscore wang 1000 0 withsc…

目标检测最新SOTA模型D-FINE

2024年10月18号,中科大推出了 D-FINE,这是一款功能强大的实时物体检测器,通过重新定义 DETR 模型中的边界框回归任务实现了出色的定位精度。 摘要 D-FINE 包含两个关键组件:细粒度分布细化 (FDR) 和全局最优定位自蒸馏 (GO-LSD)…

【正点原子K210连载】第四十五章 人脸识别实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第四十五章 人脸识别实验 在上一章节中,介绍了利用maix.KPU模块实现了人脸68关键点检测,本章将继续介绍利用maix.KPU模块实现的人脸识别。通过本章的学习,读者将学习到人脸识别应用在CanMV上的实现。 本章分为如下几个小节: 45.1…

vue3使用element-plus手动更改url后is-active和菜单的focus颜色不同步问题

在实习,给了个需求做个新的ui界面,遇到了一个非常烦人的问题 如下,手动修改url时,is-active和focus颜色不同步 虽然可以直接让el-menu-item:focus为白色能解决这个问题,但是我就是想要有颜色哈哈哈,有些执…

车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导

FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题? 可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。 2.在做ota测试的过程中&#xff…

【鸡翅Club】项目启动

一、项目背景 这是一个 C端的社区项目,有博客、交流,面试学习,练题等模块。 项目的背景主要是我们想要通过面试题的分类,难度,打标,来评估员工的技术能力。同时在我们公司招聘季的时候,极大的…

前端SSR框架(Next、Nuxt)利用宝塔面板部署

1、部署的本质 SSR服务端渲染的框架部署区别于常规的CSR项目的部署,并不是打包之后访问某个文件就行,而是需要在服务器中运行项目之后访问某个地址,无论是基于Vue的Nuxt.js框架还是基于React的Next.js框架道理都是一样的 因此区别于CSR我们…

Django学习-静态文件

注意:配置项是个元祖,如果只有一项,别忘了在元素后面加逗号 settings: STATICFILES_DIRS (os.path.join(BASE_DIR,static),)urls: path(test_static, views.test_static)views: def test_static(request):return render(request,test_stat…

中科星图(GVE)——过火面积识别(dNBR)和CART方法进行火灾识别

目录 简介 函数 sampleRegions(collection,properties,scale,projection,tileScale,geometries) gve.Classifier.Cart(maxNodes,minLeafPopulation,maxDepth) updateMask(mask) 代码 网址推荐 知识星球 机器学习 简介 过火面积识别(dNBR)和CART…

Jlink 直接读取单片机数据

1. 驱动版本 因人而异,这里我使用的是 “J-Flash V6.96” 本人驱动链接:夸克网盘 提取码:rgzk 2. 打开软件 3. 创建jlink工程 4. 选择芯片 此处本人使用芯片 “STM32F103VCT6” 5. 连接单片机 连接成功反馈 6. 读取单片机内部数据 …

WordPress监控用户行为回放插件

在数字营销的世界里,了解用户行为是提升用户体验和转化率的关键。nicen-replay 插件,它能够让您轻松回放用户在网站上的每一步操作,从点击到滚动,再到表单填写,每一个细节都清晰可见 nicen-replay,是一款可…

目标检测——Cascade R-CNN算法解读

论文: Cascade R-CNN: Delving into High Quality Object Detection (2017.12.3) 链接:https://arxiv.org/abs/1712.00726 Cascade R-CNN: High Quality Object Detection and Instance Segmentation (2019.6.24) 链接:https://arxiv.org/abs…

Miniconda管理虚拟环境【Python环境配置】

Miniconda管理虚拟环境【Python环境配置】 1. 下载并安装Miniconda2. 管理虚拟环境3. 管理虚拟环境中的包 1. 下载并安装Miniconda 1. 下载 从清华大学开源软件镜像站 | Tsinghua Open Source Mirror 下载Miniconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda…

基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…