본문 바로가기
Programing/DB

[DB] MySQL DB 백업 및 복구

by 꾸압 2022. 6. 1.

 

<작성 동기>

크롤링 작업으로 저장해둔 mysql table의 db가 replace 되어 날아갔다...

 

복구를 시도하기 전 미리 알았으면 유용했을 것을 적어둔다.

 


 

<MySQL 백업>

  1) cmd 열기

  2) MySQL 의 bin 폴더 위치 파악하기. 보통 C:\Program Files\MySQL\MySQL Server 8.0\bin 에 있음

  3) bin 폴더 경로로 이동. bin 폴더로 이동하는 이유? mysqldump 파일이 있어야 백업이 되기 때문

cd [MySQL bin 폴더 위치]

<이건 예시>
cd C:\Program Files\MySQL\MySQL Server 8.0\bin

 

  4) 명령어 입력

mysqldump -u [user 이름] -p [database 이름] > [database 백업할 파일 이름].sql
Enter password : [user에 따른 비밀번호]

<이건 예시>
mysqldump -u root -p test > bak.sql
12345678

 

  5) C:\Program Files\MySQL\MySQL Server 8.0\bin 처럼 bin 폴더에 백업 파일이 생성됨.

 


 

<MySQL 복원>

  1) MySQL Database 에 복원할 파일을 넣을 Database 이름이 있는지 확인.

    ==> DB 이름이 test 인 곳에 복원하고 싶으면, DB test가 존재하는지 부터 확인

 

  2) bin 폴더로 이동

cd C:\Program Files\MySQL\MySQL Server 8.0\bin

 

  3) MySQL 명령어 입력하여 복원 하기

MySQL -u [user 이름] -p [database 이름] < [database 백억 파일 이름].sql
Enter password : [user 의 비밀번호]

 


 

Redo log

<정의>

    - DB 장애발생시 복구에 사용되는 log

    - MySQL error 발생 시 InnoDB Buffer Pool 에 저장된 data 유실 방지 목적

 

<기능>

    - Redo Log 'Buffer' 와 Redo Log 'File' 로 나뉨. Memory & Disk 개념

    - Online 과 Offline(Archived) Redo Log 로 나뉨 

    - Online Redo Log는 최소 2개 이상의 파일이 차례로 기록되며, 마지막 Log File이 차면 

      Online이 다시 작동하기 전에 data를 Archived Redo Log 에 백업

    - DB에 Error 발생 시 Archived Redo Log 에 백업된 data로 복구 가능 

 

<과정>

    (1) 변경사항 발생시 Redo Log Buffer 에 기록

    (2) LGWR 라는 녀석이 Buffer의 내용을 File 로 옮김

        (2-1) 옮기는 타이밍 : 

            A. 3초마다

            B. User가 Commit 했을 때

            C. Buffer 공간의 1/3 이 참

            D. Redo Record 용량이 1mb 초과

 


 

<InnoDB Architecture 의 Commit 실행 과정>

InnoDB architecture diagram showing in-memory and on-disk structures. In-memory structures include the buffer pool, adaptive hash index, change buffer, and log buffer. On-disk structures include tablespaces, redo logs, and doublewrite buffer files.

<img 출처>  https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html

 


 

Undo

{작성 필요}

 


 

<참조 1> https://velog.io/@pk3669/Mysql-Redo-Undo-Log

<참조 2> https://www.youtube.com/watch?v=F9K4WpUD2ug

 

'Programing > DB' 카테고리의 다른 글

[MySQL] 인덱스(index) 추가 & 삭제  (0) 2022.06.22
[MySQL] Cardinality  (0) 2022.06.21
[MySQL] MySQL access denied 오류 해결  (0) 2022.06.14
[MySQL] MySQL data 중복 제거 (DISTINCT, GROUPBY)  (0) 2022.06.09

댓글