Posts DB Backup
Post
Cancel

DB Backup

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를 구분해서 성능을 향상시킨다.
This post is licensed under CC BY 4.0 by the author.

Contents

Trending Tags