mongosqld
이 페이지의 내용
- 설명
- 사용법
- 스키마 파일로
mongosqld
시작하기 - 스키마 데이터베이스로
mongosqld
시작하기 - 지정된 네임스페이스로
mongosqld
시작하기 - MongoDB 사용자 권한
- 기본 최소 TLS 버전
- 명령줄 옵션
- 주요 옵션
- 스키마 옵션
- 로그 옵션
- MongoDB TLS/SSL 옵션
- 클라이언트 TLS/SSL 옵션
- 서비스 옵션
- Kerberos Options
- 소켓 옵션
- 매개변수 옵션 설정
- 구성 파일
- 로깅 옵션
- 스키마 옵션
- 데이터 샘플링 옵션
- 런타임 옵션
- 네트워크 옵션
- 보안 옵션
- MongoDB 호스트 옵션
- 프로세스 관리 옵션
- 매개변수 옵션 설정
- 외부 구성 값 로드
- 구성 파일 예시
- 사용 예시
mongosqld
스키마 파일- 샘플 컬렉션 지정
- 샘플로 사용할 여러 컬렉션 지정
- 데이터베이스 및 컬렉션을 샘플링에서 제외하기
- 컬렉션의 모든 문서 샘플
- 스키마를 유지할 데이터베이스 지정
- 데이터 리샘플링 간격 지정
mongosqld
인증이 활성화된 상태mongosqld
구성 파일로- Atlas와 함께 사용
- 샘플링 모드 레퍼런스 차트
- 잘못된 구성
설명
참고
BI용 MongoDB 커넥터 및 관련 유틸리티는 현재 지원되는 모든 MongoDB 서버 버전과 호환됩니다.
mongosqld
SQL 클라이언트에서 들어오는 요청을 수락하고 해당 요청을 mongod
또는 mongos
인스턴스로 프록시합니다.
사용법
버전 2.3에 새로 추가됨:
--schema
옵션으로 .drdl 형식의 스키마 파일을 이용하거나 MongoDB 인스턴스의 데이터를 샘플링하여 스키마를 생성함으로써 mongosqld
를 시작할 수 있습니다.
--sampleNamespaces
옵션을 사용하여 데이터를 샘플링할 네임스페이스를 하나 이상 지정할 수 있습니다. 네임스페이스나 스키마 파일을 지정하지 않으면 mongosqld
는 admin
및 local
데이터베이스를 제외하고 대상 MongoDB 인스턴스의 모든 데이터베이스에서 데이터를 샘플링합니다.
--schemaSource
옵션을 사용하여 스키마 정보를 저장할 데이터베이스를 지정할 수 있습니다. 그렇지 않으면 mongosqld
이 스키마를 메모리에 보관합니다.
스키마 파일로 mongosqld
시작
--schema
옵션을 사용하여 mongosqld
를 시작할 때 스키마 파일을 지정합니다.
mongosqld --schema /path/to/schema-file.drdl
mongodrdl
를 사용하여 MongoDB 인스턴스에서 스키마 파일을 만듭니다.
스키마 데이터베이스로 mongosqld
시작
--schemaSource
옵션을 사용하여 스키마 정보를 저장할 데이터베이스를 지정합니다.
mongosqld --schemaSource sampleDb
지정된 네임스페이스로 mongosqld
시작
--sampleNamespaces
옵션을 사용하여 스키마를 만들기 위해 데이터를 샘플링할 mongosqld
데이터베이스 및 컬렉션을 지정합니다.
mongosqld --sampleNamespaces contacts.addresses
아래의 추가 사용 예시를 참조하세요.
MongoDB 사용자 권한
MongoDB 인스턴스가 인증을 사용하는 경우 BI Connector 인스턴스도 인증을 사용해야 합니다. mongosqld
프로그램을 통해 MongoDB에 연결하는 사용자에게는 데이터를 샘플링하려는 모든 네임스페이스에서 읽을 수 있는 권한이 있어야 합니다.
BI Connector의 MongoDB 사용자 권한에 대한 자세한 내용은 캐시된 샘플링에 대한 사용자 권한을 참조하세요.
MongoDB 사용자 및 역할에 대한 자세한 내용은 역할 기반 액세스 제어를 참조하세요.
기본 최소 TLS 버전
버전 2.6에 새로 추가됨
모든 클라이언트 연결에 대한 기본 최소 TLS 버전은 1.1입니다. 여기에는 mongosqld
에 대한 수신 클라이언트 연결과 MongoDB로의 발신 연결이 포함됩니다.
--minimumTLSVersion
옵션을 사용하여 들어오는 연결에 대해 이 설정을 조정하고 --mongo-minimumTLSVersion
옵션을 사용하여 나가는 연결에 대해 이 설정을 조정할 수 있습니다.
명령줄 옵션
주요 옵션
--help
옵션 및
mongosqld
의 사용에 대한 정보를 반환합니다.
--version
mongosqld
릴리스 번호를 반환합니다.
--mongo-uri <uri>
기본값: mongodb://localhost:27017
연결할 MongoDB 연결 문자열을 지정합니다.
--mongo-uri
옵션은 연결 string 내에서 다음 옵션을 지원합니다.이러한 URI 옵션에 대한 자세한 내용은 읽기 설정 옵션 및 복제본 세트 옵션을 참조하세요.
위 목록에 포함되지 않은 Mongo URI에 설정된 옵션의 경우 동등한
mongosqld
옵션을 사용하세요.mongosqld
옵션의 전체 목록은 명령줄 옵션을 참조합니다.참고
자동 복제본 세트 서버 검색 논리를 비활성화하고 지정된 서버에 대한 연결을 강제 실행하려면
connect=direct
옵션을 사용합니다.mongosqld --mongo-uri "mongodb://<hostname>:<port>/?connect=direct"
--mongo-versionCompatibility <version-number>
mongosqld
가 지정된 MongoDB 버전에서 지원하는 기능만 사용하도록 제한합니다. 멤버가 각자 다른 MongoDB 버전을 사용하는 복제본 세트와 함께 사용하거나 MongoDB의 롤링 업그레이드를 수행할 때만 필요합니다. MongoDB 버전 3.2 이상만 지원합니다.예를 들어 복제본 세트에 MongoDB 버전 3.2를 실행하는 멤버와 MongoDB 버전 3.4를 실행하는 다른 멤버가 있는 경우 다음 옵션을 설정하여
mongosqld
가 MongoDB 버전 3.2에서 지원하는 기능만 사용하도록 제한합니다.mongosqld --mongo-versionCompatibility 3.2
--maxVarcharLength <length>
버전 2.2에 추가.
모든 varchar 필드의 최대 길이를 문자 단위로 지정합니다.
mongosqld
에서 최대 길이보다 긴 string 을 발견하면mongosqld
에서 최대 길이로 자르고 경고를 기록합니다.
--mongo-username <username>, -u <username>
버전 2.3에 추가.
스키마 검색에 사용할 인증 사용자 이름을 지정합니다.
--auth
가 활성화된 경우에만 필요합니다.--mongo-username
으로 지정된 사용자는listDatabases
권한을 가진 유효한 MongoDB 사용자여야 합니다. mongosqld 사용자 권한을 참조하세요.
--mongo-password <password>, -p <password>
버전 2.3에 추가.
스키마 검색에 사용할 인증 암호를 지정합니다.
--auth
가 활성화된 경우에만 필요합니다.--mongo-username
과 함께 사용하세요.
--mongo-authenticationSource <auth-db-name>
기본값: admin
버전 2.3에 추가.
스키마 검색 사용자의 자격 증명을 보관할 데이터베이스를 지정합니다.
--auth
가 활성화된 경우에만 사용할 수 있습니다. 자격 증명 옵션--mongo-username
및--mongo-password
와 함께 사용하세요.
--mongo-authenticationMechanism <authMechanism>
기본값: SCRAM-SHA-1
버전 2.3에 추가.
스키마 검색에 사용할 인증 메커니즘을 지정합니다.
--auth
가 활성화된 경우에만 사용할 수 있습니다. 자격 증명 옵션--mongo-username
및--mongo-password
와 함께 사용하세요.값설명RFC 5802 SHA1 해시 함수를 사용하는 표준 Salted Challenge Response 인증 메커니즘.버전 2.6에 새로 추가됨 RFC 7677 표준 SHA2 해시 함수를 사용하는 솔티드 챌린지 응답 인증 메커니즘입니다.PLAIN (LDAP SASL)LDAP를 사용한 외부 인증.PLAIN
을 사용해 데이터베이스 내 사용자를 인증할 수도 있습니다.PLAIN
은 비밀번호를 일반 텍스트로 전송합니다. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.GSSAPI (Kerberos)Kerberos를 사용한 외부 인증. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.
스키마 옵션
--schemaDirectory <directoryname>
버전 2.2부터 더 이상 사용되지 않습니다.
대신
--schema
를 사용하세요.
--sampleNamespaces <db.collection>
버전 2.5에 추가.
--sampleNamespaces
스키마를 생성하는 데이터 샘플링 프로세스에 포함하거나 제외할 데이터베이스 및 컬렉션을 지정합니다. 단일 데이터베이스에서 여러 컬렉션을 지정하거나 여러 데이터베이스에서 여러 컬렉션을 지정할 수도 있습니다. 아래 예시 를 참조하세요.--sampleNamespaces
옵션 또는--schema
옵션을 사용하지 않는 경우,mongosqld
는admin
및local
데이터베이스를 제외한 사용 가능한 모든 MongoDB 데이터베이스 및 컬렉션에서 데이터를 샘플링합니다.
--schemaMode <[custom|auto]>
기본값:
custom
버전 2.11에 새로 추가됨.
mongosqld
의 샘플링 모드를 구성합니다.--schemaSource
옵션과 함께 사용해야 합니다. 다음 값은 샘플링 동작을 결정합니다.값--schemaMode
행동custom
mongosqld
는--schemaSource
옵션으로 지정된 MongoDB 데이터베이스에서 저장된 스키마를 읽습니다.auto
mongosqld
는 스키마를 샘플링하고--schemaSource
옵션으로 지정된 MongoDB 데이터베이스에 스키마 데이터를 기록합니다.샘플 모드 구성에 대한 자세한 내용은 샘플링 모드 레퍼런스 차트를 참조하세요.
중요
mongosqld
에서authentication
(이)가 활성화된 경우 인증된 사용자에게는 지정된--schemaSource
데이터베이스에 대한 쓰기 권한이 있어야 합니다.readWrite
역할에 대한 자세한 내용은 기본 제공 역할을 참조하세요.
--schemaSource <db-name>
버전 2.11에 새로 추가됨.
--schemaMode
이(가) 설정될 때마다 필요합니다. 스키마 정보가 저장되는 데이터베이스를 지정합니다.참고
--schema
,--schemaMode
,--schemaSource
옵션을 지정하지 않으면mongosqld
메모리에 스키마를 보관합니다.샘플링 모드에 대해 자세히 알아보려면 샘플링 모드 레퍼런스 차트를 참조하세요.
--schemaName <db-name>
기본값:
defaultSchema
버전 2.11에 새로 추가됨.
선택 사항입니다.
--schemaSource
데이터베이스에서 로드하거나 데이터베이스에 쓸 스키마의 이름입니다. 스키마 이름을 지정하면--schemaSource
데이터베이스에 여러 스키마를 저장할 수 있습니다. 동작은--schemaMode
값에 따라 달라집니다.--schemaName
행동custom
--schemaSource
옵션으로 지정된 데이터베이스에서 로드할 스키마의 이름입니다.auto
BI Connector가 시작 시 스키마를 샘플링한 후--schemaSource
데이터베이스에 쓸 스키마의 이름입니다.중요
사용자 지정 스키마를 업로드하는 경우
name-schema
를 사용하여 지정된 이름으로 저장한 후--schemaName
을 사용하여mongosqld
에 해당 이름을 지정해야 합니다. 스키마를 업로드할 때 스키마 이름을 저장하지 않으면 스키마 이름은 기본값인defaultSchema
로 설정됩니다. 스키마 이름이 존재하지 않으면mongosqld
에서 "MongoDB 스키마를 아직 사용할 수 없습니다"와 유사한 오류가 발생합니다. 스키마 초기화 오류: 해당 이름의 스키마를 찾을 수 없습니다.'샘플링 모드에 대해 자세히 알아보려면 샘플링 모드 레퍼런스 차트를 참조하세요.
--sampleSize <number>
기본값: 1000
버전 2.3에 추가.
스키마 정보를 수집할 때 샘플링할 네임스페이스당 문서 수입니다.
--sampleSize
를0
으로 설정하여 스키마를 구축할 때 지정된 네임스페이스에 있는 모든 문서를 포함시킵니다. 네임스페이스를 지정하지 않은 경우--sampleSize
를0
으로 설정하면mongosqld
에서 스키마를 작성할 때 모든 데이터베이스의 모든 문서(local
,admin
및system
제외)를 고려합니다. 아래 예시를 참조하세요.
--schemaRefreshIntervalSecs <number>
기본값: 0
버전 2.11에서 변경:
--sampleRefreshIntervalSecs
의 이름을--schemaRefreshIntervalSecs
으로 변경mongosqld
가 스키마를 생성하기 위해 데이터를 다시 샘플링하는 시간(초)입니다. 기본값은0
으로, 이는 초기 샘플링 후에는 자동 리샘플링이 발생하지 않음을 의미합니다. 반드시 양의 정수를 값으로 지정해야 합니다.스키마에 대한 일회성 업데이트를 강제 실행하려면 SQL 클라이언트에서 FLUSH SAMPLE 명령을 사용합니다.
--uuidSubtype3Encoding <old|csharp|java>, -b <old|csharp|java>
UUID 바이너리 하위 유형3을 생성하기 위한 인코딩을 지정합니다. 다음 값 중에서 선택합니다.
old
: 이전 BSON 바이너리 하위 유형 표현csharp
: C#/.NET 레거시 UUID 표현java
: Java 레거시 UUID 표현
--prejoin
버전 2.6에 새로 추가됨
배열 및 비배열 데이터를 단일 테이블로 결합하기 위한 스키마 옵션입니다.
배열이 포함된 MongoDB 문서는 일반적으로 배열 데이터용 테이블과 비배열 데이터용 테이블로 분리하여 테이블 형식으로 변환합니다. 다음 문서와 함께 이름이
test
인 MongoDB 컬렉션을 예시로 들어 보겠습니다{ "_id" : 1, "a" : 3, "b" : [ "orange", "apple", "pear" ] } 위 컬렉션은 테이블 형식의 다음 두 테이블로 변환됩니다.
mysql> select * from test; +------+------+ | _id | a | +------+------+ | 1 | 3 | +------+------+ mysql> select * from test_b; +------+--------+-------+ | _id | b | b_idx | +------+--------+-------+ | 1 | orange | 0 | | 1 | apple | 1 | | 1 | pear | 2 | +------+--------+-------+ --prejoin
플래그를 사용하면a
열의 데이터가test_b
테이블에 포함됩니다.mysql> select * from test_b; +------+------+--------+-------+ | _id | a | b | b_idx | +------+------+--------+-------+ | 1 | 3 | orange | 0 | | 1 | 3 | apple | 1 | | 1 | 3 | pear | 2 | +------+------+--------+-------+
로그 옵션
--logAppend
--logPath
로 지정된 기존 로그 파일에 새 로깅 출력을 추가합니다.--logRotate
이 필요합니다.
--logRotate reopen | rename
기본값: 이름 바꾸기
로그를 순환할지 여부와 로그를 순환하는 방법을 지정합니다.
이 옵션을 설정하면 BI용 MongoDB Connector에
FLUSH LOGS
명령을 실행하거나mongosqld
를 다시 시작할 때 로그가 회전합니다.--logRotate
를rename
으로 설정한 경우:- 기존 로그 파일이 닫힙니다. RFC3339 형식의 타임스탬프가 닫힌 로그 파일에 추가됩니다. 새 로그 파일이 생성됩니다.
--logRotate
를reopen
으로 설정한 경우:- 기존 로그 파일이 닫혔다가 다시 열립니다.
참고
UNIX 및 macOS 플랫폼에서는
SIGUSR1
신호를 실행하여mongosqld
프로세스를 다시 시작하고 로그를 순환시킵니다.
--usageLogInterval <number>
기본값: 60
버전 2.14에 추가.
사용량 통계가 로그에 기록되는 간격(초)입니다. 사용량 로깅을 비활성화하려면
0
으로 설정합니다.참고
Windows에서는 사용량 로깅이 활성화되어 있지 않습니다.
--verbose, -v
mongosqld
가 더 자세한 로그 출력을 제공하도록 지정합니다.다음 표에는 각 로그 수준에서 제공되는 정보가 설명되어 있습니다.
MongoDB TLS/SSL 옵션
--mongo-ssl
Default(기본값): False
mongosqld
가 MongoDB 인스턴스에 연결할 때 TLS/SSL을 사용하도록 지시합니다.
--mongo-sslPEMKeyFile <filename>
MongoDB에 연결할 때 사용할
mongosqld
의 TLS/SSL 인증서와 키가 모두 포함된.pem
파일을 지정합니다. 상대 경로 또는 절대 경로를 사용하여.pem
파일의 이름을 지정할 수 있습니다.이 옵션은
--mongo-ssl
옵션을 사용하여mongod
또는mongos
에 연결할 때CAFile
이net.ssl.allowConnectionsWithoutCertificates
없이 활성화된 경우 필수입니다.
--mongo-sslAllowInvalidHostnames
mongosqld
가 호스트 이름이 TLS/SSL 인증서의 호스트 이름과 다른 MongoDB 서버에 연결할 수 있도록 허용합니다.
--mongo-sslAllowInvalidCertificates
MongoDB 인스턴스가 잘못된 서버 SSL/TLS 인증서를 제시하도록 허용합니다.
allowInvalidCertificates
설정을 사용하면 MongoDB는 유효하지 않은 인증서 사용을 경고로 기록합니다.
클라이언트 TLS/SSL 옵션
--sslMode <mode>
기본값: 사용 안 함
버전 2.3에 추가.
mongosqld에 대한 연결을 위해 TLS/SSL을 활성화하거나 비활성화합니다.
sslMode
옵션의 인수는 다음 중 하나입니다.
--sslPEMKeyFile <filename>
TLS/SSL 인증서와 MySQL 클라이언트용 키를 모두 포함하는
.pem
파일을 지정합니다. 상대 경로 또는 절대 경로를 사용해.pem
파일의 이름을 지정합니다.
--sslPEMKeyPassword <password>
--sslPEMKeyFile
에서 지정한 개인 키를 해독하는 데 사용되는 비밀번호를 지정합니다.
--sslAllowInvalidHostnames
SQL 클라이언트가 TLS/SSL 인증서의 호스트 이름과 다른 호스트 이름을 가진
mongosqld
에 연결할 수 있도록 허용합니다.
--sslCAFile <filename>
인증 기관의 루트 인증서 체인이 포함된
mongosqld
.pem
파일을 지정합니다. 상대 경로 또는 절대 경로를 사용하여.pem
파일의 이름을 지정합니다.
--sslCRLFile <filename>
인증서 해지 목록이 포함된
mongosqld
.pem
파일을 지정합니다.
--auth
수신 클라이언트 요청에 대한 인증이 필요합니다.
중요
버전 2.4.0에서 변경되었습니다.
인증이 활성화된 경우, 관리자 자격 증명은
--mongo-username
및--mongo-password
옵션 또는mongodb.net.auth.username
및mongodb.net.auth.password
설정과 함께 구성 파일에 제공되어야 합니다.mongosqld
관리자 자격 증명을 통해 샘플링된 네임스페이스에 관한 메타데이터를 수집하고, 연결 클라이언트의 자격 증명을 사용하여 데이터를 클라이언트가 읽을 권한이 있는 범위로 제한합니다. 관리 사용자에게 필요한 권한에 대한 자세한 내용은 캐시된 샘플링에 대한 사용자 권한에서 확인합니다.
--defaultAuthSource <authSource>
기본값: admin
기본 MongoDB 인증 소스를 지정합니다. 이 값을 설정하여
mongosqld
가 MongoDB 데이터베이스로 인증할 때 사용하는 기본 소스를 지정합니다.GSSAPI
및PLAIN
인증 메커니즘은$external
소스를 사용하고,SCRAM-SHA-1
및SCRAM-SHA-256
인증 메커니즘은 MongoDB 데이터베이스를 소스로 사용합니다.이 옵션에 값을 지정하지 않으면 기본적으로 MongoDB
admin
데이터베이스가 사용됩니다.$external
인증 소스는 시스템 사용자에 대한 레퍼런스를 MongoDB$external
데이터베이스에 저장하지만 자격 증명은 LDAP 서버와 같은 외부의 비MongoDB 시스템에 저장됩니다.기본값을 사용하는 모든 연결은 MySQL 또는 Tableau 사용자 이름에서
source
매개 변수를 생략할 수 있습니다.
--defaultAuthMechanism <authMechanism>
기본값: SCRAM-SHA-1
기본 인증 메커니즘을 지정합니다. 이 값을 설정하여
mongosqld
에 연결하기 위한 기본 메커니즘을 지정합니다. 이 지정된 기본값을 사용하는 모든 연결은 MySQL 또는 Tableau 사용자 이름에서mechanism
값을 생략할 수 있습니다.값설명RFC 5802 표준 SHA1 해시 함수를 사용하는 솔티드 챌린지 응답 인증 메커니즘입니다.버전 2.6에 새로 추가됨 RFC 7677 표준 SHA2 해시 함수를 사용하는 솔티드 챌린지 응답 인증 메커니즘입니다.PLAIN (LDAP SASL)LDAP를 사용한 외부 인증.PLAIN
을 사용해 데이터베이스 내 사용자를 인증할 수도 있습니다.PLAIN
은 비밀번호를 일반 텍스트로 전송합니다. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.GSSAPI (Kerberos)Kerberos를 사용한 외부 인증. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.
--minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>
기본값: TLS1_1
클라이언트가
mongosqld
에 연결하는 데 필요한 최소 TLS 버전을 지정합니다. 기본값TLS1_1
은 TLS 버전 1.1에 해당합니다.
서비스 옵션
--serviceName <service-name>
mongosqld
를 실행하는 시스템 서비스의 이름입니다.
--serviceDisplayName <service-name>
mongosqld
를 실행하는 시스템 서비스의 이름을 표시합니다.
--serviceDescription <service-name>
mongosqld
를 실행하는 시스템 서비스에 대한 설명입니다.
Kerberos Options
--gssapiHostname <hostname>
기본값:
net.bindIp
의 첫 번째 IP 주소입니다.버전 2.5에 추가.
Kerberos 인증을 구성하기 위한 목적의 FQDN입니다. Kerberos 호스트 이름은 Kerberos 구성에 대해서만 호스트 이름을 재정의합니다.
--gssapiServiceName <service-name>
기본값: mongosql
버전 2.5에 추가.
Kerberos를 사용하는 서비스의 등록 이름입니다. 이 옵션을 사용하면 인스턴스별로 Kerberos SPN의 기본 Kerberos 서비스 이름 구성 요소를 재정의할 수 있습니다. 지정하지 않으면 기본값이 사용됩니다.
--mongo-gssapiServiceName <service-name>
기본값: mongodb
버전 2.5에 추가.
Kerberized MongoDB 인스턴스에 연결할 때 Kerberos SPN을 설정합니다. 이 값은 MongoDB 인스턴스에 설정된 서비스 이름과 일치해야 합니다.
--gssapiConstrainedDelegation
Default(기본값): False
버전 2.11에 새로 추가됨.
Kerberos 인증에 프록시 자격 증명을 사용하여 제한된 위임을 지원합니다.
mongosqld
서비스 자격 증명은 클라이언트 키탭과 서비스 키탭에 있어야 합니다. Kerberos 구성에 대한 자세한 내용은 BI 커넥터용 Kerberos 구성을 참조하세요.
소켓 옵션
--unixSocketPrefix <path>
기본값/tmp
mongosqld
유닉스 도메인 소켓의 대체 디렉토리를 지정합니다.mongosqld
는 이 경로 아래에mysql.sock
소켓 파일을 생성합니다.--unixSocketPrefix
를 지정하지 않으면 소켓은/tmp/mysql.sock
에 존재합니다.
매개변수 옵션 설정
--setParameter <parameter>
- Parameter유형해당하는 항목:
"polymorphic_type_conversion_mode=<value>"
문자열"type_conversion_mode=<value>"
문자열데이터 유형을
mongosqld
변환하는 데 사용하는 모드를 지정합니다. BI Connector는 기본적으로 자체 모드(mongosql
)를 사용합니다. 허용되는 값은mongosql
및mysql
입니다. 이러한 값에 대해 자세히 알아보려면 시스템 변수를 참조하세요.다음 예제는
mongosqld
를 시작하고--setParameter
옵션을 사용하여 타입 변환 모드를 지정합니다mongosqld --setParameter "type_conversion_mode=mongosql"
구성 파일
YAML 구성 파일을 사용하여 mongosqld
를 구성할 수 있습니다. 이 파일에는 다음 섹션에 나열된 설정이 포함될 수 있습니다.
참고
구성 파일의 확장 지시문을 사용하여 외부에서 제공되는 구성 값을 로드할 수 있습니다. 확장 지시문은 보안 인증서와 비밀번호같은 기밀 정보를 가립니다.
확장 지시문 사용에 대한 자세한 내용은 MongoDB 매뉴얼의 외부 소스 구성 파일 값 을 참조하세요.
로깅 옵션
systemLog: logAppend: <boolean> logRotate: "rename"|"reopen" path: <string> quiet: <boolean> verbosity: <integer>
이름 | 유형 | 해당하는 항목: |
---|---|---|
부울 | ||
문자열 | ||
문자열 | ||
부울 | ||
integer |
스키마 옵션
schema: path: <string> maxVarcharLength: <integer>
이름 | 유형 | 해당하는 항목: |
---|---|---|
문자열 | ||
integer |
데이터 샘플링 옵션
schema: sample: size: <integer> prejoin: <boolean> namespaces: <array of strings> uuidSubtype3Encoding: <[old|csharp|java]> stored: mode: <[custom|auto]> source: <string> name: <db-name> refreshIntervalSecs: <integer>
이름 | 유형 | 해당하는 항목: |
---|---|---|
문자열 | ||
문자열 | ||
문자열 | ||
integer | ||
부울 | ||
문자열 또는 문자열 배열 | ||
integer | ||
문자열 |
런타임 옵션
runtime: memory: maxPerStage: <integer> maxPerServer: <integer> maxPerConnection: <integer>
중요
BI Connector는 mongosqld
프로세스가 MongoDB로 쿼리를 전송하는 데 사용할 수 있는 시스템 메모리의 양을 제어하기 위해 다음과 같은 옵션을 제공합니다. 이러한 제한에는 BI Connector가 데이터 구조 오버헤드 등 다른 목적으로 사용하는 메모리가 포함되지 않으므로 BI Connector가 사용하는 총 메모리 양은 해당 옵션에서 제한한 수치보다 많아집니다.
runtime.memory.maxPerServer
유형: integer
Default: unlimited
버전 2.5에 추가.
mongosqld
프로세스가 사용할 수 있는 최대 메모리 양을 바이트 단위로 지정합니다.
runtime.memory.maxPerConnection
유형: integer
Default: unlimited
버전 2.5에 추가.
mongosqld
클라이언트 연결에서 사용할 수 있는 최대 메모리 양을 바이트 단위로 지정합니다.
네트워크 옵션
net: bindIp: <string> port: <integer> unixDomainSocket: enabled: <boolean> pathPrefix: <string> filePermissions: <string> ssl: mode: <string> allowInvalidCertificates: <boolean> PEMKeyFile: <string> PEMKeyPassword: <string> CAFile: <string>
이름 | 유형 | 해당하는 항목: | |
---|---|---|---|
문자열 | 호스트 이름 구성 요소 버전 2.2으로 변경됨: 여러 IP 주소에 바인딩하려면 쉼표로 구분된 값의 목록을 입력합니다. 예를 들면 다음과 같습니다.
| ||
integer | 포트 구성 요소 --addr | ||
부울 | 역방향 --noUnixSocket | ||
문자열 | |||
문자열 | |||
부울 | |||
문자열 | |||
문자열 | |||
문자열 | |||
문자열 | |||
문자열 |
보안 옵션
security: enabled: <boolean> defaultMechanism: <string> defaultSource: <string> gssapi: hostname: <string> serviceName: <string>
이름 | 유형 | 해당하는 항목: |
---|---|---|
부울 | ||
문자열 | ||
문자열 | ||
문자열 | ||
문자열 | ||
문자열 |
MongoDB 호스트 옵션
mongodb: versionCompatibility: <string> net: uri: <string> ssl: enabled: <boolean> allowInvalidCertificates: <boolean> allowInvalidHostnames: <boolean> PEMKeyFile: <string> PEMKeyPassword: <string> CAFile: <string> CRLFile: <string> FIPSMode: <boolean> auth: username: <username> password: <password> source: <auth-db-name> mechanism: <auth-mechanism> gssapiServiceName: <service>
이름 | 유형 | 해당하는 항목: |
---|---|---|
문자열 | ||
문자열 | ||
부울 | ||
부울 | ||
부울 | ||
문자열 | ||
문자열 | ||
문자열 | ||
문자열 | ||
부울 | ||
문자열 | ||
문자열 | ||
문자열 | ||
문자열 | ||
문자열 | ||
문자열 |
프로세스 관리 옵션
processManagement: service: name: <string> displayName: <string> description: <string>
이름 | 유형 | 해당하는 항목: |
---|---|---|
문자열 | ||
문자열 | ||
문자열 |
매개변수 옵션 설정
setParameter: polymorphic_type_conversion_mode: <string> type_conversion_mode: <string>
이름 | 유형 | 해당하는 항목: |
---|---|---|
문자열 | ||
문자열 | 데이터 유형을 |
이러한 구성 파일 옵션은 시스템 변수로도 사용할 수 있습니다. 자세한 내용은 시스템 변수를 참조하세요.
외부 구성 값 로드
구성 파일의 확장 지시문을 사용하여 외부에서 제공되는 구성 값을 로드할 수 있습니다. 확장 지시문은 보안 인증서와 비밀번호같은 기밀 정보를 가립니다.
확장 지시문 사용에 대한 자세한 내용은 MongoDB 매뉴얼의 외부 소스 구성 파일 값 을 참조하세요.
구성 파일 예시
참고
이 예시 구성 파일에 사용된 경로는 Linux 전용입니다. 로컬 시스템 설명서를 참조하여 시스템에 맞는 올바른 경로를 확인합니다.
systemLog: logAppend: false path: "/var/log/mongosqld/mongosqld.log" verbosity: 2 security: enabled: true mongodb: net: uri: "mongo.example.com:27017" auth: username: "root" password: "changeme" net: bindIp: 192.0.2.14 port: 3307 ssl: mode: "allowSSL" PEMKeyFile: "/vagrant/certificates/mongosqld-server.pem" CAFile: "/vagrant/certificates/ca.crt" schema: sample: namespaces: "inventory.*" processManagement: service: name: mongosqld displayName: mongosqld description: "BI Connector SQL proxy server"
사용 예시
mongosqld
스키마 파일
--schema
옵션을 사용하여 mongosqld
에 사용할 스키마 파일을 지정합니다.
mongosqld --schema /path/to/schema-file.drdl
샘플 컬렉션 지정
--sampleNamespaces
옵션을 사용하여 데이터를 샘플링할 mongosqld
의 데이터베이스 및 컬렉션을 지정합니다. mongosqld
--sampleNamespaces
옵션 없이 를 시작하면 및 데이터베이스를 제외한 사용 가능한 모든 데이터베이스에서 데이터를 admin
local
샘플링합니다.
다음 예시에서는 contacts
데이터베이스에 있는 addresses
컬렉션의 데이터를 샘플링합니다.
mongosqld --sampleNamespaces contacts.addresses
샘플로 사용할 여러 컬렉션 지정
데이터베이스의 모든 컬렉션에서 데이터를 샘플링하려면 와일드카드 (*
)와 함께 --sampleNamespaces
옵션을 사용합니다.
다음 예시에서는 inventory
데이터베이스의 모든 컬렉션에서 데이터를 샘플링합니다.
mongosqld --sampleNamespaces 'inventory.*'
명령줄에서 --sampleNamespaces
를 반복하여 데이터베이스 내의 여러 컬렉션이나 여러 데이터베이스에 걸쳐 있는 여러 컬렉션에서 데이터를 샘플링할 수 있습니다.
다음 예시에서는 cars
및 boats
데이터베이스의 모든 컬렉션에서 데이터를 샘플링합니다.
mongosqld --sampleNamespaces 'cars.*' \ --sampleNamespaces 'boats.*' \
와일드카드 및 특정 컬렉션을 여러 --sampleNamespaces
옵션과 혼합하고 일치시켜 사용할 수 있습니다.
다음 예시에서는 orders
데이터베이스 내 모든 컬렉션, expenses
데이터베이스의 FY2015
및 FY2016
컬렉션 내 모든 데이터를 샘플링합니다.
mongosqld --sampleNamespaces 'orders.*' \ --sampleNamespaces expenses.FY2015 \ --sampleNamespaces expenses.FY2016 \
참고
와일드카드를 사용할 때는 네임스페이스를 작은따옴표로 묶기만 하면 됩니다.
데이터베이스 및 컬렉션을 샘플링에서 제외하기
데이터 샘플링 프로세스에서 지정된 네임스페이스를 제외하려면 네임스페이스 앞에 ~
(물결표) 기호를 붙입니다. 다음 예시에는 fruit
데이터베이스의 apples
컬렉션을 제외한 모든 데이터베이스와 컬렉션이 포함됩니다.
mongosqld --sampleNamespaces ~fruit.apples
*
와일드카드 문자를 사용하여 데이터베이스에 있는 모든 컬렉션을 표시합니다. 다음 예시에서는 데이터 샘플링에서 전체 vehicles
데이터베이스를 제외합니다.
mongosqld --sampleNamespaces '~vehicles.*'
컬렉션의 모든 문서 샘플
일부 문서가 다른 문서와 다른 필드를 가진 컬렉션이 있고 스키마가 이를 모두 고려하도록 하려면 --sampleSize
옵션을 0
으로 설정합니다. 이로 인해 mongosqld
스키마를 빌드할 때 지정된 namespace
에 있는 모든 문서를 조사하게 됩니다.
다음 예시에서는 mongosqld
에 inventory.electronics
네임스페이스의 모든 문서를 기반으로 스키마를 빌드하도록 지시합니다.
mongosqld --sampleNamespaces inventory.electronics \ --sampleSize 0
스키마를 유지할 데이터베이스 지정
--schemaSource
옵션을 사용하여 스키마 정보를 저장할 데이터베이스를 지정합니다. --schemaMode
옵션을 사용하여 mongosqld
가 스키마 데이터베이스에 쓸 수 있는지 아니면 읽을 수만 있는지 지정합니다.
다음 예제 명령은 sampleDb
데이터베이스를 사용하여 스키마 정보를 저장하고 --schemaMode
를 auto
로 설정합니다.
mongosqld --schemaSource sampleDb --schemaMode auto
중요
mongosqld
에서 authentication
(이)가 활성화된 경우 인증된 사용자에게는 지정된 --schemaSource
데이터베이스에 대한 쓰기 권한이 있어야 합니다. readWrite
역할에 대한 자세한 내용은 기본 제공 역할을 참조하세요.
데이터 리샘플링 간격 지정
--schemaRefreshIntervalSecs
옵션을 사용하여 mongosqld
에 대해 데이터를 다시 샘플링하고 스키마를 다시 생성하는 간격(초)을 지정합니다. 이 옵션의 기본값은 0
이며, 이는 mongosqld
(이)가 데이터를 다시 샘플링하지 않는다는 의미입니다.
--schemaRefreshIntervalSecs
를 사용하여 리샘플링 간격을 설정하고 --schemaSource
를 사용하여 스키마 데이터베이스를 지정하는 경우 --schemaMode
를 custom
으로 설정할 수 없습니다.
다음 예시에서는 스키마 데이터베이스나 스키마 파일을 지정하지 않으므로 해당 스키마를 메모리에 유지합니다. --schemaRefreshIntervalSecs
를 사용하여 3600초의 데이터 리샘플링 간격을 지정합니다.
mongosqld --schemaRefreshIntervalSecs 3600
mongosqld
인증이 활성화된 상태
인증이 활성화된 상태에서 실행 중인 MongoDB 인스턴스에 mongosqld
를 연결하려면 --auth
옵션을 사용하고 MongoDB 사용자 자격 증명을 제공합니다.
다음 예시는 reportsUser
라는 사용자의 자격 증명과 비밀번호 reportsPass
를 사용하여 reports.inventory
네임스페이스에 접근 권한이 있는 상태로 mongosqld
을 시작합니다.
mongosqld --auth \ --mongo-username reportsUser \ --mongo-password reportsPass \ --sampleNamespaces reports.inventory
이 예시에서는 --mongo-authenticationSource
옵션으로 인증 데이터베이스를 지정하지 않으므로 기본값은 admin
입니다. --mongo-authenticationMechanism
옵션으로 인증 메커니즘을 지정하지 않으므로 기본값은 SCRAM-SHA-1
입니다.
mongosqld
구성 파일로
로그를 /var/log/mongosqld.log
에 저장하고 /var/schema.drdl
에서 스키마를 로드하는 구성 파일을 지정하려면 다음과 같은 파일을 /etc/mongosqld.conf
에 저장하면 됩니다.
경고
구성 파일에서는 반드시 절대 경로를 지정해야 합니다. 예를 들어 아래와 같이 /
로 시작해야 합니다.
systemLog: path: /var/log/mongosqld.log schema: path: /var/schema.drdl
그런 다음 mongosqld
옵션을 사용하여--config
를 시작할 수 있습니다.
mongosqld --config /etc/mongosqld.conf
시스템 서비스로 mongosqld
를 시작하는 방법에 대한 자세한 내용은 운영 체제의 설치 가이드를 참조하세요.
Atlas와 함께 사용
Atlas는 MongoDB 배포서버를 실행, 모니터링, 유지 관리하기 위한 클라우드 서비스로서 MongoDB 인스턴스 전용 서버의 프로비저닝이 포함됩니다.
Atlas는 TLS/SSL을 사용하여 연결을 암호화하고 인증을 기본적으로 시행합니다.
참고
MongoDB Atlas 프리 티어에서는 BI Connector가 allowDiskUse
옵션을 사용하여 집계 파이프라인을 실행할 수 없습니다. 이 옵션을 사용하면 집계 단계에서 데이터를 임시 파일로 디스크에 쓸 수 있습니다. MongoDB Atlas 프리 티어 제약 조건을 검토하려면 MongoDB Atlas 매뉴얼을 참조하세요.
mongosqld
인증 기관에서 발급한 유효한 TLS 인증서 또는 자체 서명된 인증서를 사용할 수 있습니다. 자체 서명된 인증서를 사용하는 경우 통신 채널이 암호화되더라도 서버 ID에 대한 유효성 검사는 이루어지지 않습니다. 이러한 상황은 연결 도청을 방지할 수 있지만 중간자 공격에 취약해질 수 있습니다. 신뢰할 수 있는 인증 기관에서 서명한 인증서를 사용하면 MySQL 클라이언트가 서버의 ID를 확인하도록 허용할 수 있습니다.
테스트 목적으로 openssl
도구를 사용하여 이름이 test.pem
인 .pem
키 파일을 생성할 수 있습니다.
openssl req -nodes -newkey rsa:2048 -keyout test.key -out test.crt -x509 -days 365 -subj "/C=US/ST=test/L=test/O=test Security/OU=IT Department/CN=test.com" cat test.crt test.key > test.pem
다음 옵션을 사용하여 mongosqld
를 시작합니다.
이전 예시에서와 같이 키 파일의 이름을 test.pem
으로 지정한 경우, 클러스터 URI 및 로그인 자격 증명을 대체하여 다음을 실행할 수 있습니다.
mongosqld --mongo-ssl \ --auth \ --sslPEMKeyFile test.pem \ --mongo-uri <uri> \ --sslMode allowSSL \ --mongo-username <username> \ --mongo-password <password>
사용자 이름, 비밀번호, 인증 데이터베이스를 SQL 클라이언트에 전달합니다. 예를 들어 mongosqld
서버 인증서를 확인하지 않고 mysql
을 사용하는 경우입니다.
mysql --host <mongosqld-host> --port <mongosqld-port> -u <username>?source=admin -p --ssl-mode required --enable-cleartext-plugin
BI 커넥터에서 mysql
클라이언트를 사용하는 방법에 대한 자세한 내용은 MySQL 클라이언트에서 연결을 참조하세요.
샘플링 모드 레퍼런스 차트
아래 차트에서는 mongosqld
시작 구성의 유형과 각 유형에 사용되는 옵션 에 대해 설명합니다.
모드 | mongosqld 옵션 | 행동 | |||
---|---|---|---|---|---|
독립형 스키마 |
| 스타트업 시 예를 들면 다음과 같습니다.
자세한 내용은 독립형 스키마 모드(캐시된 샘플링)을 참조하세요. | |||
사용자 지정 스키마 |
|
예를 들면 다음과 같습니다.
| |||
Auto Schema |
| 사용자 지정 스키마 데이터베이스에서 스키마 데이터를 샘플링하고 유지합니다. 예를 들면 다음과 같습니다.
자세한 내용은 자동 스키마 모드 (MongoDB에서 스키마 유지)를 참조하세요. |
잘못된 구성
다음 mongosqld
옵션 구성은 잘못되어 시작 시 오류가 발생합니다.
모드 | mongosqld 옵션 | 행동 |
---|---|---|
독립형 작성기(유효하지 않음) |
| |
클러스터 샘플링 해석기(유효하지 않음) |
| MongoDB 복제본 세트 또는 샤딩된 클러스터에서 사용되는 경우 이 구성은 유효하지 않습니다. --schemaSource 로 스키마 데이터를 저장하도록 데이터베이스를 지정한 경우 --schemaMode 를 auto 로 설정해야 클러스터 전체의 일관성을 유지하기 위해 프라이머리 스키마가 업데이트될 수 있습니다. |