리눅스 MYSQL 자동백업 안내

얼마전 제가 운영하던 서버에 해킹을 당했습니다. 사정상 MYSQL 원격접속을 허용을 하였는데, 오가는 패킷을 분석해서 어드민 권한으로 디비를 전부 암호화해서 비트코인을 달라고 하더군요ㅎㅎ

 

어찌됐든 제 잘못이라 그간 운영하던 데이터를 싹 날리고 새롭게 재구축을 하면서 백업과 보안에 대해서 좀더 신경을 쓰기로 하였습니다.

 

관리를 거의 안하던 홈페이지였는데, 데이터가 날아가니까 아깝더군요. 그래서 MYSQL 백업을 자동적으로 실행할 수 있는 방법을 알아보다가 정리차원에서 글을 남깁니다.

 

리눅스에서는 쉘스크립트로 간단하게 디비를 백업할 수 있습니다.

 

다만 제가 해맸던 부분이 실행권한이었는데요. 조금 있다가 알아보도록 하겠습니다.

 

 

 

리눅스 MYSQL 자동백업 방법

 

 

작업을 진행하기에 앞서 모든 과정은 루트권한으로 진행되니 참고해주시기 바랍니다.

 

우선 백업을 할 수 있는 쉘배치파일을 만들텐데요. 위치는 /root 에 만들었습니다.

 

 

# vi /root/backup.sh

 

이런식으로 해주셔도 됩니다^^

 

 

 

쉘커맨더 명령어는 다음과 같습니다.

 

 

#!/bin/sh
DATE=`date +"%Y%m%d"`
PREV_DATE=`date --date '5 days ago' +"%Y%m%d"`
 
/usr/bin/mysqldump -u사용자id -p비번 DB명 > /backup/mysql_db_bak_${DATE}.sql
chown root.root  /backup/mysql_db_bak_${DATE}.sql
chmod 755  /backup/mysql_db_bak_${DATE}.sql
rm -Rf  /backup/mysql_db_bak_${PREV_DATE}.sql

 

 

다른 블로그에서 참고를 하였는데, 폰으로 본거라 출처가 어딘지를 모르겠네요..

 

사실, 리눅스는 제가 많이 약해서 대략적인 부분은 추측이 가능한데, 데이터변수와 이전날짜 변수로서 디비백업을 하고, 날짜가 경과된 것은 지우는 형태인것 같습니다.

 

이렇게 쉘커맨드를 만들어서 크론에 집어 넣으면 잘 될것 같았는데 문제가 생기더군요.

 

첫번째는 mysql 접속문제였고, 두번째는 Permission denied 였습니다.

 

이게 문제가 뭐나면 루트계정이지만, 파일의 실행권한이 따로 있어서 실행이 안되었는데요. 여기새로 생성한 파일에 실행권한을 넣어 주어야 실행을 할 수가 있더군요.

 

 

chmod a+x backup.sh

 

꼭 잊지 마시고 위의 명령어를 해주어야 실행할 수 있습니다. 다음시간에는 크론탭에 대해서 말씀을 드리겠습니다. 리눅스 MYSQL 자동백업에 대해서 간단하게나마 알려드렸습니다.

 

크론탭까지 설명을 드리면 완벽해질 것 같네요.