마이SQL, 마리아DB 데이터베이스 주기적으로 백업하기 - MySQL, MariaDB Database Scheduled Backup

리눅스는 보통 크론(cron)과 셸(shell) 스크립트로 DB 백업을 자동화 합니다.

윈도우에도 이런 프로그램이 없는 것은 아니지만 쓸만한 프로그램들은 대부분 유료입니다.

간편하게 윈도우 작업 스케줄러와 배치파일(BAT)로 DB백업을 하는 방법을 소개합니다.

1. MySQL, MariaDB 설치 경로에서 mysqldump.exe 를 찾습니다.

보통은

C:\Program Files\MariaDB 10.3\bin

경로에 있습니다.

다른 경로에 있을 경우 아래 배치파일의 "mysqldump.exe" 실행 경로를 변경해줍니다.

2. 메모장이나 텍스트 편집기를 이용해서 아래 백업 배치 코드를 붙여넣고 "bat" 확장자로 저장합니다.

set CUR_DATE=%date:~0,4%-%date:~5,2%-%date:~8,2%echo %CUR_DATE%"C:\Program Files\MariaDB 10.3\bin\mysqldump" --single-transaction --routines --databases db명 -h db서버IP -u아이디 -p패스워드 > 저장할폴더경로\dbbackup-%CUR_DATE%.sql

첫줄은 저장할 백업파일명을 날짜로 지정하기 위해 날짜문자열 값을 가지는  "CUR_DATE" 변수를 생성합니다.

두번째 줄은 생성한 변수값을 커멘드 라인에 출력합니다.

세번째 줄은 mysqldump로 db를 백업하는 명령행입니다.

변경해야할 부분은 "db명", "db서버IP", "아이디", "패스워드", "저장할폴더" 입니다.

그리고 백업 파일명은 "dbbackup-%CUR_DATE%.sql" 로 생성됩니다.

윗줄에서 생성한 날짜 변수값이 대입되어 "dbbackup-20190512.sql" 파일명으로 백업 파일이 생성됩니다.

예를 들어

"C:\Program Files\MariaDB 10.3\bin\mysqldump" --single-transaction --routines --databases apost -h localhost -uroot -pmypassword > D:\DBBACKUP\_dbbackup\apost-backup-%CUR_DATE%.sql

이런식으로 만들 수 있습니다.

이제 작업 스케줄러에 이 배치파일을 올려서 매일 한번씩 자동으로 백업파일이 생성되도록 합니다.

--routines 옵션은 스토어드 프로시저를 함께 덤프하는 옵션입니다.

--single-transaction 옵션은 트랜잭션을 지원하는 테이블을 블록 없이 덤프할 수 있게 해줍니다.


db전체가 아닌 특정 테이블만 백업하려면 db명 뒤에 한칸 띄워서 테이블명을 적어주면 됩니다.

모든 db를 백업하려면  "--databases db명" 대신 "--all-databases" 를 입력해주면 됩니다.

같은 폴더 위치에 여러개의 db를 이름을 다르게해서 덤프를 하려면 위 sqldump 명령어 행을 복사 붙이기를 한 후

db명을 변경하고 맨끝의 생성 파일명을 "dbbackup-db명-%CUR_DATE%.sql" 이런식으로 변경을 해주면 조금 더 간편하게 여러개의 db 덤프를 관리할 수 있습니다.

3. 작업 스케줄러에 배치파일 등록

배치파일을 "dbbackup.bat"로 생성했다고 하면

작업 스케줄러 트리거는 하루에 한번 지정한 시간에 실행하는 것으로 설정

동작은 생성한 배치파일을 지정합니다.

이제 하루에 한번 날짜명으로 된 db 덤프 백업이 자동으로 이루어집니다.

조금 원시적이지만 별도의 프로그램 설치가 필요없어 심플하고 효율적이기 때문에 관리하기 쉬운 장점이 있습니다.