Docs Menu
Docs Home
/
BI 커넥터
/

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 옵션을 사용하여 데이터를 샘플링할 네임스페이스를 하나 이상 지정할 수 있습니다. 네임스페이스나 스키마 파일을 지정하지 않으면 mongosqldadminlocal 데이터베이스를 제외하고 대상 MongoDB 인스턴스의 모든 데이터베이스에서 데이터를 샘플링합니다.

--schemaSource 옵션을 사용하여 스키마 정보를 저장할 데이터베이스를 지정할 수 있습니다. 그렇지 않으면 mongosqld 이 스키마를 메모리에 보관합니다.

--schema 옵션을 사용하여 mongosqld를 시작할 때 스키마 파일을 지정합니다.

mongosqld --schema /path/to/schema-file.drdl

mongodrdl를 사용하여 MongoDB 인스턴스에서 스키마 파일을 만듭니다.

--schemaSource 옵션을 사용하여 스키마 정보를 저장할 데이터베이스를 지정합니다.

mongosqld --schemaSource sampleDb

--sampleNamespaces 옵션을 사용하여 스키마를 만들기 위해 데이터를 샘플링할 mongosqld 데이터베이스 및 컬렉션을 지정합니다.

mongosqld --sampleNamespaces contacts.addresses

아래의 추가 사용 예시를 참조하세요.

MongoDB 인스턴스가 인증을 사용하는 경우 BI Connector 인스턴스도 인증을 사용해야 합니다. mongosqld 프로그램을 통해 MongoDB에 연결하는 사용자에게는 데이터를 샘플링하려는 모든 네임스페이스에서 읽을 수 있는 권한이 있어야 합니다.

BI Connector의 MongoDB 사용자 권한에 대한 자세한 내용은 캐시된 샘플링에 대한 사용자 권한을 참조하세요.

MongoDB 사용자 및 역할에 대한 자세한 내용은 역할 기반 액세스 제어를 참조하세요.

인증이 적용된 mongosqld의 아래 예시를 참조하세요.

버전 2.6에 새로 추가됨

모든 클라이언트 연결에 대한 기본 최소 TLS 버전은 1.1입니다. 여기에는 mongosqld 에 대한 수신 클라이언트 연결과 MongoDB로의 발신 연결이 포함됩니다.

--minimumTLSVersion 옵션을 사용하여 들어오는 연결에 대해 이 설정을 조정하고 --mongo-minimumTLSVersion 옵션을 사용하여 나가는 연결에 대해 이 설정을 조정할 수 있습니다.

--help

옵션 및 mongosqld의 사용에 대한 정보를 반환합니다.

--addr

기본값: 127.0.0.1:3307

수신 대기할 호스트 주소를 지정합니다.

--version

mongosqld 릴리스 번호를 반환합니다.

--config <path>

구성 파일의 경로를 지정합니다.

--mongo-uri <uri>

기본값: mongodb://localhost:27017

연결할 MongoDB 연결 문자열을 지정합니다.

--mongo-uri 옵션은 연결 string 내에서 다음 옵션을 지원합니다.

이러한 URI 옵션에 대한 자세한 내용은 읽기 설정 옵션복제본 세트 옵션을 참조하세요.

위 목록에 포함되지 않은 Mongo URI에 설정된 옵션의 경우 동등한 mongosqld 옵션을 사용하세요. mongosqld 옵션의 전체 목록은 명령줄 옵션을 참조합니다.

참고

연결 문자열에 usernamepassword을 지정하는 대신 mongosqld--auth 옵션과 함께 실행하여 mongosqld가 SQL 클라이언트에서 제공한 인증 자격 증명을 MongoDB 서버로 전달하도록 지시합니다.

마찬가지로 연결 문자열에서 ssl을 활성화하지 않고, 대신 --mongo-ssl을 사용해 mongosqld를 실행합니다.

자동 복제본 세트 서버 검색 논리를 비활성화하고 지정된 서버에 대한 연결을 강제 실행하려면 connect=direct 옵션을 사용합니다.

mongosqld --mongo-uri "mongodb://<hostname>:<port>/?connect=direct"

위의 목록 또는 지원되는 mongosqld 옵션 목록에 없는 URI 옵션은 지원되지 않습니다.

--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와 함께 사용하세요.

