본문 바로가기

Web/DB/Dev

SQL 서버 데이터베이스 백업과 파일의 자동 FTP 전송

SQL서버의 데이터베이스를 주기적으로 백업하기 위해서는 다음과 같은 설정을 통해 수행할 수 있다.

먼저 다음 화면과 같이 Management Studio를 실행하고 SQL 서버 에이전트에 "작업"을 등록한다.

사용자 삽입 이미지


위의 작업을 등록할 때 이름은 어떤 백업 작업인지 알기 쉽도록 주면된다.

작업을 등록하게 되면 두번째 항목에 "단계"라는 것이 인다. 이 단계에는 모두 2개가 등록된다.

DB를 백업하는 T-SQL 수행단계와 백업된 DB 파일을 FTP로 다른 서버로 전송하는 운영체제의 CmdExec 수행단계이다.

사용자 삽입 이미지

먼저 DB 백업 단계는 다음과 같이 Backup이라는 T-SQL이 등록되어야 한다.

사용자 삽입 이미지

이 스크립트는 ATCDB라는 데이터베이스를 "ATCDB-200807009.BAK"와 같이 데이터베이스명과 날짜를 포함하는파일명으로 백업하는 TSQL이다.

그리고나서 "고급"탭으로 이동하여 작업완료(성공)시 "다음 "단계로 이동"을 선택해주어야 한다. 그렇지 않으면 다음의 단계를 수행하지 않고 종료하게 된다.

다음은 백업된 파일을 다른 서버로 FTP를 이용하여 전송하는 단계이다. 다음과 같이 단계를 등록한다.

사용자 삽입 이미지

upload.cmd 라는 파일은 다음과 같은 내용이 포함되어 있는 도스 명령어 파일이다.

***** upload.cmd *****

for /F "tokens=1" %%a in ('date /t') do set date_today=%%a

set yy=%date_today:~0,4%
set mm=%date_today:~5,2%
set dd=%date_today:~8,2%

SET FILENAME=ATCDB-%yy%%mm%%dd%.BAK
d:
cd D:\ATC_BACKUP
ren %FILENAME% NOW_BACKUP.BAK
del ATCDB*.BAK
ren NOW_BACKUP.BAK %FILENAME%

echo open {서버IP} > D:\ATC_BACKUP\upload.txt
echo user {서버계정} >> D:\ATC_BACKUP\upload.txt
echo {계정패스워드} >> D:\ATC_BACKUP\upload.txt
echo bin >> D:\ATC_BACKUP\upload.txt
echo prompt off >> D:\ATC_BACKUP\upload.txt
echo lcd  D:\ATC_BACKUP  >> D:\ATC_BACKUP\upload.txt
echo cd {이동할서버경로} >> D:\ATC_BACKUP\upload.txt
echo mdel {이전의백업본삭제명령} >> D:\ATC_BACKUP\upload.txt
echo put %FILENAME%  >> D:\ATC_BACKUP\upload.txt
echo quit >> D:\ATC_BACKUP\upload.txt
c:\windows\system32\ftp -v -n -s:D:\ATC_BACKUP\upload.txt

del D:\ATC_BACKUP\upload.txt

두단계의 작업을 모두 등록하였으면 다음과 같이 일주일에 한번 수행되도록 일정을 등록하여 주면 백업 스케줄링은 완료된다.

사용자 삽입 이미지