ES+mysql的数据迁移

5 篇文章 0 订阅

由于mysql数据量大时,like查询几乎无法使用,因此尝试采用搜索引擎ES执行like查询。

1. ES安装

1.1 升级java到11(由于logstash需要1.8的环境,此处升级被退回了)

yum -y install java-11-openjdk
mv /etc/alternatives/java /etc/alternatives/java.bak
# 此处根据实际情况修改新版本java的位置
ln -s /usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el7_9.x86_64/bin/java /etc/alternatives/java

在这里插入图片描述

1.2 下载并解压es安装包

ES安装包的版本可前往官网自行选择

cd /opt/install
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
tar -zxvf elasticsearch-7.0.0-linux-x86_64.tar.gz -C /opt/
cd /opt
mv elasticsearch-7.0.0/ elasticsearch

1.3 添加启动用户(ES5.0以上需要非root用户),并配置用户资源

useradd elk 
groupadd elk
useradd elk -g elk
# 创建日志目录
mkdir  -pv  /opt/elk/{data,logs}
# 赋予用户权限
chown -R elk:elk /opt/elk/
chown -R elk:elk /opt/elasticsearch/
vim /etc/security/limits.d/20-nproc.conf
elk    soft    nproc     65536

1.4 修改es配置文件

vim /opt/elasticsearch/config/elasticsearch.yml
# 节点主机名,根据实际情况配置
node.name: postprocess01_test
path.data: /opt/elk/data
path.logs: /opt/elk/logs
network.host: 0.0.0.0
http.port: 9200
# 集群所有主机名列表
cluster.initial_master_nodes: ["postprocess01_test"]

1.5 配置资源参数和内核参数

资源大小可根据实际情况修改

vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
* hard nproc 131072

内核参数

vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536

使配置生效

sysctl -p

1.6 启动es,并采用supervisor来维护

sudo -u elk /opt/elasticsearch/bin/elasticsearch

采用如下命令查看服务是否启动成功

curl <node_ip>:9200

在这里插入图片描述

2. logstash安装

mysql的数据迁移需要采用logstash配置,logstash需要1.8的java环境

2.1 下载安装包并解压

注意logstash的版本必须与es一致,否则会报错。

cd /opt/install
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.0.0.tar.gz
tar zxf logstash-7.0.0.tar.gz -C /usr/local/
cd /usr/local/
mv logstash-7.0.0/ logstash

2.2 添加用户

# 创建logstash用户
groupadd -r logstash  
useradd -r -g logstash -d /usr/local/logstash -s /sbin/nologin -c "logstash" logstash
# 创建配置文件、日志等目录
mkdir -p /etc/logstash/conf.d/
mkdir /var/log/logstash
mkdir /var/lib/logstash
# 赋予用户权限
chown logstash /var/log/logstash
chown logstash:logstash /var/lib/logstash
chown -R logstash:logstash /usr/local/logstash/

2.3 启动logstash,并测试

配置logstash启动路径

vi /etc/init.d/logstash
program=/usr/local/logstash/bin/logstash

测试文件示例:

vi /opt/jlpost/simple.conf
input {
  stdin {}
}
output {
  stdout {
    codec => rubydebug }
}

运行logstash,-f可以挂载文件

/usr/local/logstash/bin/logstash -f /opt/jlpost/simple.conf

在这里插入图片描述

3. mysql 数据迁移

3.1 下载mysql-connector-java的jar包

版本选择与jar包下载参见:https://blog.csdn.net/dylgs314118/article/details/102677942,本项目选择版本6.0.6

创建conf脚本,sql脚本

vi /opt/jlpost/post_process/bin/merge_mysql_to_es.conf
vi /opt/jlpost/post_process/bin/sql_to_es.sql
input {    
    jdbc {
      jdbc_connection_string => "jdbc:mysql://10.30.239.196:3306/jinling_post?characterEncoding=UTF8&serverTimezone=UTC"
      jdbc_user => "root"
      jdbc_password => "123456"
      jdbc_driver_library => "/opt/jlpost/mysql-connector-java-6.0.6.jar"
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      codec => plain { charset => "UTF-8"}

      jdbc_default_timezone => "Asia/Shanghai"
      statement_filepath => "/opt/jlpost/sql_to_es.sql"
      schedule => "* * * * *"
      type => "jdbc"
    }
}
 
 
output {
    elasticsearch {
        hosts => ["10.30.239.196:9200"]
        index => "abnormal_result"       
    }
    # 在控制台打印输出,生产中可以关掉
    stdout {        
        codec => json_lines
    }
    
}
select * from abnormal_result limit 10

运行logstash,-f可以挂载文件

/usr/local/logstash/bin/logstash -f /opt/jlpost/post_process/bin/merge_mysql_to_es.conf

在这里插入图片描述
导入完成后,采用如下命令查看

http://10.30.239.196:9200/abnormal_result/_search?q=*&pretty
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值