본문 바로가기

전체 글

(1216)
1. mysql binlog MySQL Binary Log(binlog) 설정 및 분석 실습MySQL에서 Binary Log(이하 binlog)는 데이터 변경 이력을 기록하는 중요한 기능이다. 주로 Replication, Point-in-Time Recovery, Change Data Capture 등에 활용된다. 이 글에서는 Docker 환경에서 binlog를 활성화하고, 데이터 변경 내용을 직접 로그로 확인하는 과정을 다룬다. 1. Docker로 binlog 활성화된 MySQL 구성먼저 Docker Compose로 binlog가 활성화된 MySQL을 실행합니다. 다음의 커맨드를 추가해야 binlog를 사용할수 있다. --log-bin=mysql-bin: binlog 활성화--binlog-format=ROW: row-level..
[논문] The Log-Structured Merge-Tree (LSM-Tree) https://www.cs.umb.edu/~poneil/lsmtree.pdf ABSTRACT논문이 발표된 당시에는 고성능 트랜잭션 시스템에서 activity flow를 추적하기 위한 히스토리 데이터의 저장과 시스템 복구를 위한 로그 레코드의 저장이 동시에 요구되고 있었습니다. 예를 들어 TPC-A 벤치마크와 같은 애플리케이션에서는 계정별 활동 이력을 효율적으로 조회하기 위해 계정 ID에 기반한 인덱스가 필요했습니다. 하지만 전통적인 디스크 기반 인덱스 구조인 B-tree는 insert 성능이 낮아, 인덱스를 유지하는 데 디스크 I/O 비용이 두 배 가까이 증가하여 전체 시스템 비용을 50%까지 상승시킬 수 있었습니다.이러한 문제를 해결하기 위해, 해당 논문은 Log-Structured Merge-Tree..
Kafka producer/consumer 튜닝 (acks, batch.size, linger.ms 등) resources: requests: cpu: 500m memory: 512Mi top - 05:43:42 up 1 day, 10:29, 0 users, load average: 0.64, 0.88, 1.29Tasks: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie%Cpu(s): 6.8 us, 1.0 sy, 0.0 ni, 91.4 id, 0.2 wa, 0.0 hi, 0.6 si, 0.0 stMiB Mem : 7945.9 total, 805.2 free, 3249.5 used, 3891.1 buff/cacheMiB Swap: 0.0 total, 0.0 free, ..
로또 시스템 아키텍처 지금 회사에는 제품중 로또 시스템 있다. 실제 토요일 로또 추첨된 결과와 일치하는 로또를 가진 유저에게 현금을 주는 시스템이 있다. 최근 사용자가 증가하면서 일주일에 대략 8000만개의 로또가 생성되는데, 이를 추첨하는데만 12시간이 걸린다. (정확히는 데이터를 백업하고, 해당 유저를 정확히 뽑는데까지 걸리는 시간이다.) 하지만, 실제 로또 추첨을 보면 번호 추첨과 동시에 몇명이 뽑혔는지가 나온다. (거의 10초 내외로 나온다.)이게.....어떤 시스템이길래 가능한걸까? 라는 생각이 들어서, 우리 회사에 적용할수 있는 시스템일까? 하는 호기심이 들어서 테스트를 해보았다. 테스트는 맥북 에어 (m4) 에서 실행했다. 1. 번호 생성조건은 3억개의 로또 번호에서 특정 번호를 뽑는데, 얼마나 시간이 걸리는지 ..
[helm] jupyter-lab 실행하기 $ minikube start 1. helm 추가jupyter-lab/├── Chart.yaml├── values.yaml└── templates/ └── pod.yaml Chart.yamlapiVersion: v2name: jupyter-labdescription: A simple Helm chart for single-user JupyterLabtype: applicationversion: 0.1.0appVersion: "1.0" values.yamlimage: repository: jupyter/base-notebook tag: latest pullPolicy: IfNotPresentnotebookArgs: token: "" allow_origin: "*"containerPort..
kafka-reassign-partitions 2번 서버의 디스크가 85% 알람 UI에서 확인 용량이 가장 큰 토픽 확인 뉴레릭에서 확인, 5번서버 널널함2 -> 5번으로 옮기는 작업 필요 ## kafka-reassign-partitions**Apache Kafka에서 파티션의 리더와 복제본을 브로커 간에 재분배(reassignment)** 하기 위한 **관리 도구**Kafka 클러스터는 토픽을 **파티션** 단위로 나누고, 각 파티션은 하나 이상의 **브로커**에 분산 저장됩니다. 하지만 다음과 같은 상황에서 **불균형**이 생길 수 있습니다:* 브로커를 추가했을 때 새 브로커에 파티션이 할당되지 않음* 일부 브로커에 너무 많은 파티션이 몰림 (리더 파티션 포함)* 특정 브로커를 제거하거나 정비하려고 할 때⠀이런 경우에 **파티션을 재배치**해서 ..
fluentd grpc ruby 버전 에러 booted, phase: 0","timestamp":"2025-07-27T04:09:02.32159913Z"}[BUG] Segmentation fault at 0x0000000000000029ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]-- Control frame information -----------------------------------------------c:0001 p:---- s:0003 e:000002 (none) [FINISH]-- Machine register context ------------------------------------------------ RIP: 0x00007f20478d905f RBP: 0..
helm - (1) nginx를 helm으로 설치해보기 + kubectl이 설치되어 있는 로컬 환경에서 진행합니다. (minikube)+ 저는 helm을 사용해본적이 없습니다. 그래서 기초부터 하나씩 시작한걸 적어봅니다. 1. helm 설치$ helm versionzsh: command not found: helm$ brew install helm....grok.rb... (1.3KB)==> Caveatszsh completions have been installed to: /opt/homebrew/share/zsh/site-functions $helm versionversion.BuildInfo{Version:"v3.18.4", GitCommit:"d80839cf37d860c8aa9a0503fe463278f26cd5e2", GitTreeState:..