목록2026/03/12 (5)
ssuperjun 님의 블로그
프로젝트 기간: 3주(실제 소요 기간 11일)역할: 프로젝트 기획, Redis 및 MySQL 장애 연출, 장애 수집-분석 스크립트 작성, 최종 산출물을 사내 메신저에 등록협업 사항: 프로젝트 기획, input 및 output 선정 시 은빈 인턴님과 협업해 결정[1]프로젝트 제목: 장애 이력 자동 작성 도구[2]목적DB 담당자가 장애 알림을 받으면, 원활한 서비스를 위해 DB 정상화를 최우선으로 진행추후 장애 이력 보고 시 장애 이력을 시간 순서대로 정리해 놓은 타임라인이 필요 한 장애가 발생했을 때 장애 이력 보고에 들어갈 항목: 23가지(장애 관리팀 & 장애 담당자) => 이 '장애 이력 자동 작성 도구'가 없다면, 장애가 발생한 DB의 로그를 일일이 확인해 타임라인을 정리해야 함[3]실행 환경배경: ..
여기서부터 Redis 고민 현재 로그 수집 방식: 싱글 구성은 journalctl에서, 복제 구성은 redis 로그 파일에서, Sentinel 구성은 예시 로그 파일에서 수집함 1. 지금처럼 journalctl 로그만을 수집하는 방식, 문제는 없나? 지금은 journalctl에 찍힌 로그만을 파싱해서 타임라인을 산출했는데, systemd에 등록되지 않은 DB는 journalctl에 로그가 기록되지 않고 별도의 valkey 로그 파일에 로그가 기록됨현재 valkey 로그 파일을 파싱하기 위한 로직은 없는 상황일단 이런 valkey처럼 systemd’에 등록이 안된 직접 실행’의 경우, 기존 로직 기반으로 로그를 수집하도록 valkey를 systemd에 등록시켜 해결하긴 함=> journalctl 외 다른 ..
시행착오마스터 디스크 full 장애 연출 당시 디스크 full 유발에 실패함 1트# 1. 50G짜리 더미 파일 생성 (약 몇 초 소요)fallocate -l 50G /home1/irteam/dummy_fill.img# 2. 디스크 여유 공간 확인 (얼마 안 남았는지 확인)df -h /home1/irteam/mysql/data# 3. MySQL에서 쓰기 작업 유발 (binlog 쓰기 트리거)/home1/irteam/mysql/base/bin/mysql \ -S /home1/irteam/mysql/run/mysql.sock \ -u root -p'비밀번호' \ -e "CREATE DATABASE IF NOT EXISTS test_disk; USE test_disk; CREATE TAB..
장애 연출 계획각 장애마다 연출 → 로그 확인 → 패턴 확정 → 코드 반영 사이클을 반복싱글 구성 (ca801)순서장애 유형연출 방법1재시작 (정상)mysqladmin shutdown 후 재시작 — 기준선 확보2OOM Killstress-ng 또는 INSERT 루프로 메모리 고갈, vm.overcommit_memory 조정3Too Many Connectionsmax_connections=5 설정 후 다수 연결4디스크 Fullfallocate로 디스크 채우기5Segfaultkill -SIGSEGV {mysqld_pid}복제 구성 (ca801 마스터 → cb801 레플리카)순서장애 유형연출 방법6복제 연결 단절 (마스터 재시작)ca801에서 mysqld 재시작7복제 연결 단절 (네트워크 단절)iptables..
1. 로그 수집 위치로그 경로: /home1/irteam/mysql/log/mysql.err (ca801/cb801 공통) 이유재시작 시 휘발되지 않는 기록만을 수집하고자 함(SHOW ENGINE INNODB STATUS 등 런타임 통계는 스킵)MySQL도 Valkey처럼 systemd로 관리되지 않고 직접 실행되어 journalctl 로그가 없음2. 로그 수집 항목싱글 구성 (ca801 단독)장애 유형수집 여부수집 로그스킵 사유OOM Kill / kill -9✅ca801 error log Segfault✅ca801 error log 비정상 종료 (Aborting)✅ca801 error log 디스크 Full✅ca801 error log단, 디스크가 완전 소진되어 로그가 잘린 경우는 수집 불가Too Ma..