Gh-ost란, MySQL에서 online alter 기능이 있지만 아직 완벽하지는 않습니다. 이를 보완하기 위해 percona 의 pt-online-schema-change 스크립트를 사용하기도 하는데요, 원본과 복사본 테이블의 sync 를 trigger 기반으로 맞춘다는 단점이 있습니다. 특수 케이스에서는 일관성 문제도 야기될 수 있고, trigger 가 유발할 수 있는 Lock 으로 인해서 마지막에 swap 할 때 쿼리들이 실패하기도 합니다. 이러한 컨셉은 2009년부터 이어져왔고 큰 변화가 없었습니다. gh-ost 가 이러한 단점을 보완해서 pt-online-schema-change 를 대체할 수 있을지 조심스레 살펴보고 있습니다. 원본과 복사본(ghost table) 간의 sync 를 맞추는데 ..
MySQL_exporter (모니터링 대상 서버에서 진행 mysql server) MySQL 서버에 SQL을 질의한 결과를 Prometheus에 쌓은 뒤 이를 Grafana에서 대시보드로 구성하기 위해 mysql_exporter를 구성 MySQL에 적재되어 있는 테이블 데이터에 SELECT SQL을 질의한 결과를 Prometheus에 적재할 수 있다면, Grafana의 다양한 그래프를 이용해서 실시간 데이터 변경 추이를 시각적으로 조회 할 수 있습니다. 원하는 데이터를 뽑아 적재하여 grafana로 가시화 할거며, 원하는 값을 뽑기 위해서는 select SQL쿼리를 가지고 프로메테우스로 뽑아 올 예정입니다. Prometheus MySQL Exporter를 설치하기 위해서는 다음과 같은 Python 관련 ..
Prometheus 메트릭 수집을 위한 exporter 구축 (mysql서버) ■ Exporter 설치 download URL : https://prometheus.io/download/ Download | Prometheus An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach. prometheus.io mysqld_exporter와 node_exporter 두개를 설치합니다. mysqld_exporter -> MySQL 서버의 상태를 수집 node_exporter -> 해당 서버의 시스템 상..
Prometheus란, Apache 2 라이센스로 공개되어 있는 오픈소스로 모니터링 툴입니다. 다른 모니터링 도구와 가장 다른 점은 대부분의 모니터링 도구가 Push 방식 즉, 각 서버에 클라이언트를 설치하고 이 클라이언트가 메트릭 데이터를 수집해서 서버로 보내면 서버가 모니터링 상태를 보여주는 방식인데 반해서 Prometheus는 Pull 방식입니다. 그래서 서버가 각 클라이언트를 알고 있어야 하는게 아니라 서버에 클라이언트가 떠 있으면 서버가 주기적으로 클라이언트에 접속해서 데이터를 가져오는 방식입니다. 따라서 모니터링 대상 서버의 모니터링으로 인해 발생하는 부하를 줄여줍니다. 프로메테우스는 Time-series DB이기 때문에 시간과 함께 데이터를 저장합니다. Exporter란 모니터링 대상의 Me..
Cache란 캐시는 고속 저장소로 대용량 데이터, 복잡한 수학적 연산 결과, 정적 컨텐츠 등을 연산 없이 데이터를 불러올 수 있어 CPU 기능 부하와 지연 시간을 줄여줄 수 있고 퍼포먼스를 향상 시킬 수 있습니다. 보통 RAM이나 인메모리 엔진 같이 가볍고 빠른 하드웨어에 설치되어 실행됩니다. 캐시 히트율(cache hit rate)은 요청이 들어왔을 때 캐싱된 데이터가 있는 확률로 들어온 전체 요청 수 대비 캐시가 히트돼서 응답한 개수를 나타냅니다. 캐시 히트율이 높다는 건 그만큼 캐싱 데이터가 쓰여서 성능이 높다는 걸 의미합니다. 하지만 무조건 높다는 게 좋은 건 아닙니다. RDB인 MySQL과 캐시 DB인 Redis는 실시간 싱크(synch)가 이뤄지지 않기에 즉각적인 데이터 반영이 필요한 경우 캐..
프로젝트 진행 중 DB 성능 테스트를 할 일이 생겨서 회사 사수님의 가르침으로 Jmeter툴을 사용해 테스트 진행했습니다. ■ JMeter 파일 다운로드 JMeter Download URL : https://jmeter.apache.org/download_jmeter.cgi Apache JMeter - Download Apache JMeter Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directo..
vm생성 part1에 이어 terraform을 실행해보겠습니다. https://jhdatabase.tistory.com/87 [Terraform - NaverCloud vm생성] part 1 Terraform 이란, 테라폼(Terraform)은 Hashicorp에서 오픈소스로 개발 중인 클라우드 인프라스트럭처 자동화를 지향하는 코드로서의 Infrastructure as Code, IaC 도구입니다. AWS, Azure, GCP 등 여러 cloud 플랫.. jhdatabase.tistory.com ■ Terraform init Terraform provider로 ncloud 등록 [root@terraform ~]# terraform init init 성공시 아래와 같은 로그들 확인 가능 ■ Terrafor..
Terraform 이란, 테라폼(Terraform)은 Hashicorp에서 오픈소스로 개발 중인 클라우드 인프라스트럭처 자동화를 지향하는 코드로서의 Infrastructure as Code, IaC 도구입니다. AWS, Azure, GCP 등 여러 cloud 플랫폼에서 사용이 가능하며, 국내 플랫폼중에서는 네이버 클라우드 플랫폼이 유일하게 등록되어 있습니다. Terraform 기본 개념 resource : 실제로 생성할 인프라 자원을 의미 provider : 리소스들이 배포될 환경을 정의한 것으로 ncp, aws, gcp 등 output : 인프라를 프로비저닝 한 후에 생성된 자원을 output 부분으로 뽑을 수 있습니다. Output으로 추출한 부분은 이후에 remote state에서 활용 가능 bac..
pt-query-digest 이용 TOP10 쿼리를 뽑아 mail로 첨부파일 형식으로 주에 한번씩 보내볼 예정입니다. Slow query에 변수로 인한 같은 쿼리임에도 불구하고 숫자하나만 다른 데이터가 들어가도 top 쿼리에 찍힙니다..결국 중복된 쿼리가 찍혀있을 수 있기때문에 필터링하는 방법을 강구해야할 거 같습니다. 사전 작업 pt-query-digest 설치 https://jhdatabase.tistory.com/53?category=953606 [pt-query-digest - Mysql slowquery 분석 ] 안녕하세요 이번글에서는 Mysql or Mariadb에서 쿼리 실행 시간이 설정된 시간 이상으로 걸릴 시 slow query log가 남게됩니다. 하지만 가시성 가독성이 떨어지기 때문에..
애플리케이션 관련 문제 발생시 얼롯을 받기위해 Slack을 사용하였습니다. Slack 어플을 다운로드 후 얼롯팅 받을 새로운 워크 스페이스를 생성합니다. ▶ 새 워크스페이스 추가 ▶ 채널을 우클릭하여 세부정보를 open합니다. 통합 -> 앱 추가 클릭 ▶ incoming-webhook 앱 설치 Incoming Webhook 외부 소스로부터 Slack 으로 메시지를 게시할 수 있는 방법을 제공하는 Plugin HTTP 요청을 사용하여 원하는 형태의 메시지 (더불어 기타 세부 정보)를 JSON 페이로드와 함께 사용가능 ▶ 얼롯을 받고자하는 채널에 설치 ▶ Webhook URL을 잘 저장해둡니다. https://hooks.slack.com/services/T03E6JT5QAD/B03DR4ANLCD/iCwZn0..