$ show variables like 'general%';
$ set global general_log="ON";
- /var/lib/mysql/dev-event-real.log 경로에 로그가 남는다.
- DB 서버 재시작하면 OFF 로 바뀌어있다.
Ref. 실행된 Query log 확인 및 추적하는 방법
$ mkdir /backup
소유자는 읽기, 쓰기, 실행 가능하고
그 외는 읽기, 실행(sql 파일이니까) 가능
$ chmod 755 /backup
vi /root/backup.sh
내용은 다음과 같습니다.
#!/bin/sh
DATE=`date +"%Y%m%d"`
PREV_DATE=`date --date '30 days ago' +"%Y%m%d"`
nowDate=$(date +"%Y-%m-%d %H:%M:%S")
echo "It's ${nowDate}, dev_event Database all tables backup cron started!" >> /var/log/cron/cron_history.log
mysqldump -uroot dev_event > /backup/mysql_db_bak_${DATE}.sql
chown root:root /backup/mysql_db_bak_${DATE}.sql
chmod 755 /backup/mysql_db_bak_${DATE}.sql
nowDate=$(date +"%Y-%m-%d %H:%M:%S")
echo "It's ${nowDate}, dev_event Database all tables backup cron ended!" >> /var/log/cron/cron_history.log
rm -Rf /backup/mysql_db_bak_${PREV_DATE}.sql
nowDate=$(date +"%Y-%m-%d %H:%M:%S")
echo "It's ${nowDate}, backup file from 30 days ago is deleted!" >> /var/log/cron/cron_history.log
- 시작 하기 전에
cron_history.log
에 시작 로그를 남깁니다. - dump를 떠서 /backup 폴더에 금일 날짜로 저장합니다.
- 해당 파일 소유권을 root가 가집니다.
- 해당 파일 권한을 755로 부여합니다.
- dump를 떴다면
cron_history.log
에 종료 로그를 남깁니다. - 30일 전 파일을 삭제합니다.
- 삭제했다면
cron_history.log
에 삭제 로그를 남깁니다.
로그 파일을 미리 생성해둡니다.
$ touch /var/log/cron/cron_history.log
그리고 해당 파일은 소유자만 실행 가능하도록 변경합니다.
$ chmod 100 /root/backup.sh
crontab -e
다음과 같이 입력해줍니다.
매일 밤 23시에 백업이 진행됩니다.
00 23 * * * /root/backup.sh
$ date
명령어를 통해 현재 시각을 확인합니다.
이 때 서버 시간이 Asia/Seoul이 아니라면 timedatectl
명령어로 변경합니다.
sudo timedatectl set-timezone Asia/Seoul
그런 후에 cron을 재시작합니다.
service cron restart