반응형
mysql, mariadb 백업 안된 쿼리 or 테이블 or 데이터 or 프로시저 등 복구(mysqlbinlog 이용하기)
상황 : DB 최근 백업일은 1일, 프로시저 생성일은 2일, 프로시저 드랍일은 3일
이렇게 실수로 프로시저를 지워버린 상황이다.
백업본은 따로 없으며, 프로시저 뿐만이 아니라 쿼리 or 테이블 or 데이터 or 프로시저 등 모두 해당된다.
해결 방법
show variables like 'expire_logs_days'
이 명령어를 통해 로그파일이 언제까지 저장되는지 확인한다.
해당 기간내에 작성한 쿼리들은 모두 저장됨으로 내가 작성한 날짜가 해당 날짜 안에 포함되는지 확인이 필요하다. 만약 해당 기간이 지났을 경우... 😥😥- db의 로그데이터가 저장되는 폴더로 찾아간다 나의 경우에는
/data/mariadb/log-bin/
였으며, 경로가 어디로 설정되어있는지는
에서Linux: /etc/my.cnf 또는 /etc/mysql/my.cnf Windows: C:\Program Files\MySQL\MySQL Server\my.ini 또는 C:\Windows\my.ini
log_bin
옵션에서 확인이 가능하다. - 해당 경로에서
mysql-bin.xxxxxx
등의 파일 여러개를 찾을 수 있을것이다. 내가 생성한 쿼리의 날짜의 파일 이름을 기억해두자. 해당 파일은 이진파일이라 읽을 수가 없다.
해당 파일을mysqlbinlog
를 이용해 읽을 수 있게 변경해야한다. - mysql이 설치된 경로로 찾아간다
which mysql
명령어를 통해 mysql이 어디에 설치된지 찾을 수 있다. ex./usr/local/mariadb/bin/mysql
등으로 찾을 수 있다. - 해당 경로(
/usr/local/mariadb/bin/
)에mysqlbinlog
를 실행할 수 있을것이다.명령어 : mysqlbinlog /data/mariadb/log-bin/mysql-bin.xxxxxx > output.sql
등으로 실행하면output.sql
파일이 생겼을 것이다.
해당 파일을 열고 검색을 통해 내가 원하는 생성한 ddl 또는 쿼리 등등을 찾을 수 있을 것이다.
끝!
반응형
'[DataBase] > DB' 카테고리의 다른 글
mysqlbinlog 에러 (0) | 2023.08.31 |
---|---|
MariaDB root 로그인 불가 이슈 (2) | 2023.06.07 |
[장애 회고록] 디스크 I/O 병목, DB 지연 (0) | 2022.11.22 |
[SQL] Injection Attack 예방기 (0) | 2022.03.29 |
[DB] 무한 select 오류 해결기(트렌젝션 레벨 설정) (0) | 2022.01.21 |