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 파일을 만들어 보았습니다. 이 파일을 윈도우즈 작업 스케줄러를 사용해서 주기적으로 실행하면 되겠습니다.
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
Oracle Open 백업 하기(Hot backup) (2) | 2018.04.21 |
---|---|
Oracle Archive Mode 설정하기 (0) | 2018.04.21 |
오라클 MERGE INTO 문으로 있으면 UPDATE 없으면 INSERT 한번에 수행하기 (9) | 2018.04.20 |
오라클 문자열에서 숫자만 남기고 다른 문자 제거하기 (2) | 2018.04.20 |
오라클 데이터베이스 링크 생성하기 (2) | 2018.04.20 |