数据同步方案

2023-11-17

mysql 数据同步到elastic中

本文中不提及实现,仅提供方案;

增量数据同步

方案一:

通过logstash,官方提供的工具,快速实现数据同步;值得注意的是选择logstash时需要和elastic的版本做对应,由于elastic 版本不兼容,选择logstash的也需要对应版本;
logstash集群部署有一些麻烦,当然也可以直接购买云产品;

方案二

通过binlog的方式进行同步;同样的时有云产品,也可以通过cannal实现对mysql的binlog的订阅;订阅到binlog 以后对数据进行解析,通过java代码的方式进行同步;为了提高并发和容灾,集群下可以使用mq削峰;将订阅到binlog 通过mq发送,由订阅的客户端进行消费,极大的提高数据的处理速度;
集群下有可能出现乱序的问题,这部分需要在代码中对消息的创建时间进行记录,如果是同一条数据,需要根据创建时间对数据进行最终的修改,比如先修改后删除了某条数据,由于投递和消费的速度不一致,导致数据先被删除了,然后又被修改了,导致这条数据最后在es中是出于修改的状态而不是删除;

优缺点对比

logstash的缺点
  1. logstash 日志监控不是很方便,出现异常不容易即时排查
  2. 他的实现方式需要依赖自增ID或者可以标识当前数据为最新数据的时间戳字段,如果以上两个条件不满足则无法使用;
  3. sql编写的能力要求较高;通常情况下需要同步到es一般会融合几个表的数据,这边建议可以创建视图;
  4. 由于上述特性,如果使用的是时间戳,那么有可能出现数据丢失的情况;
  5. 集群可用方案较少
logstash的优点
  1. 上手快,毕竟是一个工具,又输入,处理,输出三部分组成,并且又大量案例,很快就能实现数据同步,增量全量均可;
  2. 0 代码,通过配置即可操作;
  3. 插件众多,并且可以自定义三个部分的插件,比较友好;

全量数据同步

  1. logstash 通过配置起始时间即可
  2. 通过调度任务;

核心思想

  1. 如何捞取有效数据
  2. 如何批量处理数据
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据同步方案 的相关文章

  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • 非生产模式下的 Elasticsearch docker 容器可消除 vm.max_map_count=262144 要求

    如何配置 elasticsearch docker 容器 elasticsearch 7 5 0 以使用更少的资源并在非生产模式下运行 我想在 Jenkins 和我的桌面上运行容器 并且满足以下要求这个弹性文档 https www elas
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤

