Backup의 종류
Hot Backup | Cold Backup |
데이터 베이스를 중지하지 않은 상태로 백업 | 데이터 베이스를 중지한 상태로 데이터 백업 |
백업하는 동안 서비스가 실행됨 | 백업하는 동안 서비스가 중단됨 |
백업하는 동안 데이터가 변경되어 완전한 백업이 안될 수도 있음 | 안정적으로 백업 가능 |
Logical Backup | Physical Backup |
SQL 문으로 백업 | 파일 자체를 백업 |
느린 속도로 백업과 복원이 진행됨 | 빠른 속도로 백업과 복원이 진행됨 |
디스크 용량을 적게 사용함 | 디스크 용량을 많이 사용함 |
작업시 시스템 자원을 많이 사용함 | 작업시 시스템 자원을 적게 사용함 |
문제 발생에 대한 파악이 쉬움 | 문제 발생에 대한 파악과 검토가 어려움 |
서버 OS 호환이 잘됨 | 서버 OS 호환이 잘안될수 있음 |
Hot Logical Backup
먼저, ubuntu에 MySQL을 연결하였으므로, unbuntu계정에 접속한다.
ssh -i ~/Downloads/.ssh/key.pem ubuntu@퍼블릭IP
ubuntu계정에서 백업파일을 자동생성하도록 만들어주기로 한다.
- backup 디렉토리를 생성한다.
mkdir backup
ls
- root계정으로 password를 입력하고, DB를 backup디렉토리에 DB_sql로 저장한다.
나중에 이 코드를 crontab에 추가하여 설정한 스케줄대로 백업파일이 생성되도록 할 것이다.
mysqldump -u root -ppassword DB > backup/DB_backup.sql
- backup 디텍토리에 DB.sql파일이 잘 생성되었는지 확인해본다.
ls
cd backup
ls
vi DB_backup.sql
*만약 실행을 잘못하여 멈추고 싶다면 crtl+c 를 입력한다.
- 최상위 폴더로 돌아간다.
cd ~/
pwd
rm -rf backup
mkdir backup
- backup.sh 쉡 스크립트 파일을 생성, 수정하여 날짜이름으로 FILE이 저장되는 코드를 만든다.
vi backup.sh
vi에디터에서 아래 코드를 입력한다.
bash쉘에서 동작하는 쉘스크립트임을 알리고, ₩(')문자를 사용하여 파일이름생성하고, mysql실행코드를 넣는다.
*중간 중간 끊어서 cat backup.sh과 추가될 코드를 실행시켜본다.
#!/bin/bash
BD=`date +%Y%m%d_%H_%M --date=today`
FILE=${BD}.sql
# echo $BD
echo "mysqldump -u root -ppassword DB > ~/backup/$FILE"
mysqldump -u root -ppassword DB > ~/backup/$FILE
코드를 한번 확인해준다.
cat backup.sh
- backup.sh 스크립트 실행
/bin/bash backup.sh
- backup 디렉토리 확인
ls backup
확인이 되었으면, crontab에 적용해야 한다.
- 크론탭에 접속하여 설정한다.
crontab -e
crontab에서 아래 코드를 적어준다. (1분마다 생성)
* * * * * /bin/bash backup.sh
이제, 백업이 자동실행되어 backup디렉토리에 1분간격으로 날짜시간이름의 백업파일이 생성된다.
- 백업을 중단하고 싶다면 crontab에 다시 접속하여 코드를 주석처리 해준다.
crontab -e
# * * * * * /bin/bash backup.sh
현업에서는 crontab을 통해 일주일단위로 저장하도록하고,
백업 전용 서버도 하나 만들어서 백업파일을 SCP를 통해 전송한다.
사용 서버가 없어질 경우 백업파일들도 모두 날라가기 때문이다.
(용량문제때문에 2111로만 된 이름을 저장파일로 두고,11월 한달동안 백업되는 파일은 overwriting되도록 하는 방식도 사용한다.)
'Skills > MySQL' 카테고리의 다른 글
[SQL] 파일 전송 프로토콜(SCP)을 이용하여 데이터베이스 업로드하기 (0) | 2021.11.21 |
---|---|
[SQL] Crontab을 활용한 BACKUP - Cold Physical Backup (0) | 2021.11.21 |
[SQL] BACKUP의 종류 (0) | 2021.11.20 |
[SQL] WorkBench에서 데이터 베이스 모델링 (0) | 2021.11.20 |
[SQL] MySQL WorkBench 설치 (0) | 2021.11.19 |