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

news2024/10/18 9:52:37

在上一篇文章中,我通过一个简单的例子实现了如何通过 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.coloradmin.cn/o/2217684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenHarmony 入门——ArkUI 自定义组件内同步的装饰器@State小结(二)

文章大纲 引言一、组件内状态装饰器State1、初始化2、使用规则3、变量的传递/访问规则说明4、支持的观察变化的场景5、State 变量的值初始化和更新机制6、State支持联合类型实例 引言 前一篇文章OpenHarmony 入门——ArkUI 自定义组件之间的状态装饰器小结(一&…

Linux——网络层协议

前言 网络层:在复杂的网络环境中确定一个合适的路径 目录 前言 一IP协议 1预备知识 2基本概念 3格式 4网段划分 4.1理解IP 4.2IP组成 4.3划分方式 4.4为什么要网段划分 5特殊的IP地址 6IP地址的限制 7私有IP和公网IP 8NAT技术 9理解公网 10路由 …

软件数据安全评估

简介 SQLmap是一款「自动化」SQL注入 工具,kali自带。 可以自己手动安装 地址 源码 源码汉化版kali自带 开启 python 自己直接编译运行 kali 使用方法 1 Options(选项) -h,--help 显示帮助消息 -hh 显示详细帮助 -version -v…

【JavaScript】网页交互的灵魂舞者

我的主页&#xff1a;2的n次方_ 1. JavaScript 的三种引入方式 引⼊⽅式 语法描述 ⽰例 ⾏内样式 直接嵌⼊到 html 元素内部 <input type"button" value"点我⼀下" οnclick"alert(haha)"> 内部样式 定义<script>标签&a…

云计算第四阶段: cloud二周目 07-08

cloud 07 一、k8s服务管理 创建服务 # 资源清单文件 [rootmaster ~]# kubectl create service clusterip websvc --tcp80:80 --dry-runclient -o yaml [rootmaster ~]# vim websvc.yaml --- kind: Service apiVersion: v1 metadata:name: websvc spec:type: ClusterIPselector…

IGFBP7:免疫治疗新靶点

前 言 胰岛素样生长因子结合蛋白7&#xff08;IGFBP7&#xff09;是胰岛素超家族的生长促进肽成员&#xff0c;可与胰岛素和IGF结合&#xff0c;调控细胞生长和分化。IGFBP7在不同的肿瘤类型中表现出抑制或促进肿瘤生长的“自相矛盾”活性。研究发现IGFBP7可增强治疗性单克隆…

C语言 | Leetcode C语言题解之第491题非递减子序列

题目&#xff1a; 题解&#xff1a; int** ans; int ansSize; int* temp; int tempSize;void dfs(int cur, int last, int* nums, int numsSize, int** returnColumnSizes) {if (cur numsSize) {if (tempSize > 2) {ans[ansSize] malloc(sizeof(int) * tempSize);memcpy(…

HDLBits中文版,标准参考答案 | 5 Verification: Writing Testbenches | 验证:编写测试平台

关注 望森FPGA 查看更多FPGA资讯 这是望森的第 24 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 Clock 2 Testbench1 3 AND gate 4 Testbench2 5 T flip-fop 本文中的代码都能够正常运行&#xff0c;请放心食用&#x1f60b;~ 练习的官方网站是&#xff1a;https://hdlbi…

Hi3061M——VL53L0X激光测距(IIC)(同样适用于其他MCU)

这里写目录标题 前言VL53L0X的简介VL53L0X的初始化和效准过程的相关APIVL53L0X开始测量和获取测量值VL53L0X移植配置结语 前言 手头正好有一个空闲的激光测距模块VL53L0X&#xff0c;想在Hi3061M上跑一下测距&#xff0c;以前并没有用过VL53L0X&#xff0c;想着以为还是向以前…

浅谈针对Nor flash状态寄存器保护位修改方法

浅谈针对Nor flash状态寄存器保护位修改 ✨最近在写QSPI驱动Nor flash过程中&#xff0c;在操作芯片的状态寄存器的时候&#xff0c;遇到的一些问题和解决办法。 &#x1f52c;操作Nor flash测试芯片&#xff1a;GD25Q64&#x1f516;以QSPI测试为例&#xff0c;SPI方式修改没有…

集成电路学习:什么是WLAN无线局域网

WLAN&#xff1a;无线局域网 WLAN&#xff0c;即无线局域网&#xff08;Wireless Local Area Network&#xff09;&#xff0c;是一种通过无线技术构建的局域网络&#xff0c;它使用无线信号传输数据&#xff0c;取代了传统有线网络中的网线连接。以下是关于WLAN的详细解释&…

Lumerical学习——优化和参数扫描(Optimization and parameter sweeps)

一、概要介绍 这部分介绍优化和参数扫描项目设定的方法。在有大量数据模拟计算过程中这个特性允许用户使处理方法自动地查找期望的参数值。 ① 创建一个参数扫描任务 ② 创建一个优化任务 ③ 创建一个良率分析任务 ⑤ 打开所选择项目的编辑窗口&#xff0c;编辑其属性…

stm32 bootloader写法

bootloader写法&#xff1a; 假设app的起始地址&#xff1a;0x08020000&#xff0c;则bootloader的范围是0x0800,0000~0x0801,FFFF。 #define APP_ADDR 0x08020000 // 应用程序首地址定义 typedef void (*APP_FUNC)(void); // 函数指针类型定义 /*main函数中调用rum_app&#x…

【Unity】Unity Shader学习笔记(八)基础纹理2:高度纹理、法线纹理、模型空间下的法线纹理、切线空间下的法线纹理光照计算

文章目录 凹凸映射法线纹理设置高度纹理&#xff08;Height Map&#xff09;法线纹理&#xff08;Normal Map&#xff09;模型空间的法线纹理切线空间的法线纹理优劣对比 切线空间下的法线纹理光照计算最终效果完整代码TANGENT语义内置宏 TANGENT_SPACE_ROTATIONObjSpaceLightD…

前缀和--一维和二维模板

前缀和 【模板】前缀和 描述 给定一个长度为n的数组a1,a2,…ana1,a2,…a**n. 接下来有q次查询, 每次查询有两个参数l, r. 对于每个询问, 请输出alal1…ara**la**l1…a**r 输入描述&#xff1a; 第一行包含两个整数n和q. 第二行包含n个整数, 表示a1,a2,…ana1,a2,…a**n.…

JavaWeb——Maven(4/8):Maven坐标,idea集成-导入maven项目(两种方式)

目录 Maven坐标 导入Maven项目 第一种方式 第二种方式 Maven坐标 Maven 坐标 是 Maven 当中资源的唯一标识。通过这个坐标&#xff0c;我们就能够唯一定位资源的位置。 Maven 坐标主要用在两个地方。第一个地方&#xff1a;我们可以使用坐标来定义项目。第二个地方&#…

CLANet:基于明场图像的跨批次细胞系识别综合框架|文献速递-基于深度学习的医学影像分类,分割与多模态应用

Title 题目 CLANet: A comprehensive framework for cross-batch cell line identificationusing brightfield images CLANet&#xff1a;基于明场图像的跨批次细胞系识别综合框架 01 文献速递介绍 细胞系鉴定&#xff08;Cell Line Authentication&#xff0c;CLA&#x…

英飞达医学影像存档与通信系统 WebUserLogin.asmx 信息泄露漏洞复现

0x01 产品简介 英飞达医学影像存档与通信系统 Picture Archiving and Communication System,它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机,各种红外仪、显微仪等设备产生的图像)通过各种接口(模拟,DICOM,网络…

二叉树与堆讲解

目录 1.树的概念及结构 1.树的概念 2.树的相关概念 3.树的表示 2.二叉树 1.概念 2.特殊的二叉树 1.满二叉树 2.完全二叉树 3.二叉树的性质 4.二叉树的存储结构 1.顺序结构 2.链式存储 3.堆 1.堆的概念及结构 2.堆的实现 1.堆的创建 2.堆的初始化&#xff08;H…

力扣力扣力:206. 反转链表

leetcode链接&#xff1a;206. 反转链表 题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5]输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1…