[ES] LogStash로 기존 RDBMS와 ES 동기화 시키기

코박·2022년 8월 9일
0

ElasticSearch

목록 보기
4/5

Logstash와 MySQL 동기화

설치한 LogStash 접속

  • sudo docker exec -u 0 -it logstash /bin/bash
    (해당 명령어로 접속해야 root 권한 획득 가능)

명령어 설치

sudo 패키지 설치

  • yum install sudo

wget 패키지 설치

  • sudo yum install wget

연동 준비

MySQL-Connector-J 설치

받은 tar 파일 압축해제

  • tar -xvf ./mysql-connector-java-8.0.18.tar.gz

필요없는 파일 제거

  • rm -rf ./mysql-connector-java-8.0.18.tar.gz

bin 폴더내에 사용자 폴더 생성

  • cd bin/
  • mkdir hofe

생성한 폴더로 jar 파일 이동시키기

  • cp mysql-connector-java-8.0.18/mysql-connector-java-8.0.18.jar /usr/share/logstash/bin/hofe

필요없는 파일 다시 제거

  • rm -rf mysql-connector-java-8.0.18

연동

중복 instance 제거

  • cd data
  • ll -lah
  • rm -rf .lock (에러 날 시 .lock 대응책 마련)

config 설정

  • cd config
  • logstash.yml 설정
    - path.data 설정 안해줄 시 instance 중복 오류 발생
  • pipeliness.yml 설정
    - 여러개의 파이프라인 설정 가능

index_metadata 디렉토리 생성

  • mkdir index_metadata

.dat 파일 생성

  • 조회 할 테이블의 첫번째 데이터의 식별 문자를 기입
    ex) --- 1

.conf 파일을 넣을 사용자 디렉토리 생성

  • mkdir customconf

conf 파일 생성

  • input, filter, output 순서로 구성
  • 각 속성에 맞게 값 입력
  • filter에서 받아온 데이터 가공가능 (여러 플러그인 보유)
  • 주요 속성:
    - jdbc_driver_library: Connector-J 파일의 path
    • use_column_value: 해당 칼럼의 값을 사용
    • tracking_column: 읽어나갈 식별할 칼럼
    • last_run_metadata_path: 읽어나갈 기준이 될 문자/숫자의 값을 저장해둔 파일 path
    • statement: 데이터를 가져올 쿼리문
    • schedule: 주기 (ex: 1분 => * * * * * )
    • doc_as_upsert: 값이있다면 update, 없으면 insert
    • document_id: 해당 데이터의 식별 값
      - ex(%{[@metadata][_id]} 를 통해 식별번호를 기준)

실행

  • ./bin/logstash

정상적으로 쿼리가 날아가며 내부 데이터 정보가 로그에 찍히면 정상적으로 잘 읽어오고 잘 넣고 있다는 뜻!

profile
웹 개발자 할래요

0개의 댓글