当前位置: 首页 > news >正文

mysql实时同步到es

测试了多个方案同步,最终选择oceanu产品,底层基于Flink cdc
1、实时性能够保证,binlog量很大时也不产生延迟
2、配置SQL即可完成,操作上简单

下面示例mysql的100张分表实时同步到es,优化备注等文本字段的like查询

创建SQL作业

CREATE TABLE from_mysql (id int,cid int NOT NULL,gid bigint NOT NULL,content varchar,create_time TIMESTAMP(3)  ,PRIMARY KEY (id) NOT ENFORCED
) WITH ('connector' = 'mysql-cdc','hostname' = 'mysql-ip','port' = '3306','username' = 'mysqluser','password' = 'mysqlpwd','database-name' = 'mysqldb','debezium.snapshot.locking.mode' = 'none','table-name' = 'tb_test[0-9]?[0-9]','server-id' = '100-110','server-time-zone' = 'Asia/Shanghai','debezium.skipped.operations' = 'd','debezium.snapshot.mode' = 'schema_only','debezium.min.row.count.to.stream.results' = '50000'
);CREATE TABLE to_es (id string,tableid int,tablename string,cid int NOT NULL,gid string NOT NULL,content string,create_time string,PRIMARY KEY (id,companyId) NOT ENFORCED
) WITH ('connector.type' = 'elasticsearch', 'connector.version' = '7', 'connector.hosts' = 'http://ip:9200','connector.index' = 'myindex','connector.document-type' = '_doc','connector.username' = 'elastic','connector.password' = 'password123','update-mode' = 'upsert','connector.key-delimiter' = '$','connector.key-null-literal' = 'n/a','connector.failure-handler' = 'retry-rejected','connector.flush-on-checkpoint' = 'true','connector.bulk-flush.max-actions' = '10000','connector.bulk-flush.max-size' = '2 mb','connector.bulk-flush.interval' = '2000','connector.connection-max-retry-timeout' = '300','format.type' = 'json'
);INSERT INTO to_es
SELECT
concat(CAST(id as string),'-',CAST(mod(cid,100) AS VARCHAR)) as id, 
id tableid,
tablename,
cid,
gid,
content,
DATE_FORMAT(create_time, 'yyyy-MM-dd HH:mm:ss') as create_time
from from_mysql

这里主要注意字段类型
scan.startup.mode:“initial”(默认,同步历史数据),“latest-offset” 同步增量数据
最后insert可以加where,只同步需要的行数据

es配置

配置好mapping、setting和自己的分词器

使用自字义分词是因为字段中所有涉及的标点符号、空格等都可以来检索

PUT myindex-20230314/
{ "mappings": {"properties": {"id":{"type": "text"},"tableid":{"type": "long"},"cid":{"type": "long"},"gid":{"type": "text","analyzer": "my_analyzer"},"content":{"type": "text","analyzer": "my_analyzer"},"create_time" : {"type" : "keyword"}}},"settings": {"index":{"number_of_shards": "10","number_of_replicas": "1","refresh_interval" : "1s","translog": {"sync_interval": "30s","durability": "async"},"codec": "best_compression",   "analysis": {"analyzer": {"my_analyzer": {"tokenizer": "my_tokenizer","filter": ["lowercase"]}},"tokenizer": {"my_tokenizer": {"type": "ngram","min_gram": 1,"max_gram": 2,"token_chars": ["letter","digit","whitespace","punctuation","symbol"]}}}}}
}

使用别名,方便后续的维护

 POST /_aliases
{"actions": [{ "add":    { "index": "myindex-20230314", "alias": "myindex" }}]
}

之前测试的

  • canal单进程延迟越来越大,单独配置历史数据同步
  • go-mysql-elasticsearch经常报错重新同步
  • logstash同步100张分表不知道怎么配置

oceanus是收费的对于运维人员不足的情况,可以参考,有精力的可以考虑flink。

相关文章:

mysql实时同步到es

测试了多个方案同步,最终选择oceanu产品,底层基于Flink cdc 1、实时性能够保证,binlog量很大时也不产生延迟 2、配置SQL即可完成,操作上简单 下面示例mysql的100张分表实时同步到es,优化备注等文本字段的like查询 创…...

DeepSeek动画视频全攻略:从架构到本地部署

DeepSeek 本身并不直接生成动画视频,而是通过与一系列先进的 AI 工具和传统软件协作,完成动画视频的制作任务。这一独特的架构模式,使得 DeepSeek 在动画视频创作领域发挥着不可或缺的辅助作用。其核心流程主要包括脚本生成、画面设计、视频合成与后期处理这几个关键环节。 …...

第3章 3.3日志 .NET Core日志 NLog使用教程

3.3.1 .NET Core日志基本使用 书中介绍了把日志输出到控制台的使用方式: 安装 Microsoft.Extensions.Logging 和 Microsoft.Extensions.Logging.Console 日志记录代码: using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.…...

R语言NIMBLE、Stan和INLA贝叶斯平滑及条件空间模型死亡率数据分析:提升疾病风险估计准确性...

全文链接:https://tecdat.cn/?p40365 在环境流行病学研究中,理解空间数据的特性以及如何通过合适的模型分析疾病的空间分布是至关重要的。本文主要介绍了不同类型的空间数据、空间格点过程的理论,并引入了疾病映射以及对空间风险进行平滑处理…...

Java 反射 (Reflection) 详解