설명
버전 2.6에 새로 추가됨 RFC 7677 표준 SHA2 해시 함수를 사용하는 솔티드 챌린지 응답 인증 메커니즘입니다.
PLAIN (LDAP SASL)
LDAP를 사용한 외부 인증. PLAIN 을 사용해 데이터베이스 내 사용자를 인증할 수도 있습니다. PLAIN 은 비밀번호를 일반 텍스트로 전송합니다. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.
GSSAPI (Kerberos)
Kerberos를 사용한 외부 인증. 이 메커니즘은 MongoDB Enterprise에서만 사용할 수 있습니다.
--schema <filename>

스키마 파일 또는 스키마 디렉토리의 경로를 지정합니다.

--schemaDirectory <directoryname>

버전 2.2부터 더 이상 사용되지 않습니다.

대신 --schema 를 사용하세요.

--sampleNamespaces <db.collection>

버전 2.5에 추가.

--sampleNamespaces 스키마를 생성하는 데이터 샘플링 프로세스에 포함하거나 제외할 데이터베이스 및 컬렉션을 지정합니다. 단일 데이터베이스에서 여러 컬렉션을 지정하거나 여러 데이터베이스에서 여러 컬렉션을 지정할 수도 있습니다. 아래 예시 를 참조하세요.

--sampleNamespaces 옵션 또는 --schema 옵션을 사용하지 않는 경우, mongosqldadminlocal 데이터베이스를 제외한 사용 가능한 모든 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에 추가.

스키마 정보를 수집할 때 샘플링할 네임스페이스당 문서 수입니다.

--sampleSize0으로 설정하여 스키마를 구축할 때 지정된 네임스페이스에 있는 모든 문서를 포함시킵니다. 네임스페이스를 지정하지 않은 경우 --sampleSize0으로 설정하면 mongosqld에서 스키마를 작성할 때 모든 데이터베이스의 모든 문서( local, adminsystem 제외)를 고려합니다. 아래 예시를 참조하세요.

--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이 필요합니다.

--logPath <filename>

Default: stderr

로깅 출력을 저장하기 위한 로그 파일의 경로를 지정합니다.

--logRotate reopen | rename

기본값: 이름 바꾸기

로그를 순환할지 여부와 로그를 순환하는 방법을 지정합니다.

이 옵션을 설정하면 BI용 MongoDB Connector에 FLUSH LOGS 명령을 실행하거나 mongosqld를 다시 시작할 때 로그가 회전합니다.

--logRotaterename으로 설정한 경우:
기존 로그 파일이 닫힙니다. RFC3339 형식의 타임스탬프가 닫힌 로그 파일에 추가됩니다. 새 로그 파일이 생성됩니다.
--logRotatereopen으로 설정한 경우:
기존 로그 파일이 닫혔다가 다시 열립니다.

참고

UNIX 및 macOS 플랫폼에서는 SIGUSR1 신호를 실행하여 mongosqld 프로세스를 다시 시작하고 로그를 순환시킵니다.

--usageLogInterval <number>

기본값: 60

버전 2.14에 추가.

사용량 통계가 로그에 기록되는 간격(초)입니다. 사용량 로깅을 비활성화하려면 0으로 설정합니다.

참고

Windows에서는 사용량 로깅이 활성화되어 있지 않습니다.

--verbose, -v

mongosqld가 더 자세한 로그 출력을 제공하도록 지정합니다.

다음 표에는 각 로그 수준에서 제공되는 정보가 설명되어 있습니다.

문자 옵션
로그 레벨
메시지 내용
--quiet
none
아무것도 로그하지 않습니다.
No flag
기본값
사용자에게 기본 mongosqld 이벤트 및 상태 변경을 알리는 메시지를 기록합니다.
-v
관리자
mongosqld 관리자에게 정보를 증명하는 메시지를 기록합니다.
-vv
개발자
MongoDB 지원 및 개발에 유용한 메시지를 로그합니다.
--quiet

모든 로그 출력을 숨깁니다.

--mongo-ssl

Default(기본값): False

mongosqld가 MongoDB 인스턴스에 연결할 때 TLS/SSL을 사용하도록 지시합니다.

--mongo-sslPEMKeyFile <filename>

MongoDB에 연결할 때 사용할 mongosqld 의 TLS/SSL 인증서와 키가 모두 포함된 .pem 파일을 지정합니다. 상대 경로 또는 절대 경로를 사용하여 .pem 파일의 이름을 지정할 수 있습니다.