随机推荐

  • SQL数据库创建失败,提示无法创建列出的某些文件名

    在学习SQL的时候出现了很多低级错误 如下 use master CREATE DATABASE SQL2012Db ON PRIMARY NAME Sql2012Data FILENAME E Program Files Microsof
  • Android总结之链式调用(方法链)

    前言 最近在学习总结Android属性动画的时候 发现Android的属性动画设计采用了链式调用的方式 然后又回顾了一下了以前接触的开源框架Glide也是采用链式调用的方式 还有最近火的一塌糊涂的RxJava也是采用链式调用 为何如此之多的
  • STM32---stm32f103c8t6与stm32f103zet6之间的代码移植转换

    目录 一 将c8t6转换为zet6 1 修改启动文件 2 修改芯片 3 将MD修改为HD 4 下载器的修改 5 修改完成 编译成功 二 将zet6转换为c8t6 一 将c8t6转换为zet6 1 修改启动文件 最终结果如下 2 修改芯片 将
  • RedHat8(RHEL8)超详细安装教程--图文解说版

    目录 一 RHEL8介绍 二 产品地址 三 安装 1 文件 gt 新建虚拟机 快捷键 Ctrl N 2 这里我们选择 自定义 即可 gt 下一步 3 兼容性 保持默认 gt 下一步 4 稍后安装 gt 下一步 5 选择 Linux 操作系统
  • OBJ转GLTF

    obj转gltf的方法较多 这里采用cesium 1 下载cesuim开发包 2 进入cesium根目录 npm下载obj2gltf 没有npm的 自行安装 npm install obj2gltf save 3 将 obj mlt等文件复
  • 数据挖掘学习

    文章目录 绪论 定义 挖掘过程 数据准备 数据探索EDA 数据仓库 空间数据库 时间数据库和时序数据库 流数据 异构数据和遗产数据 数据挖掘的模式 数据准备 数据组成 什么是数据对象 什么是数据属性 数据搜集 数据质量分析 数据类型 考点
  • 国产操作系统产业

    操作系统是计算机的灵魂 目前国外操作系统品牌几乎垄断了巨大的中国市场 其中在桌面端 移动端的市占率分别超过94 75 98 86 根据Gartner的统计数据 2018年中国的操作系统市场容量在189亿以上 其中国外操作系统品牌几乎在中国市
  • Gossip协议

    Gossip协议 一 Gossip协议 1 1 工作原理 1 2 Gossip优点 1 3 Gossip传播方式 1 3 1 Anti Entropy 反熵 1 3 2 Rumor Mongering 谣言传播 1 3 3 结合 1 4 G
  • 初识C语言(二)

    目录 五 字符串 六 转义字符 七 注释 7 1注释的类型 7 1 1单行注释 7 1 2多行注释 7 2注释的使用方法 7 2 1解释代码功能注释 7 2 2提供代码示例注释 7 2 3禁用或屏蔽代码 八 选择语句 8 1if语句 8 1
  • 利用python3自动在36kr里查找自己感兴趣的内容

    最近常常在36kr网站的快讯及资讯 最新里查看自己感兴趣内容的及时信息 由于快讯及资讯 最新里信息更新得比较及时快速 自己也很难一直盯着看 故想着要是写个脚本让其自动在后天挂着每隔5分钟查询一次 有的话就写入txt档中并在控制台打印出来 这
  • 小孩学创客编程好还是学机器人好

    小孩学创客编程好还是学机器人好 小孩的学习一直都是很多家长们非常关心和重视的一件事情 很多的家长在培养孩子的学习的时候 可以说是十分的用心的 会给孩子选择一些能够有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有
  • 域环境的搭建的详细教程-220109

    参考链接 https mp weixin qq com s src 11 timestamp 1641696209 ver 3547 signature zTIDZEcpq zjwuEuZpbaaAxFfkkVxcLHeX4AuKT78bJ
  • 第九届蓝桥杯 2018年省赛真题 (Java 大学C组 )

    蓝桥杯 2018年省赛真题 Java 大学C组 第一题 哪天返回 第二题 猴子分香蕉 第三题 字母阵列 第四题 第几个幸运数 第五题 书号验证 第六题 打印大X 第七题 缩位求和 第八题 等腰三角形 第九题 小朋友崇拜圈 第十题 耐摔指数
  • RHCE——DNS的正反向解析

    一 实验要求 DNS配置正反向解析 二 实验过程 1 安装软件包 root localhost ll yum install bind y 2 备份bind软件的的配置文件 root localhost yum repos d cp a e
  • CMAKE学习——编译多个文件 & 多个目录

    大型工程会有很多文件 包括类的实现和定义 各种不同的模块交叉在一起 我们怎么用cmake方便的编译呢 例如有这么一个工程 我们现在想要编译的话 如果只选择了main cpp 则会提示 未定义的引用 因为我们头文件和实现分离 但我们只包含了头
  • 【云原生之Docker实战】使用Docker部署jenkins持续集成工具

    云原生之Docker实战 使用Docker部署jenkins持续集成工具 一 jenkins介绍 1 jenkins简介 2 jenkins功能 3 jenkins基本工作图 二 检查本地系统版本 三 检查本地docker状态 1 检查do
  • IDEA运行报错:类文件具有错误的版本 55.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。

    IDEA运行报错 类文件具有错误的版本 55 0 应为 52 0 请删除该文件或确保该文件位于正确的类路径子目录中 如果搜索资料 会看到minor major版本 但其实不叫这个名字 Sun公司会在大的版本升级时增加major数字 小更新或
  • 【python】自动化测试框架--nose

    目录 一 准备 二 nose介绍 三 看个简单的例子了解下 三 nose常用命令简单介绍 1 查看所有nose相关命令 2 执行并捕获输出 3 提供XUnit XML 格式的测试结果 并存储在nosetests xml文件中 主要为jenk
  • 程序员的自我修养--链接、装载与库

    中国科学技术大学软件学院 周艾亭 原创作品版权所有转载请注明出处 第一次接触 程序员的自我修养 的时候 的确怀有一种疑惑的态度的 因为潜意识告诉我 在计算机这一行 更强调的是实践动手 而XXX修养的显然不属于动手操作类 至少不是太适合我的需
  • 数据同步方案

    mysql 数据同步到elastic中 本文中不提及实现 仅提供方案 增量数据同步 方案一 通过logstash 官方提供的工具 快速实现数据同步 值得注意的是选择logstash时需要和elastic的版本做对应 由于elastic 版本