본문 바로가기

반응형

[DataBase]

(13)
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 설정이 잘못되었을까?] 정말 누군가 실수로 건들었을 수도 있기에 확인해..
[몽고DB 에러]MongoParseError: options usecreateindex, usefindandmodify are not supported MongoParseError: options usecreateindex, usefindandmodify are not supported 몽고DB 연동 도중 에러가 발생했다. MongoParseError: options usecreateindex, usefindandmodify are not supported app.module.ts 파일에서 이렇게 설정해주고 문제 없는줄 알았다. @Module({ imports: [ ConfigModule.forRoot(), MongooseModule.forRoot(process.env.MONGODB_URI,{ useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: f..
[MSSQL] 현재 락 걸린 쿼리 확인 & 죽이기 문제 없이 쿼리를 작성하는게 베스트겠지만 예상치 못하는 문제로 인해 LOCK이 걸려 작업이 불가능한 경우가 있다. 이럴경우 문제가 되는 쿼리가 실행중인 프로세스를 죽여주는 방법이 필요하다. 현재 실행중인 쿼리 확인 SELECT sqltext.TEXT, req.session_id, req.status, req.command, req.cpu_time, req.total_elapsed_time FROM sys.dm_exec_requests req CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 현재 락 걸린 쿼리 확인 SELECT DISTINCT name AS database_name, session_id, host_name, login_time, login..
[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 절을 이용한 공격이 있다. 예시 사용자가..
[MSSQL] 싱글유저 모드에서 멀티유저 모드 변경 오류 DB작업시 현재 다른 연결을 끊어야 할 경우가 있다. 이럴경우 평소 엑세스 제한 모드를 제한된유저(restricted user)모드로 변경하고 작업하곤한다. 하지만 단일 사용자(Singleuser) 모드로 변경했을경우에는 주의해야할 점이 있다. 단일 사용자 모드의 경우 다른 세션이 살아 있기에 DB의 상태 변경을 하지 못하는 경우가 있을 수 있다. 이럴경우 ALTER DATABASE 'DB명' SET MULTI_USER명령어를 통해 다시 멀티유저로 변경시 다음과 같은 오류가 뜨게 된다. 지금은 데이터베이스 'DB명'의 상태나 옵션을 바꿀 수 없습니다. 데이터베이스가 단일 사용자 모드이며 현재 한 사용자가 연결되어 있습니다.이때 아래의 명령어를 실행하면 현재 내 DB에 접속중인..

반응형