본문 바로가기
프로그래밍/데이터베이스

Windows용 MySQL 백업 배치 파일 만들기

by pentode 2018. 4. 20.

Windows에서 MySQL 데이터베이스를 mysqldump 명령으로 백업하고, 오래된 백업 파일을 삭제하는 배치 프로그램을 만들어 봅니다.


@ECHO OFF

ECHO MySQL 데이터베이스 백업 시작


FOR /F "tokens=1-3 delims=- " %%a IN ('DATE /T') DO (SET dt=%%a-%%b-%%c)

FOR /F "tokens=1-4 delims=:." %%a IN ('ECHO %TIME%') DO (SET tm=%%a%%b%%c%%d)

SET backupfilename=_%dt%_%tm%.sql

ECHO 백업파일명: %backupfilename%


mysqldump --routines -uusername -ppassword dbname > E:\data\backup\"dbname%backupfilename%"


ECHO 오래된 백업을 삭제

FORFILES /P E:\data\backup /S /M *.sql /D -3 /C "cmd /c del @file"

ECHO 백업 완료


백업 파일의 이름은 dbname_YYYY-MM-DD_HHMMSSSS.sql 형식으로 생성합니다. 그리고 3일이 지난 백업

파일은 삭제하도록 해봅니다.



1. 먼저 백업 파일 이름에 들어갈 날짜 부분을 만듭니다.


FOR /F "tokens=1-3 delims=- " %%a IN ('DATE /T') DO (SET dt=%%a-%%b-%%c)


- DATE /T 명령을 명령행에서 내려보면 YYYY-MM-DD 형태의 날짜가 출력됩니다. 이 문자열을  "- " 를 분리자로 분리하면 세 개의 토큰이 만들어지는데 각각이  %a, %b, %c 가 되는 것입니다. 이것을 변수 dt 에 저장합니다.


FOR /F "tokens=1-4 delims=:." %%a IN ('ECHO %TIME%') DO (SET tm=%%a%%b%%c%%d)


- ECHO %TIME% 를 실행하면 HH:MM:SS.SS 형태의 시간이 출력됩니다. 이 문자열을 ":." 를 분리자로 분리하면 네 개의 토큰이 만들어지고 각각이 %a, %b, %c, %d 가 됩니다. 이것을 변수 tm 에 저장합니다.


SET backupfilename=_%dt%_%tm%.sql


- 백업 파일의 이름은 데이터베이스 이름에 _YYYY-MM-DD_HHMMSSSS.sql 가 붙는 형태로 만들어 집니다.



2. 데이터베이스를 백업합니다.


mysqldump --routines -uusername -ppassword dbname > E:\data\backup\"dbname%backupfilename%"


- mysqldump 명령으로 백업합니다. --routines 옵션은 저장 프로시저도 백업하라는 것입니다.



3. 오래된 백업 파일을 삭제합니다.


FORFILES /P E:\data\backup /S /M *.sql /D -3 /C "cmd /c del @file"


- /P E:\data\backup : 검색을 시작할 경로를 지정합니다.

- /S : 하위폴더를 포함 하도록 지정합니다.

- /M *.sql : 검색 마스크에 따라 파일을 검색합니다. '*' 이 기본 검색 마스크입니다.

- /D -3 : 3일 지난 파일을 찾습니다. +/-를 사용해서 0~32768 까지 지정할 수 있습니다.

- /C "cmd /c del @file" : 각 파일에 실행할 명령어를 지정합니다. 명령 문자열은 큰따옴표로 묶어야 합니다.



이제 백업을 수행하고, 오래된 파일을 삭제하는 batch 파일을 만들어 보았습니다. 이 파일을 윈도우즈 작업 스케줄러를 사용해서 주기적으로 실행하면 되겠습니다.

반응형