백업 정책
서버는 언젠가 멈춘다. 그 순간을 대비하기 위해 중요한 설정 정보나 데이터를 다른 곳에 저장을 해두어야 한다.
정책 내용 방법
무엇을 | 웹: 웹소스, 서버 주요 설정 | |
데이터베이스: 데이터, 서버 주요 설정 | ||
스토리지: 서버 주요 설정 | tar볼로 묶어서 보관 | |
db덤프는 maria전용 백업툴 mariabackup을 사용 | ||
스토리지는 데이터 용량이 크기 때문에 향후 이중화 | ||
언제 | 하루에 한번 트래픽이 가장 적은 시간대 | 새벽 3시~5시 |
어디에 | 스토리지 BACKUP 디렉토리 각 서버 이름(hostname)디렉토리 | /mnt/BACKUP/서버의호스트이름 | |
백업 과정과 스크립트
#! /bin/bash
## 변수설정
HOST="${/usr/bin/hostname}"
LOG="/tmp/backup.log"
PUSH="/root/SHELL/monitor/tel_push.sh"
DATE="$(/bin/date +%Y.%m.%d)"
# 백업할 디렉토리/파일을 지정 (이 파일들을 아래 이름으로 압축)
BACK_LIST="/etc/my.chf.d"
# 백업 파일명
BAK_FILE="${BAK_PATH}/${DATE}_${HOST}.tgz"
# 디비백업 디렉토리(이 파일들을 아래 이름으로 압축)
DB_BAK_PATH="/root/SHELL/BACKUP/xtrabackup_backupfiles"
# 디비백업 파일명
DB_BAK_FILE="${BAK_PATH}/${DATE}_${HOST}_DB.tgz"
# 백업디렉토리 (스토리지서버)
BAK_PATH="/mnt/BACKUP/${HOST}"
##스토리지에 마운트
/usr/bin/mount /mnt
## 로그파일생성
/usr/bin/touch "${LOG}"
## 백업 디렉토리 확인
if [ -e "${BACK_PATH}" ]
then
# 백업 디렉토리가 존재한다면
/bin/echo "백업 디렉토리가 있어요"
else
# 백업디렉토리가 없으면 생성
/usr/bin/mkdir -p "${BAK_PATH}"
fi
## ---로그기록시작
{
#백업 시작 시간
/bin/echo
/bin/echo "===백업시작 시각 :"
/bin/date
/bin/echo
## 백업
# DB dump
/usr/bin/mariabackup \\
--backup \\
--no-lock \\
--taget-dir="${DB_BAK_PATH}"
# DB apply logs
/usr/bin/mariabackkup \\
--prepare \\
--target-dir="${DB_BAK_PATH}"
# db server setting 압축
/usr/bin/tar czpPf "${BAK_FILE}" "${BAK_LIST}"
# db 백업 디렉토리 압축
/usr/bin/tar czpPf "${DB_BAK_FILE}" "${DB_BAK_PATH}"
# 백업파일 정보
NAME="${/usr/bin/ls -al "${BAK_FILE}" | awk '{print $9}'}"
SIZE="${/usr/bin/ls -al "${BAK_FILE}" | awk '{print $5}'}"
/bin/echo "=== 백업 파일 정보 :"
/bin/echo " | 파일명 : ${NAME}"
/bin/echo " | 파일크기 : ${SIZE}Byte"
/bin/echo
# DB백업파일 정보
NAME="${/usr/bin/ls -al "${DB_BAK_FILE}" | awk '{print $9}'}"
SIZE="${/usr/bin/ls -al "${DB_BAK_FILE}" | awk '{print $5}'}"
/bin/echo "=== DB백업 파일 정보 :"
/bin/echo " | 파일명 : ${NAME}"
/bin/echo " | 파일크기 : ${SIZE}Byte"
/bin/echo
# 백업 종료 시각
/bin/echo
/bin/echo "=== 백업종료 시각:"
/bin/date
/bin/echo
# 일일이 리다이렉션 아닌 한번에 {} 통해 리다이렉트 하기
}>| "${LOG}"
## ---로그기록 끝
## 스토리지 언마운트
/usr/bin/unmount /mnt
## 텔레그램으로 백업 로그를 전송
"${PUSh}" "${HOST}" "$(/usr/bin/cat "${LOG}")"
##로그파일삭제
/usr/bin/rm -f "${LOG}"
crontab을 통해 새벽 시간 하루에 한번 백업 파일을 스토리지 서버에 업로드 할 수 있게 자동화 설정 진행
'Linux' 카테고리의 다른 글
웹 로그가 쌓여 디스크 꽉 차서 더 이상 로그를 생성하지 못하는 문제 (1) | 2024.06.07 |
---|---|
서버 장애 발생 시 확인해야 할 기본 절차 (1) | 2024.06.07 |
파일관련 명령어 2 (0) | 2024.05.08 |
파일관련 명령어 1 (0) | 2024.05.07 |
CLI 편집기 vim (0) | 2024.05.04 |