이 옵션은 --mongo-ssl 옵션을 사용하여 mongod 또는 mongos에 연결할 때 CAFilenet.ssl.allowConnectionsWithoutCertificates 없이 활성화된 경우 필수입니다.

--mongo-sslPEMKeyPassword <password>

MongoDB에 연결하기 위한 인증서와 비공개 키를 포함하는 파일 경로를 지정합니다.

--mongo-sslAllowInvalidHostnames

mongosqld가 호스트 이름이 TLS/SSL 인증서의 호스트 이름과 다른 MongoDB 서버에 연결할 수 있도록 허용합니다.

--mongo-sslAllowInvalidCertificates

MongoDB 인스턴스가 잘못된 서버 SSL/TLS 인증서를 제시하도록 허용합니다. allowInvalidCertificates 설정을 사용하면 MongoDB는 유효하지 않은 인증서 사용을 경고로 기록합니다.

--mongo-sslCAFile <filename>

인증 기관의 루트 인증서 체인을 포함하는 MongoDB 인스턴스의 .pem 파일을 지정합니다. 상대 경로 또는 절대 경로를 사용해 .pem 파일의 이름을 지정합니다.

경고

mongodmongos 에 대한 SSL 연결( --mongo-ssl )의 경우 mongosqld--mongo-sslCAFile 없이 실행되면 mongosqld 는 서버 인증서의 유효성 검사를 시도하지 않습니다. 이로 인해 만료된 mongodmongos 인증서는 물론 유효한 mongod 또는 mongos 인스턴스로 가장하는 외부 프로세스에 대한 취약성이 발생합니다. 침입 가능성이 있는 경우 서버 인증서의 유효성을 검사하기 위해 항상 CA 파일을 지정해야 합니다.

--mongo-sslCRLFile <filename>

인증서 해지 목록을 포함하는 MongoDB 인스턴스의 .pem 파일을 지정합니다.

--mongo-sslFIPSMode

설치된 OpenSSL 라이브러리에서 FIPS 모드를 활성화합니다.

--mongo-minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>

기본값: TLS1_1

mongod 또는 mongos에 대한 발신 연결에 필요한 최소 TLS 버전을 지정합니다. 인스턴스입니다. 기본값 TLS1_1(은)는 TLS 버전 1.1에 해당합니다.

--sslMode <mode>

기본값: 사용 안 함

버전 2.3에 추가.

mongosqld에 대한 연결을 위해 TLS/SSL을 활성화하거나 비활성화합니다. sslMode 옵션의 인수는 다음 중 하나입니다.

설명
disabled
mongosqld는 TLS/SSL을 사용하여 보안된 연결을 수락할 수 없습니다.
allowSSL
mongosqld는 TLS/SSL을 사용하여 보안된 연결을 수락할 수 있습니다.
requireSSL
mongosqld는 TLS/SSL을 사용하여 보안이 설정된 연결만 수락할 수 있습니다.
--sslPEMKeyFile <filename>

TLS/SSL 인증서와 MySQL 클라이언트용 키를 모두 포함하는 .pem 파일을 지정합니다. 상대 경로 또는 절대 경로를 사용해 .pem 파일의 이름을 지정합니다.

--sslPEMKeyPassword <password>

--sslPEMKeyFile에서 지정한 개인 키를 해독하는 데 사용되는 비밀번호를 지정합니다.

--sslAllowInvalidCertificates

MySQL 클라이언트가 유효하지 않은 클라이언트 TLS/SSL 인증서를 제시하도록 허용합니다.

--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.usernamemongodb.net.auth.password 설정과 함께 구성 파일에 제공되어야 합니다.

mongosqld 관리자 자격 증명을 통해 샘플링된 네임스페이스에 관한 메타데이터를 수집하고, 연결 클라이언트의 자격 증명을 사용하여 데이터를 클라이언트가 읽을 권한이 있는 범위로 제한합니다. 관리 사용자에게 필요한 권한에 대한 자세한 내용은 캐시된 샘플링에 대한 사용자 권한에서 확인합니다.

--defaultAuthSource <authSource>

기본값: admin

기본 MongoDB 인증 소스를 지정합니다. 이 값을 설정하여 mongosqld가 MongoDB 데이터베이스로 인증할 때 사용하는 기본 소스를 지정합니다. GSSAPIPLAIN 인증 메커니즘은 $external 소스를 사용하고, SCRAM-SHA-1SCRAM-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를 실행하는 시스템 서비스에 대한 설명입니다.

