BackEnd/DB5 [MySQL] 잠금은 어떻게 이뤄졌는가 안녕하세요. 백엔드 개발과 인프라 운영을 동시에 하던 (그리고 지금도 배우고 있는) 개발자입니다. 오늘은 과거 MySQL을 잘 모르던 시절, "DB는 쿼리가 전부"라고 착각하며 저질렀던 창피한 실수들과 그로부터 배운 교훈들을 공유하고자 합니다.1. 운영서버에 mysqldump예전 백엔드 개발과 동시에 인프라를 운영하던 꼬꼬마 시절이 있었습니다. (지금도 꼬꼬마입니다) 보수적이다보니 항상 백업에 대한 부분에 대해서 민감했는데 AWS RDS 백업설정을 다했음에도 무언가 작업 시 어떤 이슈가 터질지 몰라서 쉘을 통한 백업을 항상 수행해왔습니다. 물론 저는 MySQL을 잘 모르던 시절 백업을 하다보니 운영서버를 mysqldump를 뜨는 미친 짓을 수행했었죠 그리고 간간히 서버를 멈추게 만들었습니다. 창피한 얘기.. 2025. 11. 9. [Real MySQL] InnoDB 버퍼풀 MySQL은 데이터를 처리하고 캐싱하는 작업 공간으로 메모리를 적극적으로 활용합니다. 컴퓨터 자원의 효율성은 곧 속도를 의미하지만, 성능과 비용 사이에는 늘 트레이드오프(Trade-Off)가 존재합니다. 특히 데이터베이스(DB)는 수평 확장이 비교적 어려운 만큼, 제한된 리소스 내에서 최대의 효율을 뽑아내는 것이 중요하며, 그 핵심이 바로 메모리 관리에서 시작됩니다. InnoDB 버퍼 풀MySQL의 다양한 글로벌 메모리 영역 중, 실제 쿼리 성능에 가장 결정적인 영향을 미치는 것은 단연 InnoDB 버퍼 풀 (Buffer Pool)입니다.일반적으로 AWS RDS 파라미터는 DB 인스턴스 메모리의 약 3/4 (75%)를 기본값으로 설정하며, 업계 전문가들은 서버 메모리의 50%에서 80% 사이를 권장합니다.. 2025. 11. 8. [Real MYSQL 8.0] 설정 이야기 RDS 설정과 관련된 경험- 아래 내용은 Real MySQL 8.0 복습과정과 현재 운영/개발을 경험을 기반으로 작성되었습니다. 몇 달 전 운영 중인 서비스가 갑자기 커넥션 부족으로 마비되었던 사건있었습니다. 원인은 바로 SQL 인젝션(SQL Injection) 공격이었습니다.이 경험을 통해 MAX_EXECUTION_TIME이라는 시스템 변수 설정이 얼마나 중요한지, 그리고 이를 어떻게 현명하게 관리해야 하는지 깨닫게 되었습니다.1. 사건의 발단: SLEEP(25) 공격어느 날, 해외 IP로부터 비정상적인 트래픽이 감지되었고, 곧이어 DB 서버가 응답 불능 상태에 빠졌습니다. 로그를 분석한 결과, 공격자는 SQLMap과 같은 자동화 툴을 사용해 SLEEP(25)가 포함된 쿼리를 대량으로 전송하고 있었습니.. 2025. 11. 3. [쿼리 튜닝] 슬로우 쿼리 문제 해결하기/쿼리 성능 개선 스택NestJs(Node)AWS Aurora MySQL (MySQL8)TypeORM(ORM)React(NextJs) 개요초창기 서비스 대비 회사의 규모는 점점 커졌으며 다양한 기능들이 추가되었다. 대체로 빠른 속도로 기능을 개발하다보니 쿼리에 대한 리뷰가 부족했고 성능상 큰 문제를 야기하지 않았지만 점차 데이터가 쌓일수록 성능상에 문제가 발생했다. 물론 고객쪽에서 보여주는 API는 대체로 큰 문제가 없었지만 실제로 백 오피스에서 실행되는 쿼리는 슬로우 쿼리로 표기되었으며 동시에 실제로 사용함에 있어서 속도상의 큰 문제가 발생되었다 문제 확인백오피스에 대한 중요성은 사실 내부적으로도 동작의 여부와 정확도에 초첨을 맞춰왔다. 요건은 계속적으로 검색기능의 추가였고 여러 기술적 검토와 쿼리 검토없이 추가되어 .. 2025. 2. 4. MySQL Replication 적용하기 데이터베이스에서 운영 시 가장 중요한 두 가지는 확장성과 가용성이다 대용량 트래픽을 처리하기 위해서 데이터베이스를 확장될 준비가 되어있어야하며, 문제가 발생했을 때 언제든지 복원되고 유지되어야한다. Replication을 통해서 얻을 수 있는 이점은 성능상의 이점과 고가용성에 있다고 생각한다확장성RDBMS는 스케일 아웃이 힘들다 NoSQL 대비해서 데이터 정합성을 우선시 하기 때문이다현대 온라인 서비스에서 쓰기와 읽기 비율은 비교했을 때 8:2 정도의 비율을 가진다Replication을 통해서 쓰기와 읽기를 분리하여 성능상의 이점을 가져올 수 있다가용성만약 원본 DB가 장애가 나서 복원을 해야한다고 가정하자 백업 간격이 길수록 데이터 손실이 발생한다물리적인 손상이 발생했을 때 서비스 복원과 더불어 데이터.. 2025. 1. 26. 이전 1 다음