원격 서버의 Mongodump
최근 일부 데이터를 MongoDB로 포팅하여 일일 백업(최대한 cron 작업) 실행 및 백업 중 하나를 보조 Mongo 데이터베이스에 복원하는 방법을 검토하고 있습니다.
시스템은 다음과 같이 설정됩니다.
- 서버 1: 개발 몽고 데이터베이스
- 서버 2: 두 개의 mongo 데이터베이스, 하나는 데이터 준비용, 하나는 프로덕션용
- 서버 3: 여기서 모든 cron 작업/cron 스크립트를 실행합니다.
mongo 문서를 확인하고 cron 작업 서버에 로그인하여 다음 명령을 실행하려고 했습니다. (보안을 위해 사용자 이름, 호스트 및 암호가 변경되었습니다. 실제로 localhost에 연결하지 않습니다.)
mongodump --host 127.0.0.1/development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1
다음과 같은 메시지가 표시됩니다.
월요일 10월 7일 10:03:42 개발 시드가 있는 복제 세트 127.0.0.1에 대한 새 복제 세트 모니터 시작:27017
월요일 10월 7일 10:03:42 시드 개발에 성공적으로 연결됨: 27017 for replica set 127.0.0.1
월요일 10월 7일 10:03:42 경고: 노드: 개발: 27017은 집합의 일부가 아닙니다. 127.0.0.1 ismaster: {ismaster: true, maxBsonObjectSize: 16777216, ok: 1.0}
월요일 10월 7일 10:03:44 복제본 집합 127.0.0.1에 대한 복제본 집합 모니터 시작, 주소는 127.0.0.1/
월요일 10월 7일 10:03:44 [ReplicaSetMonitorWatcher] 시작 시 [127.0.0.1/개발:27017] 연결이 127.0.0.1/개발:27017을 설정하지 못했습니다.
다음을 사용하여 mongo 데이터베이스에 연결할 수 있음을 확인했습니다.mongo -u -p ip/development
최종 목표는 프로덕션 데이터베이스에서 데이터를 덤프하여 스테이징 데이터베이스에 저장하는 것입니다.이 두 데이터베이스는 모두 동일한 상자에 위치하지만 테스트 목적으로 개발 테스트 데이터의 백업을 얻으려고 합니다.
mongo클라이언트는 MongoDB 연결 문자열 URI를 구문 분석할 수 있으므로 모든 연결 매개 변수를 별도로 지정하는 대신 단일 연결 문자열 URI를 전달할 수 있습니다.
이 경우 연결 URI를 다음과 같이 전달하려고 합니다.host,그렇지만127.0.0.1/development올바른 호스트 이름이 아닙니다.즉, 다음을 지정해야 합니다.database매개 변수와 별도로host:
mongodump --host 127.0.0.1 -d development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1
mongodump와 함께 사용할 수 있습니다.--uri
mongodump --uri "mongodb://usersname:password@127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" --out "C:\Umesh"
모든 컬렉션은 외부 폴더에 저장됩니다. 그러면 디렉토리 이름이 데이터베이스 이름으로 생성되고 모든 컬렉션은 bson이며 메타데이터는 json 형식으로 저장됩니다.
복원용
mongorestore --uri "mongodb://usersname:password@127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" -d dbname mongodbumppath
이것을 사용해 보세요. 효과가 있을 겁니다.
이것은 저에게 효과가 있었습니다.
참조: https://docs.mongodb.com/manual/reference/program/mongodump
구문 1:
mongodump --host <hostname:port> --db <database> --username <username> --password <password> --out <path>
구문 2:
mongodump -h <hostname:port> -d <database> -u <username> -p <password> -o <path>
예 1:
mongodump --host 127.0.0.1:27017 --db db_app --username root --password secret --out /backup/db/app-17-03-07
예 2:
mongodump -h 127.0.0.1:27017 -d db_app -u root -p secret -o /backup/db/app-17-03-07
mongodump --host remotehostip:port --db dbname -u username -p password
다음은 노드 서버에서 로컬 컴퓨터로 수집을 내보내는 예입니다.
Host : xxx.xxx.xxx.xx
Port :27017
Username:”XXXX”
Password :”YYYY”
AuthDB : “admin”
“DB”: “mydb”
D:\mongodb-backup>mongodump -h xxx.xxx.xxx.xxx –port 27017 -u “XXXX” -p “YYYY” –authenticationDatabase “admin” –db “mydb”
URI를 사용하여 덤프를 가져오려면 다음을 사용합니다.
mongodump --uri=mongodb+srv://john:xxxxxxxxxxxxxxx@cluster0-jdtjt.mongodb.net/sales
gzip을 사용하여 한 컬렉션의 백업을 생성하고 백업을 즉시 압축할 수도 있습니다.
mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz
또는 파일 이름에 날짜가 있는 경우:
mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz
이것은 원격 윈도우즈 서버를 사용하는 단일 컬렉션에 대한 매력처럼 작용했습니다.
mongodump --host <remote_ip> --port <mongo_port> --db <remote_db_name> --authenticationDatabase <remote_auth_db> --username <remote_mongo_username> --password <remote_db_pwd> --out <local_DB_backup_folder> --collection <remote_collection_name>
Mac에서는 다음과 같이 작동했습니다(단, 실제 자격 증명을 사용해야 함).
brew tap mongodb/brew
brew install mongodb-community@5.0
brew services start mongodb/brew/mongodb-community
mongodump --uri "mongodb://usersname:password@127.0.0.1:27100/dbname" --out "/Users/some_username/code/mongodb_dumps/dump/"
cd /Users/some_username/code/mongodb_dumps/
mongorestore --nsInclude "*.*"
mongodump --host hostip -d dbname --port portnumber --username username --password password --authenticationDatabase admin -o ./path/of/backupfolder
참고: "/path/of/backupfolder" 경로가 클라이언트에 있습니다.
이것은 저에게 효과가 있었습니다.
1단계: 원격/로컬 DB를 내보냅니다.
mongodump --uri "mongodb+srv://USER:PASSWORD........." --out "/Users/Hardik/Desktop/mongo_bkp"
2단계: 가져오기
mongorestore ./mongo_bkp/
누군가에게 도움이 될 경우를 대비해 이 글을 여기에 올립니다.
저는 mongodump를 사용하여 연결하는 것이 불가능했습니다.결국 VS Code Mongo 확장자를 설치했고 그것이 나를 위한 문자열을 생성했습니다.명령은 다음과 같습니다.
mongodump -o dump_destination --uri "mongodb://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DATABASENAME>?authSource=admin&readPreference=primary&ssl=true"
언급URL : https://stackoverflow.com/questions/19228474/mongodump-from-remote-server
'programing' 카테고리의 다른 글
| 리플렉터에 대한 오픈 소스 대안? (0) | 2023.05.29 |
|---|---|
| Exec : stdout "live" 표시 (0) | 2023.05.29 |
| Rect를 그리거나 그렇지 않으면 Rect를 그리거나 하지 않습니다(drawRect/Core Graphics 대 subview/images 중 언제 사용해야 하며 그 이유는 무엇입니까?) (0) | 2023.05.29 |
| Android용 Eclipse에서 ProGuard 사용 (0) | 2023.05.29 |
| Nodejs의 Mongodb vs Postgres (0) | 2023.05.29 |