mongomirror
경고
mongomirror
를 네임스페이스 필터와 함께 사용하는 경우 includeNamespace <database.collection>
의 범위를 벗어난 네임스페이스가 있는 소스의 트랜잭션은 정의되지 않은 동작으로 간주되어 잠재적인 데이터 손실을 초래합니다.
mongomirror
은(는) 기존 MongoDB 복제본 세트에서 MongoDB Atlas 복제본 세트로 데이터를 수동으로 마이그레이션하는 도구입니다.
구문
mongomirror
을(를) 실행하려면 다음을 지정해야 합니다.
mongomirror --host <sourceReplSet> \ --destination <atlasCluster> \ --destinationUsername <atlasAdminUser> \ --destinationPassword <atlasPassword> \ [Additional options]
일부 옵션은 명령에 포함하는 대신 config file
에 지정할 수 있습니다.
옵션
--host <host>
소스 복제본 세트의 호스트 정보입니다. 다음과 같이 복제본 세트 이름과 노드의 시드 목록을 지정합니다.
<RSname>/<host1>:<port1>,<host2>:<port2>,<host3>:<port3>
--username <username>
소스 복제본 세트에 인증이 필요한 경우
local
데이터베이스를 포함한 모든 데이터베이스를 읽을 수 있는 권한이 있는 소스 복제본 세트의 사용자 이름입니다.backup
역할을 가진 사용자는 적절한 권한을 제공합니다. 필요한 특정 권한에 대한 자세한 내용은 소스 복제본 세트에 필요한 액세스 권한을 참조하세요.
--authenticationDatabase <authenticationDatabase>
--username
에 지정된 사용자가 생성된 소스 복제본 세트의 데이터베이스입니다. 각 사용자를 위한 인증 데이터베이스는 다음과 같습니다.SCRAM 인증 사용자는
admin
데이터베이스입니다.X.509 인증 사용자는
$external
데이터베이스입니다.AWS IAM 인증 사용자는
$external
데이터베이스입니다.
자세히 알아보려면 인증 데이터베이스를 참조하세요.
--authenticationMechanism <authenticationMechanism>
소스 복제본 세트에 대해 사용자를 인증하는 데 사용하는 인증 메커니즘입니다.
값설명RFC 5802 SHA-1 해시 함수를 사용하는 표준 Salted Challenge Response 인증 메커니즘.RFC 5802 표준 SHA-256 해시 함수를 사용하는 솔티드 챌린지 응답 인증 메커니즘.MongoDB TLS/SSL 인증서 인증.GSSAPI (Kerberos)Kerberos를 사용한 외부 인증. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.PLAIN (LDAP SASL)LDAP를 사용한 외부 인증.PLAIN
을 사용해 데이터베이스 내 사용자를 인증할 수도 있습니다.PLAIN
은 비밀번호를 일반 텍스트로 전송합니다. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.MONGODB-IAM버전 0.10.0의 새로운 기능
AWS IAM을 통한 외부 인증.
AWS IAM 자격 증명으로 인증하려면 다음 옵션을 사용하세요.
--username
<AWS access key id>--password
<secret access key id>--awsSessionToken
<AWS session token>
자세히 알아보려면 인증 메커니즘을 참조하세요.
--compressors <snappy,...>
버전 1.5.0의 새로운 기능
활성화할 압축기 목록을 쉼표로 구분합니다. 비활성화하려면 'none'을 사용하세요. 기본값:
snappy,zstd,zlib
--config=<file>
mongomirror
옵션과 값을 저장하는 YAML 파일입니다. 파일에 포함된 옵션으로mongomirror
을(를) 실행하려면 상대 또는 절대 경로를 사용하여 파일을 지정합니다.구성 파일은 다음 옵션을 지원합니다.
password
<password>sslPEMKeyPassword
<password>destinationPassword
<password>uri
<소스 클러스터 URI 연결 문자열>
option: value
구문을 사용하여 구성 파일에서 옵션을 지정합니다. 구성 파일의 옵션 앞에--
을(를) 포함하지 마세요. 구성 파일에 옵션을 설정한 경우mongomirror
명령어 내에서 해당 옵션을 지정할 필요가 없습니다.예시
다음을 포함하는
myconfig.yaml
(이)라는 구성 파일을 만듭니다.password: <passwordForUser> destinationPassword: <passwordForDestinationUser> --password
및--destinationPassword
플래그를 포함하지 않고mongomirror
를 실행할 수 있습니다.mongomirror --host <sourceReplSet> \ --ssl \ --username <atlasAdminUser> \ --destinationUsername <atlasAdminUser> \ --config=myconfig.yaml \ --destination <atlasCluster> \ [Additional options]
--destination <destination>
대상 Atlas 복제본 세트의 호스트 정보입니다.
다음과 같이 복제본 세트 이름과 노드의 시드 목록을 지정합니다.
<RSname>/<host1>:<port1>,<host2>:<port2>,<host3>:<port3>
--destinationAuthenticationDatabase <authentication database>
Atlas 클러스터의 데이터베이스 사용자에 대한 인증 데이터베이스입니다. SCRAM 인증 사용자를 위한 인증 데이터베이스는
admin
데이터베이스입니다.자세한 내용은 데이터베이스 사용자 인증을 참조하세요.
--destinationAuthenticationMechanism <authentication mechanism>
Atlas 클러스터의 데이터베이스 사용자를 위한 인증 메커니즘입니다. Atlas는 데이터베이스 사용자를 위해 다음과 같은 인증 형식을 제공합니다.
값설명RFC 5802 표준 SHA-1 해시 함수를 사용하는 솔티드 챌린지 응답 인증 메커니즘.RFC 5802 표준 SHA-256 해시 함수를 사용하는 솔티드 챌린지 응답 인증 메커니즘.PLAIN (LDAP SASL)LDAP를 사용한 외부 인증.PLAIN
을 사용해 데이터베이스 내 사용자를 인증할 수도 있습니다.PLAIN
은 비밀번호를 일반 텍스트로 전송합니다. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.자세한 내용은 데이터베이스 사용자 인증을 참조하세요.
--destinationUsername <Atlas user name>
데이터베이스를 읽고, 쓰고, 관리할 수 있는 권한이 있는 Atlas 클러스터의 데이터베이스 사용자 이름입니다. Atlas 관리자 역할이 있는 사용자는 적절한 권한을 제공합니다. 필요한 특정 권한에 대한 자세한 내용은 대상 클러스터에 필요한 액세스권한을 참조하세요.
--drop
mongomirror
가 대상 클러스터의 모든 사용자 collection(listCollections
를 사용하여 각 데이터베이스에서 볼 수 있음)을 제거해야 함을 나타내는 플래그입니다. 이 옵션은local.system*
및 oplog와 같은 내부 collection을 제거하지 않습니다.
--includeNamespace <database.collection>
소스 클러스터에서 대상 클러스터에 미러링할 네임스페이스를 지정합니다. 여러 차례 제공될 수 있습니다.
참고
트랜잭션이 여러 네임스페이스에 걸쳐 있는 경우
--includeNamespace
또는--includeDB
에 지정된 네임스페이스에 적용된 쓰기 작업만 대상 클러스터에 적용됩니다.
--includeDB <database>
소스 클러스터에서 대상 클러스터에 미러링할 데이터베이스를 지정합니다. 여러 차례 제공될 수 있습니다.
참고
트랜잭션이 여러 네임스페이스에 걸쳐 있는 경우
--includeNamespace
또는--includeDB
에 지정된 네임스페이스에 적용된 쓰기 작업만 대상 클러스터에 적용됩니다.
--sslPEMKeyFile <file>
소스 복제본 세트에서 클라이언트가 인증서를 제시해야 하는 경우에 해당하는 .pem 파일입니다..pem 파일에는 TLS/SSL 인증서 및 키가 모두 포함되어 있습니다.상대 경로 또는 절대 경로를 사용하여 파일을 지정합니다.
--sslPEMKeyPassword <value>
--sslPEMKeyFile
에 지정된 인증서 키 파일을 해독하기 위한 비밀번호입니다.--sslPEMKeyFile
이(가) 암호화된 경우 사용합니다.
--sslCAFile <file>
소스 복제본 세트에 대한 인증 기관(CA)의 최상위 인증서 체인이 포함된 .pem 파일입니다. 상대 경로 또는 절대 경로를 사용하여 파일을 지정합니다.
--sslAllowInvalidHostnames
더 이상 사용되지 않습니다. 다음을 사용하세요.
tlsInsecure
대신소스 복제본 세트가 제공하는 TLS/SSL 인증서의 유효성 검사를 비활성화합니다. 인증서의 호스트 이름이 지정된 호스트 이름과 일치하지 않는 경우
mongomirror
가 소스 복제본 세트에 연결할 수 있도록 허용합니다.중요
이 옵션은 모든 인증서 유효성 검사를 건너뛰므로 잘못된 인증서를 수락하게 될 수도 있습니다.
--sslAllowInvalidCertificates
더 이상 사용되지 않습니다. 다음을 사용하세요.
tlsInsecure
대신소스 복제본 세트에서 제공하는 인증서에 대한 유효성 검사를 우회합니다.
--allowInvalidCertificates
설정을 사용할 때 MongoDB는 유효하지 않은 인증서 사용에 대한 경고를 로그합니다.중요
이 옵션은 모든 인증서 유효성 검사를 건너뛰므로 잘못된 인증서를 수락하게 될 수도 있습니다.
--tlsInsecure
서버의 인증서 체인 및 호스트 이름에 대한 유효성 검사를 건너뜁니다. 이렇게 하면 잘못된 인증서 및 호스트 이름을 사용할 수 있습니다.
이는 지원이 중단된
sslAllowInvalidHostnames
및sslAllowInvalidCertificates
옵션을 대체합니다.
--gssapiServiceName <name>
소스 복제본 세트가 Kerberos 인증을 사용하는 경우 GSSAPI/Kerberos를 사용하는 서비스의 이름입니다. 서비스가 기본 이름인
mongodb
을(를) 사용하지 않는 경우에만 필요합니다.이 옵션은 MongoDB Enterprise에서만 사용할 수 있습니다.
--gssapiHostName <host>
소스 복제본 세트가 Kerberos 인증을 사용하는 경우 GSSAPI/Kerberos를 사용하는 서비스의 호스트 이름입니다. 시스템의 호스트 이름이 DNS에서 확인한 호스트 이름과 일치하지 않는 경우에만 필요합니다.
이 옵션은 MongoDB Enterprise에서만 사용할 수 있습니다.
--readPreference <read preference>
버전 0.9.0부터 더 이상 사용되지 않음
mongomirror
소스가 복제본 세트 이름이 없는 단일 호스트인 경우를 제외하고는 항상 프라이머리에서 읽습니다. 이 경우 해당 호스트에만 직접 연결됩니다.
--writeConcern <write concern>
버전 0.2.3부터 폐지:
mongomirror
는 항상 다수 쓰기 고려를 사용합니다.
--bypassDocumentValidation
버전 0.2.3부터 폐지:
mongomirror
는 항상 문서 유효성 검사를 우회합니다.
--forceDump
비어 있지 않은 북마크 파일이 존재하더라도
mongomirror
가 모든 소스 컬렉션을 다시 동기화함을 나타내는 플래그입니다.
--oplogPath <path>
버전 0.5.0의 새로운 기능
mongomirror
가 초기 동기화 oplog window를 디스크에 버퍼링하도록 설정합니다. 이 옵션의 값을 지정하면mongomirror
는 소스 oplog 엔트리를 단일 파일로 지정된 디렉토리(<oplogPath>/oplog-mongomirror.bson.sz
)로 스트리밍합니다. 전체 oplog 파일이 대상 클러스터로 재생된 후mongomirror
는 파일을 제거하고 버퍼링 없이 소스 oplog를 테일링하기 시작합니다.기본적으로
mongomirror
는 소스에서 oplog 항목을 스트리밍하여 대상 클러스터에 적용합니다. 그러나 소스 oplog가 전체 초기 동기화 oplog window를 포함할 만큼 크지 않은 경우에는 마이그레이션이 실패할 수 있습니다. 이 오류를 방지하려면 소스 oplog의 크기를 늘리거나 이 옵션을 지정하여 마이그레이션 프로세스 중에 소스 oplog의 공간이 부족해지지 않도록 하면 됩니다.중요
초기
mongomirror
동기화 중에 발생하는 모든 소스 oplog 항목을 수용할 수 있는 충분한 디스크 공간이 있어야 합니다.예를 들어, 소스 oplog가 10GB이고 24시간 동안의 변경 사항을 담고 있으며
mongomirror
의 동기화에 48시간이 걸릴 것으로 예상되는 경우, 지정된 디렉토리에 최소 20GB의 디스크 여유 공간이 있어야 합니다.
--oplogBatchSize <num>
기본값: 10,000
배치로 전송할 oplog 엔트리의 수를 지정합니다.
mongomirror
는 문서 배치 전송 시 최대 16 MB 볼륨 크기를 허용합니다.
--httpStatusPort <num>
지정한 포트에서 HTTP 서버를 시작하도록
mongomirror
에 지시합니다.http://localhost:<num>
에 HTTPGET
요청을 전송하여mongomirror
의 현재 상태를 조회할 수 있습니다.--httpStatusPort
로 실행할 때mongomirror
는 오류가 발생해도 종료되지 않습니다. 대신 오류를 정상적으로 기록하고 HTTP를 통해 지정된 포트에 오류를 보고합니다.mongomirror
HTTP 요청에 대한 응답으로 문서를 반환합니다.다음 예시 구문은 가능한 모든 출력 필드를 나타내며, 실제 응답은 이러한 필드의 하위 집합만 반환할 수 있습니다.필드에 대한 설명과 예상 시기는 다음 표를 참조하세요.{ "stage" : "<stage Name>", "phase" : "<phase Name>", "details" : { "currentTimestamp" : "<BSON timestamp>", "latestTimestamp" : "<BSON timestamp>", "lastWriteOnSourceTimestamp" : "<BSON timestamp>", "<namespace>" : { "complete" : <boolean>, "copiedBytes" : <integer>, "totalBytes" : <integer>, "createIndexes" : <integer> }, ... }, "errorMessage" : "<error message>" } 다음 표에서는 각 필드와 사용 가능한 값에 대해 설명합니다:
필드설명stage
진행 중인 단계의 이름입니다. 가능한 값은 다음과 같습니다.
initializing
mongomirror
시작되었지만 아직 어떤 데이터도 복사하고 있지 않습니다.initial sync
mongomirror
가 소스 배포에 이미 존재하는 문서와 인덱스를 복사하고 있습니다. 또한mongomirror
는 oplog의 항목을 테일링하여 적용합니다.oplog sync
mongomirror
oplog의 엔트리를 테일링하여 적용하고 있습니다.
phase
단계의 이름입니다.stage
의 어떤 부분이 진행 중인지에 대한 보다 구체적인 세부 정보를 제공합니다.details
현재 단계의 진행 상황에 대한 자세한 설명을 제공하는 문서입니다.
initial sync
단계 동안details
의 각 하위 문서는mongomirror
가 복사하는 단일 컬렉션을 나타냅니다.stage
또는phase
에 따라mongomirror
가 응답에 이 필드를 포함하지 않을 수도 있습니다.details.<namespace>
복사되는 컬렉션의 전체 네임스페이스이며
<database>.<collection>
(으)로 표시됩니다.문서 또는 인덱스를 복사할 때
initial sync
단계에서만 표시됩니다.details.<namespace>.complete
mongomirror
가 컬렉션의 모든 문서 또는 인덱스를 대상 Atlas 클러스터로 복사했는지 여부에 따라true
또는false
를 표시합니다.문서 또는 인덱스를 복사할 때
initial sync
단계에서만 표시됩니다.details.<namespace>.copiedBytes
지금까지 복사된 바이트 수입니다. 이는 복사된 현재의 총 문서 수를 보고하는
mongomirror
로그와는 다른 측정값입니다.비인덱스 데이터를 복사할 때
initial sync
단계 중에만 표시됩니다.details.<namespace>.totalBytes
collection의 총 크기(바이트)입니다.
비인덱스 데이터를 복사할 때
initial sync
단계 중에만 표시됩니다.details.<namespace>.createIndexes
생성되었거나 생성될 인덱스의 수입니다.
인덱스를 복사할 때
initial sync
단계에서만 표시됩니다.details.currentTimestamp
가장 최근에 처리된 oplog 엔트리의 BSON 타임스탬프 값입니다.
mongomirror
는 10초마다 이 데이터 포인트를 새로 고침합니다. 따라서mongomirror
는 보고된 시간보다 약간 더 앞설 수 있습니다.oplog 엔트리를 테일링하거나 적용할 때
initial sync
또는oplog sync
단계 동안에만 표시됩니다.details.latestTimestamp
initial sync
단계에서 이는 초기 동기화 중에 초기 데이터가 복사된 후 사용할 수 있는 최신 oplog 항목의 BSON 타임스탬프 값을 나타냅니다.oplog sync
단계에서는 소스 배포에서 사용할 수 있는 최신 oplog 항목의 BSON 타임스탬프 값을 나타냅니다.oplog 엔트리를 테일링하거나 적용할 때
initial sync
또는oplog sync
단계 동안에만 표시됩니다.details
.lastWriteOnSourceTimestamp
작업 없음 상태가 아닌 가장 최근 oplog 항목의 BSON 타임스탬프 값입니다. 작업 없음 엔트리는 일반적으로 데이터베이스에서 데이터를 쓰거나 편집하지 않는 하트비트와 같은 시스템 수준 작업입니다.
mongomirror
는 이 값을 10초마다 새로 고칩니다. 데이터베이스의 데이터를 쓰거나 편집하는 작업은 다음 새로 고침이 발생할 때까지 보고되지 않을 수 있습니다.lastWriteOnSourceTimestamp
필드는 마이그레이션 중에 전환하기 전에 소스 배포에서 새로운 쓰기가 발생하지 않음을 확인하는 데 유용합니다.errorMessage
mongomirror
에서 발생한 오류를 설명하는 문자열입니다.
--collStatsThreshold <num>
버전 1.5.0의 새로운 기능
collStats가 비활성화되기 전에 존재할 수 있는 최대 컬렉션 수입니다. CollStats를 항상 실행하려면
-1
을 사용하고 실행하지 않으려면0
을 사용하세요. 기본값은-1
입니다.
예시
복제본 세트를 Atlas로 마이그레이션합니다(소스에서 인증 없음)
다음 예에서는 인증이 필요하지 않은 소스 복제본 세트에서 마이그레이션합니다.
mongomirror --host sourceRS/source-host1:27017,source-host2:27017 \ --destination myAtlasRS/atlas-host1:27017,atlas-host2:27017 \ --destinationUsername myAtlasUser \ --destinationPassword myAtlasPwd
인증이 필요하지 않은 소스 복제본 세트에서 마이그레이션하려면 다음 옵션을 사용하여 mongomirror
을(를) 실행합니다.
--host
<sourceReplSet/seed list of members>--destination
<Atlas 클러스터>--destinationUsername
<atlasUser>--destinationPassword
<atlasPassword>
대상의 경우 다음 형식으로 복제본 세트 이름과 그 뒤에 노드의 시드 목록을 지정합니다.
<replicaSetName>/<host1>:<port1>,<host2>:<port2>,<host3>:<port3>,...
지정된 사용자는 Atlas에서 Atlas admin
역할을 가져야 합니다.
복제본 세트 마이그레이션: 소스 복제본 세트가 SCRAM-SHA1 인증을 사용함
다음 예에서는 SCRAM-SHA1 인증을 사용하는 소스 복제본 세트를 Atlas로 마이그레이션합니다.
mongomirror --host sourceRS/source-host1:27017,source-host2:27017,source-host3:27017 \ --username mySourceUser \ --password mySourcePassword \ --authenticationDatabase admin \ --destination myAtlasRS/atlas-host1:27017,atlas-host2:27017 \ --destinationUsername myAtlasUser \ --destinationPassword atlasPassw0Rd
SCRAM-SHA1 인증을 사용하는 소스 복제본 세트에서 마이그레이션하려면 다음 옵션을 사용하여 mongomirror
을(를) 실행합니다.
--host
<sourceReplSet/seed list of members>--username
<sourceUser>--password
<sourcePassword>--authenticationDatabase
<sourceDatabase>--destination
<Atlas 클러스터>--destinationUsername
<atlasUser>--destinationPassword
<atlasPassword>
소스 복제본 세트 사용자는 소스 클러스터에 필요한 액세스 권한이 있어야 합니다. backup
역할은 적절한 권한을 제공합니다.
대상의 경우 다음 형식으로 복제본 세트 이름과 그 뒤에 노드의 시드 목록을 지정합니다.
<replicaSetName>/<replicaMember>,<replicaMember>,<replicaMember>,...
지정된 사용자는 Atlas에 Atlas admin
이(가) 있어야 합니다.
복제본 세트 마이그레이션: 소스 복제 세트에 X.509 클라이언트 인증 필요
다음 예에서는 X.509 인증을 사용하는 소스 복제본 세트에서 마이그레이션합니다.
mongomirror --host sourceRS/source-host1:27017,source-host2:27017,source-host3:27017 \ --username "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry" \ --authenticationDatabase '$external' \ --authenticationMechanism MONGODB-X509 \ --ssl \ --sslPEMKeyFile <path-to-my-client-certificate.pem> \ --sslCAFile <path-to-my-certificate-authority-certificate.pem> \ --destination myAtlasRS/atlas-host1:27017,atlas-host2:27017 \ --destinationUsername myAtlasUser \ --destinationPassword atlasPassw0Rd
X.509 인증을 사용하는 소스 복제본 세트에서 마이그레이션하려면 다음 옵션과 함께 mongomirror
를 실행합니다.
--host
<sourceReplSet/seed list of members>--username
<subject from the client certificate>--authenticationMechanism
MONGODB-X509
--authenticationDatabase
'$external'
--sslPEMKeyFile
<path-to-my-client-certificate.pem>--sslCAFile
<path to root CA PEM file>--destination
<Atlas 클러스터>--destinationUsername
<atlasUser>--destinationPassword
<atlasPassword>
소스 복제본 세트 사용자는 소스 클러스터에 필요한 액세스 권한이 있어야 합니다. backup
역할은 적절한 권한을 제공합니다.
대상의 경우 다음 형식으로 복제본 세트 이름과 그 뒤에 노드의 시드 목록을 지정합니다.
<replicaSetName>/<replicaMember>,<replicaMember>,<replicaMember>,...
지정된 사용자는 Atlas에 Atlas admin
이(가) 있어야 합니다.
복제본 세트 마이그레이션: 소스 복제본 세트에 Kerberos/GSSAPI 인증 필요
다음 예에서는 Kerberos 인증을 사용하는 소스 복제본 세트에서 마이그레이션합니다.
mongomirror --host sourceRS/source-host1:27017,source-host2:27017,source-host3:27017 \ --username sourceUser/administrator@MYREALM.COM \ --authenticationDatabase '$external' \ --authenticationMechanism GSSAPI \ --destination myAtlasRS/atlas-host1:27017,atlas-host2:27017,atlas-host3:27017 \ --destinationUsername atlasUser \ --destinationPassword atlasPass
Kerberos 인증을 사용하는 소스 복제본 세트에서 마이그레이션하려면 다음 옵션을 사용하여 mongomirror
를 실행합니다.
--host
<sourceReplSet/seed list of members>--username
<Kerberos user principal>--authenticationDatabase
'$external'
--authenticationMechanism
GSSAPI
--destination
<Atlas 클러스터>--destinationUsername
<atlasUser>--destinationPassword
<atlasPassword>
소스 복제본 세트 사용자는 소스 클러스터에 필요한 액세스 권한이 있어야 합니다. backup
역할은 적절한 권한을 제공합니다.
대상의 경우 다음 형식으로 복제본 세트 이름과 그 뒤에 노드의 시드 목록을 지정합니다.
<replicaSetName>/<replicaMember>,<replicaMember>,<replicaMember>,...
지정된 사용자는 Atlas에 Atlas admin
이(가) 있어야 합니다.
mongomirror
출력을 파일에 저장
나중에 검사하고 디버깅하기 위해 mongomirror
절차의 출력 로그를 파일에 저장할 수 있습니다. 다음 형식을 사용하여 mongomirror.log
파일에 출력을 저장합니다.
mongomirror <args> 2>&1 | tee -a mongomirror.log