[MYSQL] 데이터베이스 털리다 - DB털이 예방하기

Intro 이제 1년 좀 넘은 토이프로젝트가 하나 있다. 와이프만 쓰라고 대충 만들었던건데 한명씩 한명씩 사용자가 늘어서 그래도 지금은 몇명이 쓰고 있고, 요구사항도 꾸준히 반영해서 처음에 비해 기능도 제법 들어갔다. 토이프로젝트라서 처음 시작할 때, 디비 비밀번호를 사용하면 안되는 아주 뻔한 암호로 만들었었는데.. 아침에 일어나 컴퓨터를 켜니 새벽 4시쯤에 Slack 알림이 와있었다. [SpringBoot] 에러 발생시 Slack으로 알림 보내기 를 적용해서 에러가 발생하면 슬랙 알림이 오게끔 적용을 해뒀었는데, 그덕에 문제가 있다는건 발견했다. 그런데 오류를 잘 보면 select 쿼리를 실패한건데. 디비 접속이 잘 안되나? 해서 로그를 살펴보니 테이블이 없단다. 위에 적힌 Request IP를 추적해..

Data/MYSQL ⁄ MariaDB 2024.02.24
[mysql] 실수로 날린 데이터 binlog로 복구하기

Intro 날렸다 테이블. 없어졌다 데이터. 다행히도 업무에 쓰던 DB는 아니다. 현재는 가까운 가족들만을 고객으로 우리들 끼리만 쓰고 있는 사이드 프로젝트인데, 개발서버랑 운영서버를 헷갈려서 데이터를 유실했다. 다행인건 매일 밤 12시에 자동으로 백업을 해왔다는 것. [MYSQL Docker] 데이터베이스 매일 자동 백업하기 사건이 발생한건 오후 8시쯤이지만, 로그를 보니 오늘 오후 7시쯤 마지막 로그가 찍혀있었다. 00시 ~ 19시 사이의 데이터를 백업해보자. 데이터 복구 바이너리 로그 파일 찾기 요즘엔 많이들 그렇겠지만, mysql을 도커로 돌고 있다. 그래서 도커 컨테이너에 관련된 내용도 조금 포함되는데, 도커를 사용하지 않다고 해도 아래 내용을 따라 진행하는데는 무리가 없을 것이다. 도커 컨테이..

Data/MYSQL ⁄ MariaDB 2024.02.05
[MYSQL Docker] 데이터베이스 매일 자동 백업하기

Intro 집에서 개인적으로 운영하고 있는 MYSQL 데이터베이스가 있습니다. 옛날에는 이용자가 없어 개발용으로만 사용하고 있었는데, 요즘에는 어느정도 유의미한 데이터가 쌓이고 있다 보니 괜히 실수로 데이터베이스에 흠집이 갈까 걱정이 되어 이제 슬슬 주기적인 백업을 하려고 합니다. DB에 문제가 생겼을 때, 한시간 이내에 그대로 복구를 해 낼지 아니면 영영 모든 데이터를 잃게 될지 그 결과에 엄청 큰 차이가 있습니다. 규모가 정말 큰 서비스에서는 좀 더 효과적이고 빠른 백업 방법을 찾아야겠지만 손쉽고 간단하게 mysqldump를 이용해서 백업을 하려고 합니다. 거기에 더해 도커 컨테이너에 띄워져 있는 컨테이너를 자동으로 백업 할 수 있도록 스케줄러를 돌리도록 설정을 해서 크게 신경쓰지 않고 DB 데이터 ..

Data/MYSQL ⁄ MariaDB 2023.01.07
MySQL/MariaDB windows에서 서버 켜기 & 끄기 + net start mysql서비스 이름이 잘못되었습니다. 에러 해결

MariaDB를 재시작 하려고 net start mysql를 입력했는데 서비스 등록이 되어있지 않아 명령어가 먹히지 않았습니다. xml mysql -installCopy 을 입력하면 서비스 등록이 됩니다만, CMD를 관리자 권한으로 실행하지 않으면 Denied 됩니다. 관리자 권한으로 입력하니 성공적으로 서비스 등록이 됩니다. 그런데 사실 확인하고 보니 서비스 이름이 mariadb로 등록되어 있었습니다. mysql말고 mariadb로 입력을 하니 서비스 명령이 잘 작동합니다. Mysql 이라면 위의 서비스 등록으로 해결이 되었을 것이고, MariaDB라면 mariaDB가 서비스로 등록되어있는지 확인해보세요. 서비스 켜고 끌떄 cmd 가 관리자 권한으로 실행되어야합니다. net start mariadb로 ..

Data/MYSQL ⁄ MariaDB 2021.05.05
MYSQL / MariaDB 최대 접속 확인 및 늘리기

show variables like '%max_connect%'; Copy 동시접속 설정을 확인하는 쿼리입니다. 위의 쿼리 실행시 아래와 같이 max_connections 정보를 볼 수 있습니다. 아마 변경 전에는 151 으로 설정되어 있었던 걸로 기억합니다. mysql은 기본이 100 입니다. show status like 'threads_connected';Copy 현재 접속중인 커넥션을 확인 하는 쿼리입니다. set global max_connections = 300;Copy 최대 커넥션을 변경하는 쿼리입니다. 오라클에서는 최대 process 를 변경하고 나서 재시작을 해야 적용이 되었었는데, 일단 껐다 키지 않아도 변경한 max_connection으로 조회가 잘 됩니다..

Data/MYSQL ⁄ MariaDB 2021.05.05