Backup
Hot Backup과 Cold Backup
- Hot Backup
- 백업하는 동안 서비스를 실행할 수 있다.
- 백업하는 동안 데이터가 변경될 수 있고, 때문에 완전한 백업이 이루어지지 않을 수 있다.
- Cold Backup
- 데이터 베이스를 중지한 상태로 데이터를 백업한다.
- 백업하는 동안 서비스가 중단된다.
Logical Backup 과 Physical Backup
- Logical Backup
- DB 구성요소가 다른 폴더에 메타데이터 형태로 저장되어있는 경우 논리적 백업을 사용한다.
- DB에서 데이터를 뽑아와서 텍스트 형태로 저장한다.
- 속도는 느리지만 디스크 용량을 적게 사용한다.
- 문제 발생에 대한 파악이 쉽다.
- OS 호환이 잘된다.
- DB가 서비스 중일때만 가능하다.
- Physical Backup
- 일반적으로 하나의 폴더에 저장되어있는 문서들은 쉽게 백업이 되므로 물리적 백업을 사용한다.
- DB를 구성하는 디렉토리, 로그, 환경파일등을 통채로 백업하는 방법이다.
- 변환 과정 없이 copy, paste한다.
- 그럼에 따라 속도는 빠르지만 디스크 용량을 많이 사용한다.
- 문제 발생에 대한 파악이 어렵다.
- OS 호환이 잘 안될 수 있다.
Hot Logical Backup 방식
- mysqldump -u root -p(패스워드) (데이터베이스) > (저장할 파일 이름)
crontab을 활용한 자동 Backup
- backup.sh
1 2 3 4 5
#!/bin/bash BD=`date +%Y%m%d_%H%M --date=today` FILE=${BD}.sql cd ~/backup mysqldump -u <id> -p<pwd> test > $FILE
- crontab -e
1
*/2 * * * * /bin/bash backup.sh
Cold Physical Backup 방식
- 먼저 서버를 중단한다.
- sudo systemctl stop mysql
- 파일을 백업할 폴더를 만들고 파일을 이동한다.
- cp -r* /home/ubuntu/backup
- 파일의 권한을 mysql에서 ubuntu로 바꾼다.(ubuntu에서 파일을 이동시키려면 파일 권한이 ubuntu여야 한다.)
- sudo chown -R ubuntu: /home/ubuntu/backup
- 위의 경우 2분에 한번씩 backup.sh가 실행된다.
- *위치뒤에 /number를 붙여서 자동으로 실행되는 시간 간격을 조절할 수 있다.
- backup.sh가 실행되면 현재 날짜.sql을 파일명으로 한 sql이 저장된다.
Master db, Slave db
- 하나의 DB에 너무 많은 Query가 집중되면 과부하에 걸릴 수 있다.
- 이때 기능별로 DB를 나누면 효율적으로 데이터를 처리할 수 있다.
- insert DB, select DB 등
- master db에 update된 내용이 slave db에 자동으로 동기화된다.
- 두 db는 master, slave를 둘다 할 수 있다.
- 두 db에서 insert를 모두 받게 할 수 있다.
- API를 구현할 때, 용도에 따라 접근하는 DB를 구분해서 성능을 향상시킨다.