Skip to content

Latest commit

 

History

History
115 lines (83 loc) · 2.7 KB

데이터베이스.md

File metadata and controls

115 lines (83 loc) · 2.7 KB

쿼리 실행 로그 남기기

$ show variables like 'general%';
$ set global general_log="ON";
  • /var/lib/mysql/dev-event-real.log 경로에 로그가 남는다.
  • DB 서버 재시작하면 OFF 로 바뀌어있다.

Ref. 실행된 Query log 확인 및 추적하는 방법




DB 정기 백업

1. 백업 받을 폴더를 생성

$ mkdir /backup

2. 백업 폴더 권한 수정

소유자는 읽기, 쓰기, 실행 가능하고

그 외는 읽기, 실행(sql 파일이니까) 가능

$ chmod 755 /backup

3. shell 스크립트 배치파일 생성

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

4. crontab 적용하기

crontab -e

다음과 같이 입력해줍니다.

매일 밤 23시에 백업이 진행됩니다.

00 23 * * * /root/backup.sh

5. 서버 시간 확인하기

$ date

명령어를 통해 현재 시각을 확인합니다.

이 때 서버 시간이 Asia/Seoul이 아니라면 timedatectl 명령어로 변경합니다.

sudo timedatectl set-timezone Asia/Seoul

그런 후에 cron을 재시작합니다.

service cron restart