<작성 동기>
크롤링 작업으로 저장해둔 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 실행 과정>
<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 |
댓글