使用 Logstash 输入 MySQL 数据的完整指南

在处理数据时,将 MySQL 数据通过 Logstash 输入到 Elasticsearch 是一个常见的需求。本文将为刚入门的小白提供一个详细的指南,帮助你实现这一功能。在我们开始之前,让我们先了解流程。

流程概述

下面是实现“Cenos 7 Logstash input MySQL”的步骤概述:

步骤 描述
1 安装 ELS (Elasticsearch), Logstash 和 Kibana
2 创建 MySQL 数据库和表
3 安装 Logstash MySQL 插件
4 配置 Logstash 输入 MySQL 的管道
5 启动 Logstash 并检查数据是否成功转移

接下来,我们将详细探讨每一步的具体实现。

1. 安装 ELS (Elasticsearch, Logstash, Kibana)

在 CentOS 7 上,你可以使用以下命令来安装 ELS:

# 导入公钥
sudo rpm --import 

# 添加 Elastic 的 YUM 仓库配置
cat <<EOF | sudo tee /etc/yum.repos.d/elastic-7.x.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=
gpgcheck=1
gpgkey=
enabled=1
autorefresh=1
type=rpm-md
EOF

# 安装 Elasticsearch, Logstash 和 Kibana
sudo yum install elasticsearch logstash kibana

注释

  • 导入公钥和添加 YUM 仓库使得 CentOS 能够从特定源上获取对应的软件包。
  • sudo yum install 命令用于安装 Elasticsearch, Logstash 和 Kibana。

2. 创建 MySQL 数据库和表

在 MySQL 中创建一个示例数据库和表:

CREATE DATABASE example_db;

USE example_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com'), ('Jane Smith', 'jane@example.com');

注释

  • CREATE DATABASE 创建一个名为 example_db 的数据库。
  • CREATE TABLE 创建一个名为 users 的表,包含 id, name, email三个字段。
  • INSERT INTO 命令用于向 users 表中插入示例数据。

3. 安装 Logstash MySQL 插件

Logstash 需要安装 MySQL 插件。使用以下命令:

/usr/share/logstash/bin/bin/logstash-plugin install logstash-input-jdbc

注释

  • 此命令安装了 Logstash JDBC 输入插件,使 Logstash 能够从 MySQL 数据库输入数据。

4. 配置 Logstash 输入 MySQL 的管道

创建 Logstash 配置文件(例如 /etc/logstash/conf.d/mysql-input.conf):

input {
    jdbc {
        jdbc_driver_library => "/path/to/mysql-connector-java-x.x.x.jar"  # JDBC驱动的路径
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"  # MySQL JDBC类
        jdbc_connection_string => "jdbc:mysql://localhost:3306/example_db"  # 数据库连接字符串
        jdbc_user => "your_user"  # 数据库用户
        jdbc_password => "your_password"  # 数据库密码
        statement => "SELECT * FROM users"  # SQL查询语句
    }
}

output {
    elasticsearch {
        hosts => ["http://localhost:9200"]  # Elasticsearch的主机以及端口
        index => "users"  # 输出的索引名称
    }
}

注释

  • input 部分是输入配置,指定从 MySQL 中读取数据,所需的 JDBC 驱动及连接参数。
  • output 部分指定将数据输出到 Elasticsearch,并定义目标索引的名称。

5. 启动 Logstash 并检查数据是否成功转移

使用以下命令启动 Logstash:

sudo systemctl start logstash

可以使用以下命令查看 Logstash 的状态:

sudo systemctl status logstash

如果没有错误,可以通过访问 Elasticsearch 验证数据:

curl -X GET "localhost:9200/users/_search?pretty"

注释

  • systemctl 命令用于管理服务(启动、停止、查看状态)。
  • 使用 curl 检查 Elasticsearch 中的 users 索引,确保数据已成功转移。

因为情况复杂,我们将创建一个类图

类图示例

classDiagram
    class Logstash {
        +jdbc_connection_string
        +jdbc_user
        +jdbc_password
        +statement
        +start()
    }
    class MySQL {
        +createDatabase()
        +createTable()
        +insertData()
    }
    class Elasticsearch {
        +indexData()
        +searchData()
    }

    Logstash --> MySQL : reads_data_from
    Logstash --> Elasticsearch : writes_data_to

旅行图示例

journey
    title 从 MySQL 到 Elasticsearch 的数据转移
    section 安装环境
      安装 Elaticsearch <3> :done
      安装 Logstash <3> :done
    section 数据准备
      创建数据库 <5> :done
      插入数据 <5> :done
    section 配置 Logstash
      安装 JDBC 插件 <4> :done
      配置输入输出 <4> :done
    section 数据转移
      启动 Logstash <6> :done
      检查 Elasticsearch <6> :done

结尾

本文详细阐述了如何在 CentOS 7 上通过 Logstash 输入 MySQL 数据,并将其输出到 Elasticsearch。掌握这一过程,不仅意味着你对数据流有了更深入的理解,也为后续的工作打下了坚实的基础。希望本指南能帮助你顺利完成任务,今后继续深入探索数据处理的更多可能性!