--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 구성을 참조하세요.

--filePermissions <mode>

기본값: 0700

Unix 도메인 소켓 파일에 대한 권한을 지정합니다.

--noUnixSocket

Unix 도메인 소켓에서 수신을 비활성화합니다.

--unixSocketPrefix <path>

기본값/tmp

mongosqld 유닉스 도메인 소켓의 대체 디렉토리를 지정합니다.

mongosqld는 이 경로 아래에 mysql.sock 소켓 파일을 생성합니다. --unixSocketPrefix를 지정하지 않으면 소켓은 /tmp/mysql.sock에 존재합니다.

--setParameter <parameter>
Parameter
유형
해당하는 항목:
"polymorphic_type_conversion_mode=<value>"
문자열

mongosqld가 여러 데이터 유형으로 지정된 문서 필드를 평가하는 방법을 결정합니다. 허용되는 값은 off, fastsafe입니다. 이러한 값에 대한 자세한 내용은 시스템 변수를 참조하세요.

"type_conversion_mode=<value>"
문자열

데이터 유형을 mongosqld 변환하는 데 사용하는 모드를 지정합니다. BI Connector는 기본적으로 자체 모드(mongosql)를 사용합니다. 허용되는 값은 mongosqlmysql 입니다. 이러한 값에 대해 자세히 알아보려면 시스템 변수를 참조하세요.

다음 예제는 mongosqld를 시작하고 --setParameter 옵션을 사용하여 타입 변환 모드를 지정합니다

mongosqld --setParameter "type_conversion_mode=mongosql"

YAML 구성 파일을 사용하여 mongosqld를 구성할 수 있습니다. 이 파일에는 다음 섹션에 나열된 설정이 포함될 수 있습니다.

참고

구성 파일의 확장 지시문을 사용하여 외부에서 제공되는 구성 값을 로드할 수 있습니다. 확장 지시문은 보안 인증서와 비밀번호같은 기밀 정보를 가립니다.

확장 지시문 사용에 대한 자세한 내용은 MongoDB 매뉴얼의 외부 소스 구성 파일 값 을 참조하세요.

systemLog:
logAppend: <boolean>
logRotate: "rename"|"reopen"
path: <string>
quiet: <boolean>
verbosity: <integer>
이름
유형
해당하는 항목:
systemLog.logAppend
부울
systemLog.logRotate
문자열
systemLog.path
문자열
systemLog.quiet
부울
systemLog.verbosity
integer
schema:
path: <string>
maxVarcharLength: <integer>
이름
유형
해당하는 항목:
schema.path
문자열
schema.maxVarcharLength
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>
이름
유형
해당하는 항목:
schema.stored.mode
문자열
schema.stored.source
문자열
schema.stored.name
문자열
schema.sample.size
integer
schema.sample.prejoin
부울
schema.sample.namespaces
문자열 또는 문자열 배열
schema.refreshIntervalSecs
integer
schema.sample.uuidSubtype3Encoding
문자열
runtime:
memory:
maxPerStage: <integer>
maxPerServer: <integer>
maxPerConnection: <integer>

중요

BI Connector는 mongosqld 프로세스가 MongoDB로 쿼리를 전송하는 데 사용할 수 있는 시스템 메모리의 양을 제어하기 위해 다음과 같은 옵션을 제공합니다. 이러한 제한에는 BI Connector가 데이터 구조 오버헤드 등 다른 목적으로 사용하는 메모리가 포함되지 않으므로 BI Connector가 사용하는 총 메모리 양은 해당 옵션에서 제한한 수치보다 많아집니다.

runtime.memory.maxPerStage

유형: integer

Default: unlimited

쿼리 실행 단계에서 사용할 수 있는 최대 메모리 양을 바이트 단위로 지정합니다.

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>
이름
유형
해당하는 항목:
net.bindIp
문자열

호스트 이름 구성 요소 --addr

버전 2.2으로 변경됨: 여러 IP 주소에 바인딩하려면 쉼표로 구분된 값의 목록을 입력합니다.

예를 들면 다음과 같습니다.

