날려 먹은 MySQL 데이터를 복구할 수 있을까?
·
Dev/삽질 방지
실수로 DROP DATABASE 쿼리를 입력하거나 WHERE문을 빼먹었다면 눈앞이 캄캄해질 것이다. 과연 데이터를 복구할 수 있을지 여부를 알아보자.복구 방법 등에 대해서는 본 글에서 다루지 않는다.우선 아래부터 확인해보자저장 방식이 하드디스크인지바이너리 로그가 켜져 있는지MySQL 버전이 8.4 이후인지백업 파일이 있는지바이너리 로그 방식바이너리 로그는 세가지 방식이 있다.STATEMENT: 쿼리만 저장.ROW: 변경된 Row의 정보까지 저장. MySQL 8.4 이후 기본값이다.MIXED: 일부 쿼리에만 ROW 방식으로 저장. 일반적으로 사용되지 않고 이 옵션을 사용할 정도라면 이미 백업 자동화를 진행한 사용자일 것이므로 본 글에서는 설명하지 않음.복원 가능 여부하드디스크인 경우즉시 서버 전원을 강제 ..
[Datadog] HTTP 5XX일때만 Error tracking이 동작하는 문제 고치기
·
Dev/삽질 방지
Datadog 라이브러리는 다른 APM 솔루션 라이브러리처럼 바로 drop해서 사용하기에 어려운 부분이 많아서 조금 아쉽다.어떤 문제가 있나?Error tracking이 몇몇 요청에서 정상적으로 tracking되지 않는 문제가 있었다. 소스 코드를 확인해보니 HTTP Code가 5로 시작하지 않는 경우에는 Error tracking이 작동되지 않았다. 이로 인해서 HTTP가 500이 아닌데, 오류가 발생한 경우 오류가 무시되어 버리는 현상을 찾을 수 있었다.해결 방법아래 코드를 이용하면 HTTP Code가 404가 아닌 모든 오류를 추적할 수 있도록 데이터독의 내부 코드를 다시 정의한다.module Datadog module Tracing module Contrib module Actio..
[Datadog] RUM에서 document 페이지 추적하기
·
Dev/삽질 방지
Datadog에서는 기본적으로 XHR/Fetch 등의 요청만 distributed tracing(분산 추적)을 지원한다. 즉, 페이지 로드 후에 요청하는 웹 요청만 trace랑 연결해서 볼 수 있다. 페이지가 서버 사이드 렌더링(SSR) 되는 경우에는 RUM replay에서 해당 백엔드 trace를 바로 확인하기가 어렵고 아이피 등으로 하나 하나 찾아가야만 하는 문제점이 있다. 과거에 trace id를 HTML header에 넣어 document를 지원하려는 시도가 2020년도에 있었지만, 어떤 배경인지는 정확히 몰라도 다시 revert 된 상태이다. 다만, browser-sdk 자체에서는 아직 해당 기능이 살아있어서 HTML에 meta tag로 dd-trace-id, dd-trace-time을 추가해 ..
GKE에서 autoscaling/v2가 오류나는 경우 해결 방법
·
Dev/삽질 방지
문제 상황 kubectl apply 명령어 입력시 오류 발생 error: unable to recognize "hpa.yaml": no matches for kind "HorizontalPodAutoscaler" in version "autoscaling/v2beta2" 지원 api 목록에도 없음 kubectl api-version 명령어를 입력시 목록에 없는것을 확인할 수 있음. ryush00@ryush00-Mac BaroMask % kubectl api-versions admissionregistration.k8s.io/v1beta1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 apps/v1 ..