Mysql到Elasticsearch高效实时同步Debezium实现

关于Mysql到Elasticsearch高效实时同步Debezium实现的攻略,我可以提供如下具体步骤:

准备工作

  1. 安装Mysql、Elasticsearch、Kibana和Debezium Connector并设置好它们的环境变量,确保能正常运行它们。

  2. 开启binlog以便Debezium捕获Mysql的数据变更,具体可以在Mysql中修改配置文件my.cnf,设置log-bin=mysql-bin并重启服务。

配置Debezium Connectors

  1. 在Debezium中配置Mysql Connector并启动它:

json
{
"name": "db-connector",
"config": {
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
"tasks.max": "1",
"database.hostname": "localhost",
"database.port": "3306",
"database.user": "root",
"database.password": "root",
"database.server.id": "1",
"database.server.name": "db",
"database.history.kafka.bootstrap.servers": "localhost:9092",
"database.history.kafka.topic": "db.history"
}
}

该配置告诉Debezium连接到本地的Mysql服务,并通过Kafka消息队列来保存Mysql的历史数据变更。

  1. 在Debezium中配置Elasticsearch Connector并启动它:

json
{
"name": "es-connector",
"config": {
"connector.class": "io.debezium.connector.elasticsearch.ElasticsearchConnector",
"tasks.max": "1",
"database.hosts": "http://localhost:9200",
"database.user": "elastic",
"database.password": "changeme",
"database.history.kafka.bootstrap.servers": "localhost:9092",
"database.history.kafka.topic": "es.history",
"key.ignore": "true"
}
}

该配置告诉Debezium连接到本地的Elasticsearch服务,并通过Kafka消息队列来保存新的数据变更。

验证

  1. 在Mysql中创建一张新表:

sql
CREATE TABLE `db`.`users` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`email` VARCHAR(45) NOT NULL,
`password` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`)
);

  1. 在Kibana中验证新表同步到了Elasticsearch:

shell
curl -X GET "http://localhost:9200/users/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match_all": {}
}
}
'

预期结果为:

json
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}

  1. 在Mysql中插入一条新的用户数据:

sql
INSERT INTO `db`.`users` (`name`, `email`, `password`) VALUES ('test', 'test@example.com', 'test');

  1. 再次在Kibana中验证同步到了Elasticsearch:

shell
curl -X GET "http://localhost:9200/users/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match_all": {}
}
}
'

预期结果为:

json
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "users",
"_type": "doc",
"_id": "1",
"_score": 1,
"_source": {
"id": 1,
"name": "test",
"email": "test@example.com",
"password": "test"
}
}
]
}
}

以上即是Mysql到Elasticsearch高效实时同步Debezium实现的攻略,希望能帮到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql到Elasticsearch高效实时同步Debezium实现 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Spring security基于数据库中账户密码认证

    Spring Security是Spring框架中提供的一个安全权限框架。它将认证(Authentication)和授权(Authorization)抽象为一个独立的模块,可以快速地将安全性集成到应用程序中。Spring Security可以基于多种认证方式,包括基于数据库中账户密码的认证。 基于数据库中账户密码认证的Spring Security攻略如下:…

    Java 2023年5月20日
    00
  • 基于Gradle搭建Spring 5.3.13-release源码阅读环境的详细流程

    下面是基于Gradle搭建Spring 5.3.13-release源码阅读环境的详细流程: 环境准备 在开始之前,我们需要先准备好以下环境: JDK: 安装JDK 8及以上版本 Gradle:安装Gradle 6.8.3及以上版本 Git: 安装Git 2.23及以上版本 下载Spring源码 在完成环境准备之后,我们需要去Spring官网下载Spring…

    Java 2023年5月31日
    00
  • Java中断异常的正确处理方法

    Java中断异常(Interrupted Exception)是指在程序运行过程中,通过调用Thread.interrupt()方法,向正在运行的线程发出一个中断信号,该信号可以被捕获并响应,以进行线程的安全停止或其他处理。对于Java应用程序开发者来说,合理应对线程中的中断异常是非常重要的技能。下面是Java中断异常的正确处理方法的攻略: 1. 感知中断信…

    Java 2023年5月27日
    00
  • Sprint Boot @Component使用方法详解

    @Component是Spring Boot中的一个注解,它用于标记一个类为Spring组件。在使用Spring Boot开发应用程序时,@Component是非常有用的。本文将详细介绍@Component的作用和使用方法,并提供两个示例说明。 @Component的作用 @Component的作用是将一个类标记为Spring组件。使用@Component注…

    Java 2023年5月5日
    00
  • IDEA 开发多项目依赖的方法(图文)

    这里是详细的攻略: 介绍 在使用 Intellij IDEA 开发多个项目时,我们有时会遇到某个项目依赖于另一个项目的情况。如何在 IDEA 中很好地管理这些依赖关系呢?本文将介绍使用 Maven 和 Gradle 管理多项目依赖的方法,并提供两个示例。 使用 Maven 管理多项目依赖 步骤 1:创建 Maven 父项目 首先,我们需要创建一个 Maven…

    Java 2023年5月19日
    00
  • Java之MyBatis的Dao方式以及Dao动态代理详解

    Java之MyBatis的Dao方式以及Dao动态代理详解 MyBatis是基于Java语言的一个ORM框架,它通过XML或注解的方式将Java对象映射到数据库中的表上。在使用MyBatis时,我们可以采用不同的方式进行数据访问,其中之一便是Dao方式。本文将对MyBatis的Dao方式以及Dao动态代理进行详解。 Dao方式 Dao即数据访问对象,它是一种…

    Java 2023年5月20日
    00
  • Java虚拟机最多支持多少个线程的探讨

    Java虚拟机最多支持多少个线程的探讨 Java虚拟机(JVM)是一种能够在不同操作系统上运行Java程序的虚拟机,它的主要功能是将Java字节码转换为计算机可执行代码。在Java程序中,线程(Thread)是用来实现多任务处理的最基本单元,线程的数量对于程序执行的效率和性能有着至关重要的作用。 JVM的线程数量上限 JVM的线程并发数量并不是无限的,它受到…

    Java 2023年5月19日
    00
  • 详细讲解Java中的main()方法

    详细讲解Java中的main()方法 什么是main()方法 在Java中,每个可执行程序都必须包含一个名为 main 的方法。main 方法是程序的入口点,是Java程序启动时执行的第一个方法。在Java中,main 方法被定义为 public static void main(String[] args)。这表示 main 方法是公共的(可以从任何地方访…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部