"72.198.41.200,72.198.41.201,72.198.41.202"
net.port
integer
포트 구성 요소 --addr
net.unixDomainSocket.enabled
부울
역방향 --noUnixSocket
net.unixDomainSocket.pathPrefix
문자열
net.unixDomainSocket.filePermissions
문자열
net.ssl.allowInvalidCertificates
부울
net.ssl.mode
문자열
net.ssl.PEMKeyFile
문자열
net.ssl.PEMKeyPassword
문자열
net.ssl.CAFile
문자열
net.ssl.minimumTLSVersion
문자열
security:
enabled: <boolean>
defaultMechanism: <string>
defaultSource: <string>
gssapi:
hostname: <string>
serviceName: <string>
이름
유형
해당하는 항목:
security.enabled
부울
security.defaultMechanism
문자열
security.defaultSource
문자열
security.gssapi.hostname
문자열
security.gssapi.serviceName
문자열
security.gssapi.constrainedDelegation
문자열
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>
이름
유형
해당하는 항목:
mongodb.versionCompatibility
문자열
mongodb.net.uri
문자열
mongodb.net.ssl.enabled
부울
mongodb.net.ssl.allowInvalidCertificates
부울
mongodb.net.ssl.allowInvalidHostnames
부울
mongodb.net.ssl.PEMKeyFile
문자열
mongodb.net.ssl.PEMKeyPassword
문자열
mongodb.net.ssl.CAFile
문자열
mongodb.net.ssl.CRLFile
문자열
mongodb.net.ssl.FIPSMode
부울
mongodb.net.ssl.minimumTLSVersion
문자열
mongodb.net.auth.username
문자열
mongodb.net.auth.password
문자열
mongodb.net.auth.source
문자열
mongodb.net.auth.mechanism
문자열
mongodb.net.auth.gssapiServiceName
문자열
processManagement:
service:
name: <string>
displayName: <string>
description: <string>
이름
유형
해당하는 항목:
processManagement.service.name
문자열
processManagement.service.displayName
문자열
processManagement.service.description
문자열
setParameter:
polymorphic_type_conversion_mode: <string>
type_conversion_mode: <string>
이름
유형
해당하는 항목:
setParameter.polymorphic_type_conversion_mode
문자열

mongosqld가 여러 데이터 유형으로 지정된 문서 필드를 평가하는 방법을 결정합니다. 허용되는 값은 off, fastsafe입니다. 이러한 값에 대한 자세한 내용은 시스템 변수를 참조하세요.

setParameter.type_conversion_mode
문자열

데이터 유형을 mongosqld 변환하는 데 사용하는 모드를 지정합니다. BI Connector는 기본적으로 자체 모드(mongosql)를 사용합니다. 허용되는 값은 mongosqlmysql 입니다. 이러한 값에 대해 자세히 알아보려면 시스템 변수를 참조하세요.

이러한 구성 파일 옵션은 시스템 변수로도 사용할 수 있습니다. 자세한 내용은 시스템 변수를 참조하세요.

구성 파일의 확장 지시문을 사용하여 외부에서 제공되는 구성 값을 로드할 수 있습니다. 확장 지시문은 보안 인증서와 비밀번호같은 기밀 정보를 가립니다.

확장 지시문 사용에 대한 자세한 내용은 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"

--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를 반복하여 데이터베이스 내의 여러 컬렉션이나 여러 데이터베이스에 걸쳐 있는 여러 컬렉션에서 데이터를 샘플링할 수 있습니다.

다음 예시에서는 carsboats 데이터베이스의 모든 컬렉션에서 데이터를 샘플링합니다.

mongosqld --sampleNamespaces 'cars.*' \
--sampleNamespaces 'boats.*' \

와일드카드 및 특정 컬렉션을 여러 --sampleNamespaces 옵션과 혼합하고 일치시켜 사용할 수 있습니다.

다음 예시에서는 orders 데이터베이스 내 모든 컬렉션, expenses 데이터베이스의 FY2015FY2016 컬렉션 내 모든 데이터를 샘플링합니다.

mongosqld --sampleNamespaces 'orders.*' \
--sampleNamespaces expenses.FY2015 \
--sampleNamespaces expenses.FY2016 \

참고

와일드카드를 사용할 때는 네임스페이스를 작은따옴표로 묶기만 하면 됩니다.

데이터 샘플링 프로세스에서 지정된 네임스페이스를 제외하려면 네임스페이스 앞에 ~(물결표) 기호를 붙입니다. 다음 예시에는 fruit 데이터베이스의 apples 컬렉션을 제외한 모든 데이터베이스와 컬렉션이 포함됩니다.

mongosqld --sampleNamespaces ~fruit.apples

