반응형
소개
MongoDB를 Windows에서 Linux 환경으로 마이그레이션하는 전체 과정을 상세히 알아보겠습니다. MongoDB 8.0.3 버전을 기준으로 설명하겠습니다.
Linux에 MongoDB 설치하기
Ubuntu/Debian 환경
# 1. MongoDB GPG 키 가져오기
sudo apt-get update
sudo apt-get install gnupg curl
curl -fsSL https://pgp.mongodb.com/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
# 2. MongoDB 리포지토리 추가
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
# 3. 패키지 업데이트 및 MongoDB 설치
sudo apt-get update
sudo apt-get install -y mongodb-org
RHEL/CentOS 환경
# 1. 리포지토리 파일 생성
sudo tee /etc/yum.repos.d/mongodb-org-8.0.repo <<EOF
[mongodb-org-8.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/8.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-8.0.asc
EOF
# 2. MongoDB 설치
sudo yum install -y mongodb-org
Windows에서 데이터베이스 백업하기
MongoDB 서비스 중지
# 관리자 권한으로 PowerShell 실행
net stop MongoDB
mongodump 실행
# 전체 데이터베이스 백업
mongodump --out C:\mongodb_backup
# 특정 데이터베이스만 백업
mongodump --db your_database_name --out C:\mongodb_backup
# 인증이 필요한 경우
mongodump --uri "mongodb://username:password@localhost:27017" --out C:\mongodb_backup
백업 파일 압축
# 7-Zip 사용
"C:\Program Files\7-Zip\7z.exe" a C:\mongodb_backup.zip C:\mongodb_backup\*
백업 파일 Linux 서버로 전송
SCP 사용
# Windows PowerShell에서
scp C:\mongodb_backup.zip username@server_ip:/home/username/
# 또는 Linux 서버에서 다운로드
scp username@windows_ip:C:/mongodb_backup.zip /home/username/
SFTP 사용
# SFTP 접속
sftp username@server_ip
# 파일 업로드
put C:\mongodb_backup.zip
# 종료
exit
Linux에서 MongoDB 설정 및 복원
MongoDB 설정
# 1. MongoDB 설정 파일 수정
sudo nano /etc/mongod.conf
# 2. 주요 설정 내용
storage:
dbPath: /var/lib/mongodb
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 0.0.0.0 # 외부 접속 허용 시
# 3. 디렉토리 권한 설정
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
MongoDB 서비스 시작
# 서비스 시작
sudo systemctl start mongod
# 서비스 상태 확인
sudo systemctl status mongod
# 부팅 시 자동 시작 설정
sudo systemctl enable mongod
백업 복원
# 1. 백업 파일 압축 해제
unzip mongodb_backup.zip
# 2. mongorestore 실행
# 전체 데이터베이스 복원
mongorestore /home/username/mongodb_backup
# 특정 데이터베이스 복원
mongorestore --db your_database_name /home/username/mongodb_backup/your_database_name
# 인증이 필요한 경우
mongorestore --uri "mongodb://username:password@localhost:27017" /home/username/mongodb_backup
마이그레이션 확인
데이터 정합성 검증
// MongoDB Shell에서
// 컬렉션 개수 확인
db.collection_name.count()
// 샘플 데이터 확인
db.collection_name.find().limit(5)
// 인덱스 확인
db.collection_name.getIndexes()
성능 확인
// 쿼리 실행 계획 확인
db.collection_name.find({your_query}).explain("executionStats")
문제 해결 및 주의사항
자주 발생하는 문제
1. 권한 문제
# MongoDB 디렉토리 권한 재설정
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
2. 메모리 부족
# 시스템 메모리 확인
free -h
# swap 공간 확인
swapon --show
3.디스크 공간
# 디스크 사용량 확인
df -h
# MongoDB 데이터 디렉토리 크기 확인
du -sh /var/lib/mongodb
보안 설정
# 방화벽 설정
sudo ufw allow 27017
# MongoDB 인증 활성화
security:
authorization: enabled
마치며
MongoDB의 Windows에서 Linux로의 마이그레이션은 신중하게 계획하고 실행해야 합니다. 특히 대용량 데이터베이스의 경우, 충분한 테스트와 백업이 필요합니다.
'MongoDB' 카테고리의 다른 글
MongoDB 쿼리 작성법과 최적화 (2) | 2024.12.03 |
---|