crontab -> 유닉스 OS 계열에서 특정 시간에 특정 작업을 해야하는 경우 사용하는 스케줄러입니다.
1. crontab basic
1.1 스케줄 설정 : 아래의 커맨드를 입력하면 스케줄을 설정할 수 있는 vi 에디터 페이지가 생성됩니다. 여기에 어떤 주기로 어떤 파일을 실행할지에 대한 리스트를 작성해주면 됩니다.
$ crontab -e
1.2 스케줄 리스트 확인 : 현재 crontab의 스케줄을 확인할 수 있습니다.
$ crontab -l
2. 주기 설정
터미널로 aws에서 만든 서버에 접속한 후 'vi time.py' 명령어로 파일 생성 후 vi 에디터가 열리면
"
import datetime
today = datetime.datetime.now()
print(str(today))
"
위 내용을 입력해 줍니다. 그 후 'phthon3 time.py'로 파일을 실행하면 현재 시간이 나올 겁니다. 에러가 발생하면 에러가 발생한 이유가 나올겁니다. 확인 후 'chrontab -e'를 입력 후 2번을 선택해줍니다. 그러면 vi 에디터가 열립니다. 열리는거 확인하고 다음에는 time zone을 변경해보겠습니다.
time zone 변경
'timedatectl' 명령어를 통해서 현재 시간을 확인할 수 있습니다. 확인 후 'sudo timedatectl set-timezone Asia/Seoul'를 입력하면 한국시간으로 바뀝니다.
crontab 로그 확인
'grep CRON /var/log/syslog' 명령어를 통해서 crontab의 시스템 로그를 확인할 수 있습니다. 만약 오류가 있다면 여기서 확인할 수 있습니다. 오류 메세지를 확인하는 방법은 'sudo apt-get install postfix' 명령어를 통해서 postfix를 기본값으로 설정해서 설치하고 'cat /var/mail/ubuntu' 명령어를 통해서 오류 메세지를 확인할 수 있습니다. 만약 가독성이 좋지 않다고 느껴지면 'sudo apt install mailutils'로 유틸리티를 설치해주고 'mail' 명령어로 오류 하나하나 구체적으로 오류 메세지를 확인할 수 있습니다.
backup의 종류
hot backup -> 데이터 베이스를 중지하지 않은 상태로 데이터를 백업합니다. / 백업하는 동안 서비스가 실행됩니다. / 백업하는 동안 데이터가 변경되어 완전한 백업이 안될 수도 있습니다.
cold backup -> 데이터 베이스를 중지한 상태로 데이터를 백업합니다. / 안정적으로 백업이 가능합니다. / 백업하는 동안 서비스가 중단되어야 합니다.
logical backup -> sql문으로 백업합니다. / 느린 속도로 백업과 복원이 이루어집니다. / 디스크 용량을 적게 사용합니다. / 작업시 시스템 자원을 많이 사용합니다. / 문제 발생에 대한 파악이 쉽습니다. / 서버 OS 호환이 잘됩니다.
physical backup -> 파일 자체를 백업합니다. / 빠른 속도의 백업과 복원이 이루어집니다. / 작업시 시스템 자원을 적게 사용합니다. / 문제 발생에 대한 파악과 검토가 어렵습니다. / 서버 OS 호환이 잘 안될 수 있습니다.
logical backup을 실행해보겠습니다.
서버 루트 위치에 backup 폴더를 만들어줍니다.
서버 터미널에서 mysqldump -u root -p test > ~/backup/test_backup.sql 명령어를 입력해줍니다.
그러면 물리적 백업이 완료됩니다.
그 후 vi backup.sh 명령어를 입력하면 vi 에디터가 열립니다. 그 안에 다음 내용을 입력해줍니다.
"
#!/bin/bash
BD=`date +%Y%m%d_%H%M --date=today`
FILE=${BD}.sql
echo "mysqldump -u root -p test > $FILE"
"
저장 후 에디터에서 나와서 /bin/bash backup.sh를 입력해서 mysqldump -u root -p test > 날짜.sql이 나오면 잘 만들어진겁니다.
다시 vi backup.sh 명령어로 vi 에디터에 들어가서 다음 내용을 추가 입력해줍니다.
"
#!/bin/bash
BD=`date +%Y%m%d_%H%M --date=today`
FILE=${BD}.sql
cd ~/backup
mysqldump -u root -p test > $FILE
"
저장 후 에디터를 나옵니다. 그 후 /bin/bash backup.sh 명령어를 입력 후 backup 폴더를 보면 백업 파일이 생긴 것을 확인할 수 있습니다.
그 후 crontab -e 명령어로 vi 에디터가 열리면 맨 위에
* * * * * /bin/bash ~/backup.sh
위 내용을 입력해줍니다.
그런데 현재 mysqldump를 사용할 수 없기 때문에 mysqldump를 쓸 수 있도록 환경을 설정해주어야 됩니다.
맨 위에 아래 내용을 추가해줍니다.
PATH=/usr/bin:/bin
그러고 나서 저장하고 에디터에서 나갑니다.
그러면 1분마다 backup 폴더에 파일이 생길겁니다.
그 파일을 가져올 때는 mysql -u root -p backup < backup/20201130_1433.sql 명령어를 통해서 백업 파일을 가져올 수 있습니다.
'DATABASE' 카테고리의 다른 글
mssql 개인적으로 기억할 query (0) | 2021.05.02 |
---|---|
mongoDB (AWS EC2) (0) | 2020.11.30 |
sql에서 function 종류 (0) | 2020.11.26 |
데이터베이스 모델링 및 sql문 (0) | 2020.11.24 |
AWS를 이용해서 mysql 사용하기 (0) | 2020.11.23 |