windows环境基于Elasticsearch8.4.0的Logstash工具实现Mysql数据库表数据备份同步

目录

问题现象:

解决方法:

1、下载Logstash工具

2、配置

2.1、mysql数据库可用

2.2、下载依赖包mysql-connector-java-8.0.30.jar

拓展:如何下载maven官网的依赖

 2.3、创建脚本文件find.sql

2.4、创建配置文件mysql.conf

3、启动Logstash开始mysql表数据备份


问题现象:


前言(选看)

      最近在重温Elasticsearch,看来一下官网,都出到8.4.3版本了。想当初学的时候用的还是5.6.8,版本更新了很多意味着有大变动。


         windows环境基于Elasticsearch8.4.0的Logstash工具实现Mysql数据库表数据备份同步!


解决方法:

1、下载Logstash工具

         Elastic官网下载:

         Past Releases of Elastic Stack Software | Elastic

          注意版本号要和Elasticsearch的版本号相同,所以这里我下载的是8.4.0,点击WINDOWS即可开始zip包的下载:

         下载完成后解压到自定义位置,如(D:\logstash-8.4.0)。


2、配置

2.1、mysql数据库可用

         首先要保证mysql服务已经启动,并且是数据库可以连接的(这里用我mysq服务的mysqltest数据库中student表来做实践):

2.2、下载依赖包mysql-connector-java-8.0.30.jar

         在解压后的logstash目录下新建文件夹mysql:

         可以在maven仓库官网找到并下载依赖包,这里我下载的是8.0.30版本:

         下载好的依赖包放入到上面新建的mysql目录下。


拓展:如何下载maven官网的依赖

          这里简单提一下怎么下载依赖吧,其实回想一下我们平时是如何在Spring/Springboot项目中引入依赖的就知道了。

         将上图中红框部分复制到Spring/Springboot项目的pom.xml文件中,一般就会自动下载,也可以手动点击Reimport按钮就会启动下载:


 2.3、创建脚本文件find.sql

          在mysql目录下,新建文件find.sql,并写入数据备份所用到的查询sql,如

-- student 为需要导入的表
select * from student

2.4、创建配置文件mysql.conf

         在mysql目录下,新建文件mysql.conf并写入如下配置

input {
    stdin {
    }
    jdbc {
      # mysql 数据库链接,jdbc版本比较大的要加上?后面那串字符
      jdbc_connection_string => "jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
      # 用户名和密码
      jdbc_user => "用户名"
      jdbc_password => "密码"
      # 驱动
      jdbc_driver_library => "mysql-connector-java.jar包所在路径"
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行的sql 就是上一步创建的sql文件的绝对路径+文件名字
      statement_filepath => "find.sql文件所在路径"
	  # 也可以写一个要执行sql语句,替代statement_filepath的方式
	  #statement => "select * from tb_article"
      # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "student"
    }
}


filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}


output {
    elasticsearch {
        # ES的IP地址及端口
        hosts => ["localhost:9200"]
        # 索引名称,elasticsearch叫做索引,相当于es的数据库
        index => "自定义索引名"
        # 自增ID id必须是待查询的数据表的序列字段
        document_id => "%{表的主键字段名}"
    }
    stdout {
       # JSON格式输出
        codec => json_lines
    }
}

         这里也提供一下我自己的配置以供大家参考

input {
    stdin {
    }
    jdbc {
      # mysql 数据库链接,center为数据库名,jdbc版本比较大的要加上?后面那串字符
      jdbc_connection_string => "jdbc:mysql://localhost:3306/mysql_test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
      # 用户名和密码
      jdbc_user => "root"
      jdbc_password => "123456"
      # 驱动
      jdbc_driver_library => "D:\logstash-8.4.0\mysql\mysql-connector-java-8.0.30.jar"
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行的sql 就是上一步创建的sql文件的绝对路径+文件名字
      statement_filepath => "D:\logstash-8.4.0\mysql\find.sql"
	  # 也可以写一个要执行sql语句,替代statement_filepath的方式
	  #statement => "select * from tb_article"
      # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "student"
    }
}


filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}


output {
    elasticsearch {
        # ES的IP地址及端口
        hosts => ["localhost:9200"]
        # 索引名称,elasticsearch叫做索引,相当于es的数据库
        index => "mysql"
        # 自增ID id必须是待查询的数据表的序列字段
        document_id => "%{id}"
    }
    stdout {
       # JSON格式输出
        codec => json_lines
    }
}

         搞定后就是这样的:

3、启动Logstash开始mysql表数据备份

         打开命令行窗口,进入到zip包解压后logstash的目录bin下,输入:

//logstash -f mysql.conf文件路径,如:
logstash -f D:\logstash-8.4.0\mysql\mysql.conf

         备份成功:

         使用Head工具查看:

猜你喜欢

转载自blog.csdn.net/weixin_42585386/article/details/127355245