[Aws Ubuntu] 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 apt update
sudo apt install awscli
# AWS CLI 구성
aws configure
3. mongodb_backup_to_s3.sh 생성
sudo vi mongodb_backup_to_s3.sh
#!/bin/bash
# MongoDB 설정
DB_NAME="chat" # 백업할 MongoDB 데이터베이스 이름
# 백업 파일을 저장할 실제 존재하는 경로로 변경하세요
OUTPUT_DIR="/path/to/backup/folder"
MONGO_URI="mongodb://user:password@주소:port/chat?authSource=admin"
# S3 설정
S3_BUCKET="db-backup-s3"
TODAY_DATE=$(date '+%Y-%m-%d')
S3_PATH="s3://${S3_BUCKET}/app-chat-db/${TODAY_DATE}"
# 백업 디렉토리 확인 및 생성
if [ ! -d "$OUTPUT_DIR" ]; then
mkdir -p "$OUTPUT_DIR"
fi
# MongoDB 데이터베이스의 모든 컬렉션 이름 가져오기
COLLECTIONS=$(mongosh "$MONGO_URI" --quiet --eval "db.getCollectionNames().join(' ')")
# 각 컬렉션에 대해 백업 수행
for COLLECTION_NAME in $COLLECTIONS
do
# MongoDB에서 지정된 컬렉션 백업
mongodump --uri="$MONGO_URI" --collection=${COLLECTION_NAME} --archive=${OUTPUT_DIR}/${COLLECTION_NAME}.gz
# 백업된 tarball을 S3로 업로드
aws s3 cp ${OUTPUT_DIR}/${COLLECTION_NAME}.gz ${S3_PATH}/
# JSON 형식으로 백업 데이터를 변환
mongoexport --uri="$MONGO_URI" --collection=${COLLECTION_NAME} --out=${OUTPUT_DIR}/${COLLECTION_NAME}.json
# 백업된 JSON 데이터를 S3로 업로드
aws s3 cp ${OUTPUT_DIR}/${COLLECTION_NAME}.json ${S3_PATH}/
# (선택적) 로컬에 저장된 백업 파일 삭제
rm ${OUTPUT_DIR}/${COLLECTION_NAME}.gz
rm ${OUTPUT_DIR}/${COLLECTION_NAME}.json
echo "Backup for ${COLLECTION_NAME} completed!"
done
4. 백업 테스트
./mongodb_backup_to_s3.sh
5. 자동 스케줄러(cron)
crontab -e
# 월요일 새벽 2시에 실행
0 2 * * 1 /path/to/script/mongodb_backup_to_s3.sh
'Server > Linux' 카테고리의 다른 글
[CentOS] Rocky Linux 서버에서 NTP 동기화 문제 해결(chrony) (0) | 2024.07.29 |
---|---|
[Aws Ubuntu] Mariadb 백업하기 (mariabackup) (0) | 2024.01.16 |
[Aws Ubuntu] MongoDB 유저 생성 및 권한 부여 (0) | 2023.12.13 |
[Ubuntu] Linux Aws CloudWatch Memory 및 용량 확인 (0) | 2023.10.31 |
[Ubuntu] Linux EC2 서버 시간 설정하기 (0) | 2023.10.31 |