웹프로젝트 배포 후 Mysql DB 백업, Crontab 적용하기

2026. 5. 21. 13:13·Tech Archive/Linux

mysqldump 백업

  • 어느곳이든 상관없지만
  • 기본 /backup 폴더의 경로에 지정하기로 함.

 

1. db_account.txt 준비

  • host user password dbName customDir port 순서로 입력

ex)

localhost pdsql [password] myProject1 myproject1 3306
localhost pdsql [password] myProject2 myproject2 3306

 

 

2. backup.sh 준비

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

path="/backup"
dumpDir="$path/dump"

mkdir -p "$dumpDir"

now=$(date '+%Y%m%d')

while IFS= read -r line || [ -n "$line" ]; do
    [ -z "$line" ] && continue
    subArr=($line)

    host="${subArr[0]}"
    user="${subArr[1]}"
    pass="${subArr[2]}"
    db="${subArr[3]}"
    outDir="${subArr[4]}"
    port="${subArr[5]}"

    dir="$dumpDir/$db"
    mkdir -p "$dir"

    outfile="$dir/${db}_${now}.sql"
    errfile="$dir/${db}_error.log"

    if ! /usr/bin/mysqldump -h "$host" -u"$user" -p"$pass" -P "$port" "$db" > "$outfile" 2>>"$errfile" ; then
        echo "$(date '+%Y-%m-%d %H:%M:%S') Backup failed for $db" >> "$errfile"
    fi

    find "$dir" -type f -ctime +30 -delete
    find "$dir" -name "*_error.log" -ctime +30 -delete

done < "$path/db_account.txt"

exit 0

 

 

3. 권한설정

chmod +x /backup/backup.sh
dos2unix /backup/backup.sh   # (필요 시)

 

 

4. 크론탭 등록

  • crontab -e 로 등록
  • 실무에서는 백업 실패 시 원인 파악이 안 되면 최악이기 때문에 다음처럼 로그를 남기는 것이 안전함.
0 3 * * * /backup/backup.sh >> /backup/cron.log 2>&1
  • >> /backup/cron.log → 표준 출력(성공 메시지) 로그 파일에 추가 저장
  • >> 는 append (추가) 를 의미함.
  • 스크립트 실행 중 echo, 결과 출력, 정상 로그는
  • /backup/cron.log 파일에 계속 누적됨.

기존 로그는 지우지 않고 계속 이어서 저장됨.

 

 

 


 

 

2>&1 → 표준 에러(stderr)을 표준 출력(stdout)과 동일한 곳으로 보내기

평소:

  • stdout → 정상 출력
  • stderr → 오류 메시지

근데 cron에서는 stderr가 따로 처리되면 로그가 분산되기 때문에

이를 같은 파일로 합치는 것이 운영에서 필수임.

 

'Tech Archive > Linux' 카테고리의 다른 글

[Linux] rsync 사용하여 원격 파일, 디렉토리 복사하기  (0) 2021.07.20
'Tech Archive/Linux' 카테고리의 다른 글
  • [Linux] rsync 사용하여 원격 파일, 디렉토리 복사하기
roundfigure
roundfigure
알 수 없는 에러, 기술, 그리고 딱 떨어지는 해답. 사방으로 흩어진 모호한 문제들, 매끄러운 'Round Figure'로 정리하고 싶은 블로그.
  • roundfigure
    Round Figure
    roundfigure
  • 전체
    오늘
    어제
    • 전체 글 (56) N
      • Tech Archive (40)
        • Linux (2)
        • Linux(CentOS) (9)
        • Apache (4)
        • SpringBoot (3)
        • React (0)
        • Javascript (8)
        • JSTL (5)
        • 웹접근성 (4)
        • MySQL (2)
        • Unity (0)
        • ETC (3)
      • Trend (6) N
      • AI활용 (8) N
      • Hosting & Infra (2) N
      • Automation & Lab (0)
      • Error & Trouble Shooting (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • zeuz
    • hydok
  • 공지사항

  • 인기 글

  • 태그

    SWE-bench
    apache
    Proxy
    Linux
    CentOS 7
    Opus 4.8 비교
    JSTL
    프로그래밍
    VPS 비교
    웹접근성
    mysql
    설치
    javascript
    Anthropic Fable 5
    jquery
    Claude Fable 5
    Claude 수출통제
    리눅스
    Claude Mythos 5
    Claude 접근 제한
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
roundfigure
웹프로젝트 배포 후 Mysql DB 백업, Crontab 적용하기
상단으로

티스토리툴바