본문 바로가기

반응형

[DataBase]/DB

(6)
mysqlbinlog 에러 mysqlbinlog에러 이전 포스팅에서 mysql 또는 mariadb의 백업파일이 없을 때 복구하는 포스팅을 작성한적이 있다. https://ppoble.tistory.com/56 설정한 기간동안 바이너리 파일들이 저장되고있으니 해당 기간에는 쿼리를 복원이 가능하다는 내용이었는데. 해당 내용으로 다른 시스템에서 복구를 할일이 있었는데 다음과 같은 에러가 발생했다. ERROR: Error in Log_event::read_log_event(): 'Sanity check failed', data_len: 43, event_type: -93 ERROR: Could not read entry at offset 256: Error in log format or read error.엥 이건 또 뭔소..
# mysql, mariadb 백업 안된 쿼리 or 테이블 or 데이터 or 프로시저 등 복구(mysqlbinlog 이용하기) mysql, mariadb 백업 안된 쿼리 or 테이블 or 데이터 or 프로시저 등 복구(mysqlbinlog 이용하기) 상황 : DB 최근 백업일은 1일, 프로시저 생성일은 2일, 프로시저 드랍일은 3일 이렇게 실수로 프로시저를 지워버린 상황이다. 백업본은 따로 없으며, 프로시저 뿐만이 아니라 쿼리 or 테이블 or 데이터 or 프로시저 등 모두 해당된다. 해결 방법 show variables like 'expire_logs_days' 이 명령어를 통해 로그파일이 언제까지 저장되는지 확인한다. 해당 기간내에 작성한 쿼리들은 모두 저장됨으로 내가 작성한 날짜가 해당 날짜 안에 포함되는지 확인이 필요하다. 만약 해당 기간이 지났을 경우... 😥😥 db의 로그데이터가 저장되는 폴더로 찾아간다..
MariaDB root 로그인 불가 이슈 MariaDB root 로그인 불가 이슈 상황 : 다른분이 설치해놓은 mariaDB에 붙기위해 dbeaver로 로그인 시도를 했다. 다른 아이디로는 로그인이 잘되었지만 root로는 로그인이 되지 안았다. 비밀번호는 확실한 상황.. (conn=461473) Access denied for user 'root'@'{클라이언트아이피}' (using password: YES)시도1 리눅스에서 터미널로 바로 붙어서 실행을 시도했다. mysql -u root -p bash: mysql: command not found엥? mysql 환경변수도 설정이 안되어있어? which mysql /usr/bin/which: no mysql in (/usr/local/bin:/usr/bin:/usr/..
[장애 회고록] 디스크 I/O 병목, DB 지연 클라이언트들의 응답이 늦는 현상이 발생했다. 가끔씩 발생했기에 클라이언트의 인터넷 속도가 늦지 않았을까 하고 다른 급한 이슈들을 해결하기 위해 잊혀져갔다. 점점 서비스 이용량이 증가하며 응답 지연 현상이 늘어가자 문제를 파악하기위해 [구간별 지연 구간을 찾아보았다.] 간단하게 보면 클라이언트 > WEB > WAS > DB 구조인데, 각 구간별 로그 시간 확인 결과 DB에서 지연이 발생하고 있었다. [가설1. 쿼리가 잘못되어 락을 잡고 있지 않을까?] 가장 많이 발생하는 지연 이슈기에 지연 쿼리들을 확인해보았으나, 그냥 간단한 한 줄 인서트인데도 지연이 발생했었으며 쿼리 실행계획도 이슈가 없었다. [가설2. ISOLATION LEVEL 설정이 잘못되었을까?] 정말 누군가 실수로 건들었을 수도 있기에 확인해..
[SQL] Injection Attack 예방기 SQL Injection Attack mybatis에서 자연스럽게 쓰던 #{} 한번도 의문을 갖지 않은 내 자신이 부끄러워진다. 왜 ${}를 안쓸까? nodejs 관련해 공부하다 SQL Injection Attack에 관해 알게되어 관련사항들을 정리해보았다. 공격 사례 15년 뽐뿌 공격 : https://www.boannews.com/media/view.asp?idx=47836&kind=1 17년 여기어때 공격 : https://www.bloter.net/newsView/blt201703240005 SQL Injection Attak이란? 사용자가 보안상 취약점을 이용해 임의로 sql문을 주입해 DB를 조작하는것을 뜻한다. WHERE 절을 이용한 공격과 UNION 절을 이용한 공격이 있다. 예시 사용자가..
[DB] 무한 select 오류 해결기(트렌젝션 레벨 설정) DB 값 변경 요청이 있어 DB를 업데이트 치던 중이었다. 해당 행을 업데이트한뒤 잘 반영된건지 확인하려고 SELECT를 때렸다. 엥? 왜 단순 셀렉튼데 무한 로딩에 빠져버렸다.😱 뭐가 문제지???? 실수했다면 에러 로그를 보며 수정하면되는데 에러 로그도 안뜨고 무한로딩 중일뿐이었다. 뭐 함수가 걸려있나 하나하나 찾아보고 실행계획도 켜서 비용 많이드는곳도 찾아보고 셀렉트 항목도 하나하나 해봤지만 답을 찾을수 없었다 ㅠㅠ 에러 로그라도 나오면 에러로 구글링이라도 할 수 있지만 아무것도 안나오니 정말 화만 날 뿐이었다. 한참을 고민하던 도중 정답을 찾아버렸다. 그건 바로 BEGIN TRAN 이새끼가 날 고생시켰다 ㅡㅡ DB 수정시에는 항상 조심하기 위해 트랜잭션을 걸고 작업하는걸 추천한다. 하지만 트랜잭션을..

반응형