Today
-
Yesterday
-
Total
-

ABOUT ME

-

방문자

  • [Database] Linux-Docker-Mysql 데이터베이스 자동 백업
    Database 2021. 11. 29. 15:31

    backup/database에 주기적으로 백업 데이터를 저장하는 방법 입니다.

    해당 글은 백업 스크립트는 backup 폴더에 생성하는 것을 기준으로 하고 있습니다.

     

     

    1. 폴더를 생성합니다. (스크립트 보관 및 백업데이터 보관용)

    # 경로 생성
    mkdir /backup
    mkdir /backup/database

    2. 스크립트 생성

    # 스크립트를 생성합니다.
    vi /backup/backup_db.sh
    
    # 생성 후 i를 눌러 데이터를 입력합시다. (아래 코드(2.1) 붙여 넣기(마우스 우클릭))
    # 입력 후에 ESC를 누르고 :wq를 입력하고 빠져나옵니다.

    2.1

    #!/bin/sh
    
    
    echo "============= 20일 지난 데이터 삭제 시작 ============="
    # 20일이 지난건 지워버림
    DEL_FILE=`date -d "-20 days" +%Y%m%d`
    
    rm -rf /backup/database/mysql_db_bak_${DEL_FILE}.sql
    echo "============= 20일 지난 데이터 삭제 완료 ============="
    
    
    echo "============= 변수 할당 시작 ============="
     DATE=`date +"%Y%m%d"`
     USER="DB접속 계정"
     PASSWORD="DB접속 암호"
     DATABASE="데이터베이스 명"
     CONTAINER="Docker mysql 컨테이너 명"
     OUTPUT_PATH="/backup/database/mysql_bak_${DATABASE}_${DATE}.sql"
    echo "============= 변수 할당 완료 ============="
    
    
    echo "============= Database 백업 시작 ============="
     docker exec ${CONTAINER} /usr/bin/mysqldump -u${USER} -p${PASSWORD}  ${DATABASE} > ${OUTPUT_PATH}
     chown root.root  ${OUTPUT_PATH}
     chmod 755  ${OUTPUT_PATH}
    echo "============= Database 백업 완료 ============="

    3. crontab를 사용하여 특정 시간에 스크립트 자동 실행

    # 설정 열기
    crontab -e

    4. 반복 시간(분, 시, 월, 일, 요일) 및 반복 파일 설정

    분(0~59), 시(0~23), 일(1~31), 월(1~12), 요일(0~7 : 0,7은 일요일)

    명령어는 무조건 한줄로 입력!, 줄 바꿈으로 여러 명령어 설정 가능

    00 02 * * * bash /backup/backup_db.sh
    
    # 생성 후 i를 눌러 데이터를 입력합시다. (아래 코드(2.1) 붙여 넣기(마우스 우클릭))
    # 입력 후에 ESC를 누르고 :wq를 입력하고 빠져나옵니다.

    5. 수정 사항 적용

    service crond restart

    6. 반영 결과 확인

    crontab -l
Posted by virtualgiraffe.