一、什么是 Java 反射? Java 反射 (Reflection) 是 Java 语言的一个强大特性,它允许 在运行时 检查和修改类、接口、字段和方法的信息,而不需要在编译时知道这些信息。 换句话说,反射可以让你在程序运行过程中“动态”地获取类的…...

在 C++ 中,`QMessageBox_s::question_s2` 和 `app.question_s2` 的区别(由DS-V3生成)

在 C 中,QMessageBox_s::question_s2 和 app.question_s2 的区别主要在于它们的调用方式和上下文范围。以下是对两者的详细解释: 1. QMessageBox_s::question_s2 解释: QMessageBox_s::question_s2 是一个静态成员函数的调用。它属于类 QMess…...

vxe-grid 通过配置式给单元格字段格式化树结构数据,转换树结构节点

vxe-grid 通过配置式给单元格字段格式化树结构数据,转换树结构节点 比如用户自定义配置好的数据源,通过在列中配置好数据,全 json 方式直接返回给前端渲染,不需要写任何格式化方法。 官网:https://vxetable.cn npm i…...

大厂算法面试常见问题总结:高频考点与备战指南

在大厂算法面试中,数据结构与算法是必考的核心内容。 无论是校招还是社招,算法题的表现往往决定了面试的成败。 为了帮助大家更好地备战,本文总结了大厂算法面试中的高频考点,并提供了详细的备战建议,助你轻松应对面…...

制造行业CRM选哪家?中大型企业CRM选型方案

在当今竞争激烈的制造行业中,企业对于客户关系管理(CRM)系统的需求日益增强,高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在制造业 CRM 市场中,纷享销客和销售易都备受关注,且各自有着…...

PHP集成软件用哪个比较好?

在Windows环境下,使用PHP时,通常需要一个集成开发环境(IDE)或者集成软件来简化开发和调试过程。以下是几款常用且推荐的PHP集成软件,每款都有其特点,可以根据需求进行选择: 1. XAMPP 特点&…...

当pcie设备变化时centos是否会修改网络设备的名称(AI回答)

当pcie设备变化时centos是否会修改网络设备的名称 在CentOS(以及其他基于Linux的操作系统)中,网络接口的命名通常遵循特定的规则,尤其是在使用PCIe设备(如网络适配器)时。网络接口的命名通常基于设备的物理…...

Mac arm架构使用 Yarn 全局安装 Vue CLI

dgqdgqdeMacBook-Pro spid-admin % vue --version zsh: command not found: vue要使用 Yarn 安装 Vue CLI,你可以执行以下命令: yarn global add vue/cli这个命令会全局安装 Vue CLI,让你可以使用 vue 命令创建、管理 Vue.js 项目。以下是一…...

【Python游戏】双人简单对战游戏

以下是一个使用 Python 的 pygame 库实现的简单对战游戏示例,游戏中玩家可以控制两个角色进行对战,并且支持自定义图片(最好使用无底色的png图片)。完整源码以及实现思路: import pygame import os# 初始化 Pygame pygame.init()# 设置游戏窗…...

Windows11切换回Windows10风格右键菜单

参考文章:Win11新版右键菜单用不惯?一键切换回Win10经典版!-CSDN博客 以管理员权限运行命令行cmd 切换为经典旧版右键菜单,执行 reg.exe add “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServe…...

怎么学习调试ISP的参数

摄像头的 **Sensor 获取的 RAW 数据** 是未经处理的原始图像数据,通常需要经过 **ISP(Image Signal Processor,图像信号处理器)** 的处理,才能生成可用的图像或视频。ISP 的作用是对 RAW 数据进行一系列图像处理操作&a…...

“三次握手”与“四次挥手”:TCP传输控制协议连接过程

目录 什么是TCP协议 “三次握手”建立连接 “四次挥手”断开连接 “三次握手”和“四次挥手”的反思 总结 什么是TCP协议 想象一下,你和远方的朋友要进行一场电话交流,但这通电话不仅仅是随便聊聊,而是要传递一封重要的信件。为了确保这…...

OpenCV形态学操作

1.1. 形态学操作介绍 初识: 形态学操作是一种基于图像形状的处理方法,主要用于分析和处理图像中的几何结构。其核心是通过结构元素(卷积核)对图像进行扫描和操作,从而改变图像的形状和特征。例如: 腐蚀&…...

深入理解WebSocket接口:如何使用C++实现行情接口

在现代网络应用中,实时数据传输变得越来越重要。通过WebSocket,我们可以建立一个持久连接,让服务器和客户端之间进行双向通信。这种技术不仅可以提供更快的响应速度,还可以减少不必要的网络流量。本文将详细介绍如何使用C来实现We…...

汇能感知的光谱相机/模块产品有哪些?

CM020A 分辨率:1600H1200V 光谱范围:350~950nm 光谱分辨率:1nm 接口:USB2.0 帧率:16001200 (6帧) 输出格式:Raw 8bit FOV:D73.5H58.8V44.1 相机尺寸:505055mm VM02S10 分辨率…...

抓包工具是什么?

抓包工具是一种用于捕获和分析网络数据包的软件或硬件设备。它可以帮助用户监控网络通信过程,查看网络中传输的数据内容、协议类型、源地址、目的地址等信息。以下是关于抓包工具的一些详细解释: 1. 主要功能 捕获数据包:抓包工具能够实时捕…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

SpringCloudGateway 自定义局部过滤器

场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

《Offer来了:Java面试核心知识点精讲》大纲

文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...