connect_timeout - MySQL 서버 접속시에 접속실패 메시지를 보내기까지 대기하는 시간 delayed_insert_timeout - insert시 delay될 경우 대기하는 시간 innodb_lock_wait_timeout - innodb에 transaction 처리중 lock이 걸렸을 시 롤백 될때까지 대기하는 시간으로 innodb는 자동으로 데드락을 검색해서 롤백시킴 innodb_rollback_on_timeout - innodb의 마지막 구문을 롤백시킬지 결정하는 파라미터 timeout은 진행중인 transaction을 중단하고 전체 transaction을 롤백하는 과정에서 발생 net_read_timeout - clinet > net > MySQL server 구성에서 MySQL이 n..
이전 밀리세컨드 단위 데이터들을 뽑는데 부하가 심해 어떻게 통계 차트를 그릴지 고민을 하다가 초단위로 데이터를 뽑으려 함. 엘라스틱서치에서 aggregaion 이란 집합 개념으로 지원해주는 기능이 있음. 여러 단위를 지정할 수 있으며, 나는 초단위 날짜 집합 데이터가 필요한 상황. date_histogram을 통해 초, 분, 시간 등의 원하는 날짜 단위의 통계 데이터를 뽑을 수 있음. 나는 초단위 평균값을 원했으므로 다음과 같이 예시 쿼리를 사용. GET /memd_80/_search? { "size": 0, "query": { "range": { "Time": { "gte": "2022-08-04T15:00:00", "lte": "2022-08-04T15:01:00" } } }, "aggs": { "a..
지속 서비스가 아닌 한시적 연구과제 중 엘라스틱 데이터 검색시 1만개 이상을 조회해야하는 상황 발생. 환경설정 window 설정 늘려서 더 큰 수량의 데이터 조회가 가능하지만 당연히 ES에서도 비추하고 시스템 부하로 잘못하면 index에 영향이 갈 수 있음. 실제 호기심에 몇십만 데이터 호출을 해봤는데 ES가 작업하는 양이 많은 상태에서 해당 무리한 요구까지 하니 index가 뻗어 버림.. 당황했지만 다행히 원상복구 됨.. 이후 scroll 검색 적용해봄. (Cursor 같은 기능) ex GET /product_info/_search?scroll=10m { "size" : 10, "query" : { "term" : { "categorySeq" : 1 } } } 위처럼 product_info를 scrol..
elasticsearch.yml 수정 스냅샷 경로 추가 path.repo: ["/backup"] ( [] 안에 경로 표기) 새 스냅숏 레포지터리 등록 PUT "http://192.168.100.7:9200/_snapshot/backup?pretty" { "type": "fs", "settings": { "location": "/backup", "compress": true } } 응답 출력 { "acknowledged": true } 모든 스냅샷 레포지터리 검색 GET /_snapshot/_all?pretty 응답 출력 { "backup": { "type": "fs", "settings": { "compress": "true", "location": "D:/backup" } } } 엘라스틱서치 DB 스냅..
1. 우분투 서버 업데이트 $ sudo apt-get update (apt-get 패키지 매니저 이용. 우분투 설치하면 같이 설치됨.) 2. mysql server 설치 $ sudo apt-get install mysql-server 3. 외부 접속 기능 설정 (3306 포트 오픈) $ sudo ufw allow mysql 4. mysql 실행 $ sudo systemctl start mysql 5. ubuntu 서버 재시작시 mysql 자동 재시작 $ sudo systemctl enable mysql 6. mysql 접속 $ sudo /usr/bin/mysql -u root -p (경로 명시안하고 mysql만 쓰면 디나이 됨.) 7. 사용자 등록 및 권한 설정 mysql> SELECT User, Hos..

테스트를 위해 클라우드 서버에서 동작하는 ES 서버 접근이 필요한 상황. 포트를 열어봐도 ES 접근이 불가하다. 윈도우의 경우에는 config 폴더 리눅스에서는 etc 폴더의 elasticsearch.yml 설정을 변경해줘야 한다. network.host 부분을 0.0.0.0.0 으로 cluster.initial_master_nodes 부분 주석을 풀어줌 설정 완료 후 ES 재시작하고 부팅 완료되면 외부에서 9200포트(혹은 설정 포트)로 접근해보면 접근 가능함 확인.

01) create 메서드 만들기 이전 만들어둔 ElasticUtil.java에 create 메서드 생성. public IndexResponse create(String index, String id, String jsonBody) { IndexResponse response = null; IndexRequest indexRequest = new IndexRequest(index).id(id).source(jsonBody, XContentType.JSON); try { response = client.index(indexRequest, RequestOptions.DEFAULT); } catch(IOException e) { e.printStackTrace(); } return response; } Ela..

01) Dependency 설정 Spring boot 프로젝트 하나 만들어 테스트. Elasticsearch 디펜던시 추가. org.elasticsearch elasticsearch 7.12.1 org.elasticsearch.client elasticsearch-rest-high-level-client 7.12.1 High level client는 Low level client를 한번 추상화해서 사용. Low level client는 버전에 영향을 받지 않고 유연하지만 사용하기는 더 어려움. https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high.html Java High Level REST Client |..

01) elasticsearch와 관계형 DB 비교 Elasticsearch 관계형 DB Index Database Type Table Document(Json 형식 Key-value) Row Field Column Mapping Schema Elasticsearch 관계형 DB CRUD POST INSERT CREATE GET SELECT READ PUT UPDATE UPDATE DELETE DELETE DELETE 02) 데이터 삽입하기(PUT) 브라우저에 http 프로토콜을 통해 데이터를 삽입하거나 조회 ,수정, 삭제 CRUD 작업을 할 수 있음. 포멧은 http:// IP : port / Index / Type / id값 ex) http://localhost:9200/example/animal/2..