[linux] MongoDB 설치하기 (tistory.com)
서버의 문제 혹은 접속이 불가능한 상황을 대응하기 위해 주 1회 mongodb 데이터를 S3로 백업할 수 있는 방법에 대해서 정리를 해보았습니다.
1. s3 인입 권한을 가진 계정 생성하여 Access Token 발급
1) AWS Console IAM 접속
2) 사용자 추가
3) 직접 정책 연결
4) 정책 생성 클릭
5) JSON 인입
- 삭제 권한은 제거하고 인입 권한만 부여
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
},
{
"Effect": "Deny",
"Action": "s3:DeleteObject",
"Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
}
]
}
6) 권한 정책 창에서 정책 세로고침 후 연결
7) 보안 자격 증명 창에서 엑세스 키 발급
2. aws cli 설치 및 연동
# AWS CLI 설치
sudo yum install awscli
# AWS CLI 구성
aws configure
3. mongodb_backup_to_s3.sh 생성
nano mongodb_backup_to_s3.sh
#!/bin/bash
# MongoDB 설정
DB_NAME="your-db" # 백업할 MongoDB 데이터베이스 이름
COLLECTION_NAME="your-collection" # 백업할 MongoDB 컬렉션 이름
OUTPUT_DIR="/path/to/backup/folder" # 백업 파일을 저장할 경로
# S3 설정
S3_BUCKET="your-bucket"
TODAY_DATE=$(date '+%Y-%m-%d')
S3_PATH="s3://${S3_BUCKET}/${TODAY_DATE}" # 원하는 경로
# MongoDB에서 지정된 collection 백업
mongodump --db=${DB_NAME} --collection=${COLLECTION_NAME} --out=${OUTPUT_DIR}
# 백업된 데이터를 tarball로 압축
tar -czvf ${OUTPUT_DIR}/${COLLECTION_NAME}.tar.gz -C ${OUTPUT_DIR} ${DB_NAME}
# 백업된 tarball을 S3로 업로드
aws s3 cp ${OUTPUT_DIR}/${COLLECTION_NAME}.tar.gz ${S3_PATH}/
# JSON 형식으로 백업 데이터를 변환
mongoexport --db=${DB_NAME} --collection=${COLLECTION_NAME} --out=${OUTPUT_DIR}/${COLLECTION_NAME}.json
# 백업된 JSON 데이터를 S3로 업로드
aws s3 cp ${OUTPUT_DIR}/${COLLECTION_NAME}.json ${S3_PATH}/
# (선택적) 로컬에 저장된 백업 파일 및 tarball, json 삭제
rm -rf ${OUTPUT_DIR}/${DB_NAME}
rm ${OUTPUT_DIR}/${COLLECTION_NAME}.tar.gz
rm ${OUTPUT_DIR}/${COLLECTION_NAME}.json
echo "Backup for ${COLLECTION_NAME} completed!"
4. 백업 테스트
./mongodb_backup_to_s3.sh
5. 자동 스케줄러(cron)
crontab -e
# 월요일 새벽 2시에 실행
0 2 * * 1 /path/to/script/mongodb_backup_to_s3.sh
'Server > AWS' 카테고리의 다른 글
[CentOS] Aws CloudWatch Memory 및 용량 확인 (0) | 2023.04.13 |
---|---|
[Windows] Aws CloudWatch Memory 및 용량 확인 (0) | 2023.04.12 |
AWS Global Accelerator란? (0) | 2023.03.24 |