우분투 로컬에 설치한 mysql db를 주기적으로 백업하고 일정일 이후에 자동으로 백업본 삭제하기
전체 Database를 한개의 파일로 백업
쉘 스크립트 작성
홈디렉토리에 db_backup.sh 파일 작성
아래 예제는 /mnt/disks/sdb라는 외장 디스크에 저장하는 예제임. 여러분의 폴더에 맞게 경로를 바꾸면 됨
#!/bin/bash
# 이 파일명: db_backup.sh
# 백업할 디렉토리 2개 생성
# 1. mkdir /mnt/disks/sdb/backup
# 2. mkdir /mnt/disks/sdb/backup/db
cd /mnt/disks/sdb/backup
DATE_YYYYMMDDHHMMSS=`date '+%Y%m%d%H%M%S'`
dailysql=$DATE_YYYYMMDDHHMMSS'_daily.sql'
password='[mysql root 비번]'
echo "mysql dailysql dump start.."
# 모든 데이터베이스 백업
mysqldump -uroot -p$password --all-databases > ./db/$dailysql
# 특정 데이터베이스 백업하고 싶으면 아래 주석을 풀면 됨
# mysqldump -uroot -p$password --single-transaction db이름 > ./db/$dailysql
echo 'dumpfile : '$dailysql
tar cvzf ./db/$dailysql'.tar.gz' ./db/$dailysql
rm ./db/$dailysql
echo 'compression file : './db/$dailysql'.tar.gz'
echo "mysql dailysql dump finished.."
# 10일전 백업본 삭제
find ./db -name '*' -mtime +10 -delete
실행권한 부여
chmod 777 /home/ubuntu/db_backup.sh
크론탭에 등록
15 3 * * * /home/ubuntu/db_backup.sh
데이터베이스별로 백업하는 법
#!/bin/bash
# 백업 디렉토리 생성
BACKUP_DIR=/mnt/disks/sdb/backup/db
DATE_YYYYMMDD=`date '+%Y%m%d'`
DATE_YYYYMMDDHHMMSS=`date '+%Y%m%d%H%M%S'`
password='root비번'
echo "mysql daily dump start.."
# 날짜별 폴더 생성
mkdir -p $BACKUP_DIR/$DATE_YYYYMMDD
# 사용자 데이터베이스 목록을 가져옵니다.
databases=$(mysql -uroot -p$password -s -N -e "SHOW DATABASES;" | grep -vE "(information_schema|mysql|performance_schema)")
for db in $databases; do
filename=$DATE_YYYYMMDDHHMMSS"_$db.sql"
echo "Dumping database: $db"
# 각 데이터베이스를 별도의 파일로 백업합니다.
mysqldump -uroot -p$password --single-transaction $db > $BACKUP_DIR/$DATE_YYYYMMDD/$filename
# 압축합니다.
tar cvzf $BACKUP_DIR/$DATE_YYYYMMDD/$filename'.tar.gz' $BACKUP_DIR/$DATE_YYYYMMDD/$filename
rm $BACKUP_DIR/$DATE_YYYYMMDD/$filename
echo "Compression file: $BACKUP_DIR/$DATE_YYYYMMDD/$filename.tar.gz"
done
echo "mysql daily dump finished.."
# 7일전 백업본 삭제
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
'오라클 클라우드 > 우분투팁' 카테고리의 다른 글
nginx에서 post request를 다른 url 의 post로 보내기 (0) | 2023.01.30 |
---|---|
용량 큰 폴더 파일 찾기 우분투 (0) | 2022.11.29 |
우분투에서 서비스중인 포트 확인 (0) | 2022.10.10 |
nginx, User-Agent로 리다이렉트 (0) | 2022.04.16 |
nginx , apache 둘 다 있을 경우 ssl 인증서 갱신 (0) | 2022.03.20 |
댓글