데이터베이스 백업용 SCP 사용을 위한 서버간 SSH 키 등록

2024. 3. 20. 08:33· 운영체제 및 서버/Linux
목차
  1. SCP 사용 이유
  2. 백업을 위한 쉘스크립트 작성
  3. SCP 를 위한 SSH 키 생성 및 설정

mysql

SCP 사용 이유

백업서버를 DB서버에 마운트 시킨 후 1일 1 백업 (또는 1일 3백업)을 수행이 필요했다. 

DB 서버에서는 리눅스 Cron Job을 통해 데이터베이스를 백업 후에 저장되는 경로를 마운트된 백업서버쪽에 쌓으려고 했다.

아무래도 DB서버 자체의 용량이 꽤 큰편이 아니다보니 다른 NAS나 서버등을 마운트 시킬 필요가 있었기 때문이다. 

하지만 여기서 이슈가 있었다.

DB 서버의 경우 다른 서버들은 볼 수 있었지만, DB 서버 자체가 다른 서버들을 볼 수 없었다.

물론 데이터센터쪽에 연락해 바라볼 수 있게 수정해달라하면 되지만, IP주소등의 변경이 이뤄지면 운영되는 플랫폼에도 영향이 갈 수 있어 추후에 알아보기로 하고, 우선은 SCP를 통해 백업서버에서 직접 DB서버에 저장된 파일을 복사해오는 쉘스크립트를 작성했다.

백업을 위한 쉘스크립트 작성

#!/bin/bash

# MySQL 정보 설정
MYSQL_USER="계정"
MYSQL_PASSWORD="비밀번호"
DATABASE_NAME="데이터베이스명"
OUTPUT_FILE="/backup/mysql/backup_$(date +'%Y-%m-%d').sql"

# mysqldump 실행
/usr/lib/mysql/bin/mysqldump --routines -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$DATABASE_NAME" > "$OUTPUT_FILE"

# 기존에 별도 특정 계정, 그룹을 만들고 해당 그룹은 root와 새로만든 계정이 들어있다는 가정하에 설정
chmod 770 "$OUTPUT_FILE"
chown root:신규그룹 "$OUTPUT_FILE"

보안적인 부분인 퍼미션 홀이 생기지 않도록 주의하는건 알아서 하고, 이제 DB서버내에서 Crontab을 수정했다.

# centos crontab 수정
crontab -e

# 아래 7번째 줄 한줄 추가 

# 새벽 두시마다 해당 스크립트 수행
0 2 * * * /backup/mysql_backup.sh
crontab -e 사용시, vi 에디터가 켜지므로 vi 에디터 사용법에 대해서는 따로 알아보자. 

cron이 잘 도는진 모르겠지만, 우선 쉘스크립트는 실행해보니 잘된다.

파일이 정상적으로 생긴걸 확인했으니 SCP 테스트를 진행했다. 

# 원격서버 폴더 : /backup
# 로컬서버 폴더 : /backup/mysql

scp 원격서버_계정@원격서버_IP:/backup/mysql/backup_$(date +'%Y-%m-%d').sql /backup/backup_$(date +'%Y-%m-%d').sql

내부망이라 그런지 엄청 매우 빠르다. 

이제 위 코드를 이용해 쉘스크립트를 만들려는데, 수행할때 비밀번호를 요구하기에 비밀번호가 없이 연결될 수 있도록 SSH 키 쌍을 원격지서버(DB서버)쪽에 등록한다.  

SCP 를 위한 SSH 키 생성 및 설정

1. SCP 명령어를 수행할 Local 서버의 SSH 키 쌍 생성 

# 기존에 있다면 SKIP 해도 됨
ssh-keygen -t rsa

2. 원격서버에 공개 키 복사

ssh-copy-id 원격지서버_계정@원격지서버_IP

예)
ssh-copy-id backup@10.24.50.18

3. 로컬서버에서 원격서버 접속 테스트 

ssh 원격서버_계정@원격서버_IP

# 비밀번호를 요구하지 않고 접속이 되었다면 성공!

 

이제 로컬서버에서 scp 관련 쉘스크립트를 작성하고 crontab에 넣어주자.

4. 로컬서버에 구동할 쉘스크립트 작성

파일명 : download_mysql_backup.sh

#!/bin/bash

HOST="원격서버_IP"
USER="원격서버_계정"
FILE_NAME="backup_$(date +'%Y-%m-%d').sql"

scp $USER@@HOST:/backup/mysql/$FILE_NAME /backup/$FILE_NAME
ssh $USER@$HOST "rm /backup/mysql/$FILE_NAME"

 

5. Crontab 에 등록 

# centos crontab 수정
crontab -e

# 아래 7번째 줄 한줄 추가 

# 새벽 세시마다 해당 스크립트 수행
0 3 * * * /backup/download_mysql_backup.sh

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'운영체제 및 서버 > Linux' 카테고리의 다른 글

Prometheus 와 Grafana, Node Exporter , Mysqld Exporter , RabbitMQ Exporter 환경 구축 (2/2)  (0) 2024.04.03
Prometheus 와 Grafana, Node Exporter , Mysqld Exporter , RabbitMQ Exporter 환경 구축 (1/2)  (1) 2024.04.02
Ubuntu 22.04 Docker ( with docker-compose) 설치  (1) 2024.03.19
Ubuntu 22.04 최신 redis 설치 ( redis 7.2.4 )  (0) 2024.03.17
  1. SCP 사용 이유
  2. 백업을 위한 쉘스크립트 작성
  3. SCP 를 위한 SSH 키 생성 및 설정
'운영체제 및 서버/Linux' 카테고리의 다른 글
  • Prometheus 와 Grafana, Node Exporter , Mysqld Exporter , RabbitMQ Exporter 환경 구축 (2/2)
  • Prometheus 와 Grafana, Node Exporter , Mysqld Exporter , RabbitMQ Exporter 환경 구축 (1/2)
  • Ubuntu 22.04 Docker ( with docker-compose) 설치
  • Ubuntu 22.04 최신 redis 설치 ( redis 7.2.4 )
신·기록
신·기록
개발 관련 이슈 해결방안, 활용 방법, 제품 리뷰 등을 기록하는 개인 블로그
신·기록
문제해결집
신·기록
전체
오늘
어제
  • 분류 전체보기 (175)
    • 뉴스 (9)
    • 제품 리뷰 (19)
    • 운영체제 및 서버 (53)
      • Linux (27)
      • Mac OS (8)
      • Proxmox (6)
      • Nginx (2)
      • Raspberry Pi (3)
      • Odroid M2 (4)
    • AI 인공지능 (7)
    • 모바일 (4)
      • Flutter (1)
      • 안드로이드 (1)
    • 데이터베이스 (11)
      • Mysql (9)
    • 자바 (11)
      • Spring Framework (9)
    • 자바스크립트 (19)
      • Node JS (4)
      • Electron Framework (10)
      • React & Next.js (4)
    • 클라우드 플랫폼 (4)
    • 학습 (4)
    • 이슈 (21)
    • 비디오게임 에뮬레이터 (2)
    • CPU 성능 순위 (1)
    • 그래픽카드 성능 순위 (1)
    • 기타 (7)

블로그 메뉴

  • 이용 원칙
  • 태그
  • 방명록

인기 글

최근 글

08-05 18:17
관련 문의는 방명록에 부탁드립니다.
본 블로그의 스킨 출처는 아래와 같습니다.
hELLO · Designed By 정상우.v4.2.2
신·기록
데이터베이스 백업용 SCP 사용을 위한 서버간 SSH 키 등록
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.