mongodb 덤프가 실패하고 DNS 메시지를 마샬링 해제할 수 없음
EC2 인스턴스에 설치된 mongodb 서버 버전 MongoDB 쉘 버전 v4.0.16을 사용하고 있습니다.
mongo 명령을 사용하여 인스턴스에 들어갈 수 있습니다.
mongo mongodb+srv://dxxxxxxx:xxxxxx[][]@cluster0-vxcen.gcp.mongodb.net
MongoDB shell version v4.0.16
connecting to: mongodb://cluster0-shard-00-02-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017/?authSource=admin&gssapiServiceName=mongodb&replicaSet=Cluster0-shard-0&ssl=true
2020-03-05T09:02:45.265+0000 I NETWORK [js] Starting new replica set monitor for Cluster0-shard-0/cluster0-shard-00-02-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017
2020-03-05T09:02:45.604+0000 I NETWORK [ReplicaSetMonitor-TaskExecutor] Successfully connected to cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017 (1 connections now open to cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017 with a 5 second timeout)
2020-03-05T09:02:45.607+0000 I NETWORK [js] Successfully connected to cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017 (1 connections now open to cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017 with a 5 second timeout)
2020-03-05T09:02:45.707+0000 I NETWORK [js] changing hosts to Cluster0-shard-0/cluster0-shard-00-00-vxcen.gcp.mongodb.net:27017,cluster0-shard-00-01-vxcen.gcp.mongodb.net:27017,cluster0-shard-00-02-vxcen.gcp.mongodb.net:27017 from Cluster0-shard-0/cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-02-vxcen.gcp.mongodb.net.:27017
2020-03-05T09:02:46.010+0000 I NETWORK [js] Successfully connected to cluster0-shard-00-00-vxcen.gcp.mongodb.net:27017 (1 connections now open to cluster0-shard-00-00-vxcen.gcp.mongodb.net:27017 with a 5 second timeout)
2020-03-05T09:02:46.028+0000 I NETWORK [ReplicaSetMonitor-TaskExecutor] Successfully connected to cluster0-shard-00-01-vxcen.gcp.mongodb.net:27017 (1 connections now open to cluster0-shard-00-01-vxcen.gcp.mongodb.net:27017 with a 5 second timeout)
2020-03-05T09:02:46.439+0000 I NETWORK [js] Successfully connected to cluster0-shard-00-02-vxcen.gcp.mongodb.net:27017 (1 connections now open to cluster0-shard-00-02-vxcen.gcp.mongodb.net:27017 with a 5 second timeout)
Implicit session: session { "id" : UUID("1c7432d5-e09c-45f8-8d84-d47e4f572cbf") }
MongoDB server version: 4.2.3
WARNING: shell and server versions do not match
Error while trying to show server startup warnings: user is not allowed to do action [getLog] on [admin.]
MongoDB Enterprise Cluster0-shard-0:PRIMARY>
mongodump를 사용하여 데이터베이스를 가져오기 위해 mongodb Atlas에 연결하려고 합니다.
mongodump --uri="mongodb+srv://dxxxxxxx:xxxxxx[][]@cluster0-vxcen.gcp.mongodb.net/xxxxxxxxxx"
문제에 직면해 있습니다.
error parsing command line options: error parsing uri (mongodb+srv://dxxxxxxx:xxxxxx[]@cluster0-vxcen.gcp.mongodb.net/xxxxxxxxxx): lookup cluster0-vxcen.gcp.mongodb.net on 127.0.0.53:53: cannot unmarshal DNS message
이는 호환되지 않는 DNS 서버의 경우일 뿐입니다.
위치하다/etc/resolv.conf
파일을 작성하고 네임 서버를 다음으로 바꿉니다.8.8.8.8
모든 게 잘 될 겁니다그래도 안 되면 시도해 보세요.1.1.1.1
.
이 문제는 여기에 보고된 문제와 유사합니다.위와 같이 resolv.conf를 변경하는 수정 사항은 재부팅이 지속되지 않는 것 같습니다.위 링크에서 제안된 해결 방법은 non srvurl을 사용하거나, 아니면 재부팅 후에도 문제가 없는 간단한 방법으로 심볼릭 링크를 제거하는 것입니다./etc/resolve.conf
필요한 DNS 서버가 포함된 정적 파일로 대체합니다.
여기에 있는 다른 옵션은 resolvconf 설치를 제안합니다(Ubuntu의 경우).apt install resolvconf
), 행 추가nameserver 8.8.8.8
로./etc/resolvconf/resolv.conf.d/base
그 다음에 달려라sudo resolvconf -u
그리고 확실히service resolvconf restart
실행을 확인하는 방법systemd-resolve --status
.
DNS 서버는 다음과 같이 첫 번째 줄에 표시됩니다.
DNS Servers: 8.8.8.8
DNS Domain: sa-east-1.compute.internal
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
효과적인 두 가지 솔루션:
- 값을 사용하여 네임 서버 추가
8.8.8.8
또는1.1.1.1
에 있는 기존의 것들에 추가로./etc/resolve.conf
파일 - 형식의 연결 문자열 사용
mongodb://{db}:{pass}@hostname1.mongodb.net,hostname2.mongodb.net,hostname3.mongodb.net/admin?authSource=admin&replicaSet={replicaSet}&readPreference=primary&ssl=true
대신에mongodb+srv://
서식을
포맷된 연결 문자열을 가져오려면 다음을 사용합니다.db.getMongo()
클러스터의 명령
예를 들어 확인 프로그램을 변경할 수 없는 환경에서는 이전 스타일의 URL을 사용할 수 있습니다.
client = pymongo.MongoClient("mongodb://<username>:<password>@<cluster>...
cloud.mongodb.com Atlas에서 생성한 URL 변경 후 Cluster -> Connect -> 연결 방법 선택 -> Python - 3.4 이상
드디어 작동하기 시작했습니다.
내 설정:
- 우분투 18.04
- Python 2.7.17 / 2.7.12
- 피몽고 3.11.1
- Google Cloud SDK 319.0.0
저의 경우, DNS 서버에서 MongoDB 연결만 잘못되었습니다.그러나 위에서 제안한 대로 Google DNS 8.8.8.8에서 작동했습니다.UDP 최대 패킷 크기를 줄이는 것이 해결책이었습니다(Google DNS와 동일).
cat /etc/bind/named.conf.options
options {
#...
listen-on { 127.0.0.1; };
allow-recursion { 127.0.0.1; ::1; };
edns-udp-size 512;
max-udp-size 512;
};
언급URL : https://stackoverflow.com/questions/60541611/mongodb-dump-fails-with-cannot-unmarshal-dns-message
'programing' 카테고리의 다른 글
SQL에서 그룹당 증분 그룹 번호를 반환하는 방법 (0) | 2023.07.13 |
---|---|
git add, commit 및 push 명령을 하나로 통합하시겠습니까? (0) | 2023.07.13 |
Firebase 인증을 사용하여 Float에서 사용자를 로그아웃하는 방법 (0) | 2023.07.13 |
오류 1064(42000):SQL 구문에 오류가 있습니다. 사용할 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서에서 확인하십시오. (0) | 2023.07.13 |
루비에서 배열을 반복하는 "올바른" 방법은 무엇입니까? (0) | 2023.07.13 |