* 와일드카드 문자를 사용하여 데이터베이스에 있는 모든 컬렉션을 표시합니다. 다음 예시에서는 데이터 샘플링에서 전체 vehicles 데이터베이스를 제외합니다.

mongosqld --sampleNamespaces '~vehicles.*'

일부 문서가 다른 문서와 다른 필드를 가진 컬렉션이 있고 스키마가 이를 모두 고려하도록 하려면 --sampleSize 옵션을 0으로 설정합니다. 이로 인해 mongosqld 스키마를 빌드할 때 지정된 namespace에 있는 모든 문서를 조사하게 됩니다.

다음 예시에서는 mongosqldinventory.electronics 네임스페이스의 모든 문서를 기반으로 스키마를 빌드하도록 지시합니다.

mongosqld --sampleNamespaces inventory.electronics \
--sampleSize 0

--schemaSource 옵션을 사용하여 스키마 정보를 저장할 데이터베이스를 지정합니다. --schemaMode 옵션을 사용하여 mongosqld가 스키마 데이터베이스에 쓸 수 있는지 아니면 읽을 수만 있는지 지정합니다.

다음 예제 명령은 sampleDb 데이터베이스를 사용하여 스키마 정보를 저장하고 --schemaModeauto 로 설정합니다.

mongosqld --schemaSource sampleDb --schemaMode auto

중요

mongosqld에서 authentication(이)가 활성화된 경우 인증된 사용자에게는 지정된 --schemaSource 데이터베이스에 대한 쓰기 권한이 있어야 합니다. readWrite 역할에 대한 자세한 내용은 기본 제공 역할을 참조하세요.

--schemaRefreshIntervalSecs 옵션을 사용하여 mongosqld에 대해 데이터를 다시 샘플링하고 스키마를 다시 생성하는 간격(초)을 지정합니다. 이 옵션의 기본값은 0이며, 이는 mongosqld(이)가 데이터를 다시 샘플링하지 않는다는 의미입니다.

--schemaRefreshIntervalSecs를 사용하여 리샘플링 간격을 설정하고 --schemaSource를 사용하여 스키마 데이터베이스를 지정하는 경우 --schemaModecustom으로 설정할 수 없습니다.

다음 예시에서는 스키마 데이터베이스나 스키마 파일을 지정하지 않으므로 해당 스키마를 메모리에 유지합니다. --schemaRefreshIntervalSecs를 사용하여 3600초의 데이터 리샘플링 간격을 지정합니다.

mongosqld --schemaRefreshIntervalSecs 3600

인증이 활성화된 상태에서 실행 중인 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입니다.

로그를 /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는 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 옵션
행동
독립형 스키마

스타트업 시 mongosqld가 데이터를 샘플링합니다. --schemaRefreshIntervalSecs > 0인 경우에는 지정된 간격으로 다시 샘플링합니다.

예를 들면 다음과 같습니다.

mongosqld --schemaRefreshIntervalSecs 3600

자세한 내용은 독립형 스키마 모드(캐시된 샘플링)을 참조하세요.

사용자 지정 스키마

--schemaSource로 지정된 데이터베이스에서 스키마 데이터를 읽습니다.

예를 들면 다음과 같습니다.

mongosqld --schemaMode custom \
--schemaSource schemaDb
Auto Schema

사용자 지정 스키마 데이터베이스에서 스키마 데이터를 샘플링하고 유지합니다.

예를 들면 다음과 같습니다.

mongosqld --schemaMode auto \
--schemaSource schemaDb \
--schemaRefreshIntervalSecs 3600

자세한 내용은 자동 스키마 모드 (MongoDB에서 스키마 유지)를 참조하세요.

다음 mongosqld 옵션 구성은 잘못되어 시작 시 오류가 발생합니다.

모드
mongosqld 옵션
행동
독립형 작성기(유효하지 않음)
이 구성은 독립형 mongod 인스턴스에서는 유효하지 않습니다. auto 모드에서는 쓰기 가능한 데이터베이스가 지정되어야 하기 때문입니다.
클러스터 샘플링 해석기(유효하지 않음)
MongoDB 복제본 세트 또는 샤딩된 클러스터에서 사용되는 경우 이 구성은 유효하지 않습니다. --schemaSource로 스키마 데이터를 저장하도록 데이터베이스를 지정한 경우 --schemaModeauto로 설정해야 클러스터 전체의 일관성을 유지하기 위해 프라이머리 스키마가 업데이트될 수 있습니다.

돌아가기

커넥터 구성 요소