説明
注意
MongoDB Connector for BI と関連するユーティリティは、現在サポートされているすべての MongoDB サーバー バージョンと互換性があります。
mongosqld は SQL クライアントからの受信リクエストを受け入れ、それらのリクエストを mongod または mongos インスタンスにプロキシします。
使用法
バージョン 2.3 の新機能:
mongosqld を開始するには、--schema オプションを使用して .drdl 形式のスキーマ ファイルを使用するか、MongoDB インスタンスのデータをサンプリングしてスキーマを作成します
データのサンプリング元になる 名前空間は、--sampleNamespaces オプションを使用して指定できます。名前空間またはスキーマ ファイルを指定しない場合、mongosqld はサンプリング先となる MongoDB インスタンスに属するすべてのデータベース(admin と local データベースを除く)のデータをサンプリングします。
--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 オプションを使用して調整できます。
コマンドライン オプション
中心的オプション
--helpmongosqldのオプションと使用に関する情報を返します。
--versionmongosqldのリリース番号を返します。
--config <path>構成ファイルへのパスを指定します。
--mongo-uri <uri>デフォルト: mongodb://localhost:27017
接続する MongoDB 接続文字列を指定します。
--mongo-uriオプションは、 接続string内で次のオプションをサポートしています。これらの URI オプションの詳細については、「読み込み設定(read preference)オプション」および「レプリカセット オプション」を参照してください。
上記リストに掲載されていない Mongo URI で設定されているオプションには、同等の
mongosqldオプションを使用します。mongosqldオプションの完全なリストは、「コマンドライン オプション」を参照してください。注意
自動レプリカセット サーバーの検出ロジックを無効にして、指定サーバーへの接続を強制するには、
connect=directオプションを使用します。mongosqld --mongo-uri "mongodb://<hostname>:<port>/?connect=direct" 上記リストとサポートされている
mongosqldオプションのリストのいずれにも含まれていない URI オプションはサポートされていません。
--mongo-versionCompatibility <version-number>MongoDB の特定バージョンがサポートする機能を使用するように
mongosqldを制限します。ノードが別の 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で最大長よりも長い文字列が発生した場合、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を使用します。値説明RFC5802 SHA1 ハッシュ関数を使用する標準の Salted Challenge Response Authentication Mechanism。
バージョン 2.6 の新機能: RFC7677 標準の Salted Challenge Response Authentication Mechanism。2
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は、使用可能なすべての MongoDB データベースとコレクション(adminとlocalデータベースを除く)からのデータをサンプリングします。
--schemaMode <[custom|auto]>デフォルト:
customバージョン 2.11 の新機能。
mongosqldのサンプリング モードを構成します。--schemaSourceオプションと併用する必要があります。サンプリング動作は次の値によって決まります。値--schemaMode動作custommongosqldは、--schemaSourceオプションで指定された MongoDB データベースから保存されたスキーマを読み取ります。automongosqldは、--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オプションで指定されたデータベースからロードするスキーマの名前です。autoBI 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の場合、最初のサンプリング後に再サンプリングが自動的に実行されることはありません。指定する値は正の整数である必要があります。スキーマの 1 回限りの更新を強制するには、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" ] } 上記コレクションは、表形式の次の 2 つのテーブルに変換されます。
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デフォルト: rename
ログをローテーションすること、およびそのローテーション方法を指定します。
このオプションが設定されている状態で、MongoDB Connector for BI に
FLUSH LOGSコマンドを発行するか、mongosqldを再開すると、ログがローテーションされます。--logRotateをrenameに設定すると、次の動作につながります。- 既存のログファイルが閉じられます。RFC3339 形式のタイムスタンプが閉じられたログファイルに追加されます。新しいログファイルが作成されます。
--logRotateをreopenに設定すると、次の動作につながります。- 既存のログファイルが閉じられ、再度開かれます。
注意
UNIX と macOS プラットフォームでは、
SIGUSR1シグナルを発行してmongosqldプロセスを再開し、ログをローテーションできます。
--usageLogInterval <number>デフォルト: 60
バージョン 2.14 の新機能。
使用量統計がログに書き込まれる間隔(秒単位)。使用量のログ作成を無効にするには、
0に設定します。注意
使用量のログ作成は Windows では有効になっていません。
--verbose, -vmongosqldがより詳細なログ出力を提供することを指定します。以下の表では各ログ レベルで提供される情報について説明しています。
MongoDB TLS/SSL オプション
重要
独自の認証局(CA)を使用してサーバーおよびクライアント証明書に自己署名を行う場合は、認証が正しく機能するように --mongo-sslAllowInvalidHostnames オプションを含める必要があります。
--mongo-sslデフォルト: False
MongoDB インスタンスに接続するときに TLS/SSL を使用するように
mongosqldに指示します。
--mongo-sslPEMKeyFile <filename>MongoDB への接続時に
mongosqldが使用する TLS/SSL 証明書と鍵の両方を含む.pemファイルを指定します。 相対パスまたは絶対パスを使用して、.pemファイルのファイル名を指定できます。このオプションは、
--mongo-sslオプションを使用して、 なしで有効になっているmongodまたはmongosCAFilenet.ssl.allowConnectionsWithoutCertificatesに接続する場合に必要です。
--mongo-sslAllowInvalidHostnamesTLS/SSL 証明書のホスト名と異なるホスト名を持つ MongoDB Server への
mongosqldによる接続を許可します。
--mongo-sslAllowInvalidCertificatesMongoDB インスタンスが無効なサーバー SSL/TLS 証明書を提示することを許可します。
allowInvalidCertificates設定を使用すると、MongoDB は警告として無効な証明書の使用をログに記録します。
クライアント TLS/SSL オプション
--sslMode <mode>デフォルト: disabled
バージョン 2.3 の新機能.
mongosqld への接続に対して TLS/SSL を有効または無効にします。
sslModeオプションの引数には以下のいずれかを指定します。
--sslPEMKeyFile <filename>MySQL クライアントの TLS/SSL 証明書とキーの両方を含む
.pemファイルを指定します。相対パスまたは絶対パスを使用して、.pemファイルのファイル名を指定します。
--sslPEMKeyPassword <password>--sslPEMKeyFileで指定された秘密キーを復号化するために使用されるパスワードを指定します。
--sslAllowInvalidHostnamesTLS/SSL 証明書のホスト名とは異なるホスト名を持つ
mongosqldへの接続を SQL クライアントに許可します。
--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 認証ソースを指定します。MongoDB データベースでの認証時に、
mongosqldが使用するデフォルトのソースを指定するためにこの値を設定します。認証メカニズムGSSAPIとPLAINは$externalソースを使用するのに対し、SCRAM-SHA-1とSCRAM-SHA-256は MongoDB データベースをソースとして使用します。このオプションの値を指定しない場合、デフォルトでは MongoDB
admindatabaseが使用されます。$external認証ソースは、「$external」と呼ばれる MongoDB データベースにシステムユーザーへの参照を保存しますが、認証情報は LDAP サーバーなどの MongoDB 以外の外部システムに保存します。デフォルト値を使用する接続では、MySQL または Tableau ユーザー名から
sourceパラメーターを省略できます。
--defaultAuthMechanism <authMechanism>デフォルト: SCRAM-SHA-1
デフォルトの認証メカニズムを指定します。
mongosqldに接続するためのデフォルト メカニズムを指定するには、この値を設定します。指定済みのデフォルト値を使用する接続では、MySQL または Tableau ユーザー名からmechanismパラメーターを省略できます。値説明RFC5802 標準の Salted Challenge Response Authentication Mechanism。1
バージョン 2.6 の新機能: RFC7677 標準の Salted Challenge Response Authentication Mechanism。2
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 の新機能。
Kerberos 対応の MongoDB インスタンスに接続するときに Kerberos SPN を設定します。この値は、MongoDB インスタンスに設定されたサービス名と一致する必要があります。
--gssapiConstrainedDelegationデフォルト: False
バージョン 2.11 の新機能。
Kerberos 認可のプロキシ認証情報を使用し、制約付き削除を可能にします。 サービス キータブとクライアント キータブに
mongosqldサービス認証情報が存在する必要があります。 Kerberos 構成の詳細については、「 BI Connector 用の Kerberos の構成」を参照してください。
ソケット オプション
--unixSocketPrefix <path>デフォルト: /tmp
mongosqldUnix ドメイン ソケットの代替ディレクトリを指定します。mongosqldはこのパスの下にmysql.sockと呼ばれるソケット ファイルを作成します。--unixSocketPrefixを指定しない場合、ソケットは/tmp/mysql.sockに配置されます。
所定のパラメーター オプション
構成ファイル
mongosqld をYAML構成ファイルを使用して構成できます。このファイルには、次の選択肢に記載されている設定が含まれている場合があります。
注意
構成ファイルの展開ディレクティブを使用すると、外部から取得した構成値をロードすることができます。セキュリティ証明書やパスワードなどの機密情報はぼかして表示されます。
展開ディレクティブの使用の詳細については、MongoDB マニュアルの「外部ソースの構成ファイルの値」を参照してください。
ログ作成オプション
systemLog: logAppend: <boolean> logRotate: "rename"|"reopen" path: <string> quiet: <boolean> verbosity: <integer>
名前 | タイプ | 対応: |
|---|---|---|
ブール値 | ||
string | ||
string | ||
ブール値 | ||
integer |
スキーマ オプション
schema: path: <string> maxVarcharLength: <integer>
名前 | タイプ | 対応: |
|---|---|---|
string | ||
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>
名前 | タイプ | 対応: |
|---|---|---|
string | ||
string | ||
string | ||
integer | ||
ブール値 | ||
文字列または複数の文字列の配列 | ||
integer | ||
string |
ランタイム オプション
runtime: memory: maxPerStage: <integer> maxPerServer: <integer> maxPerConnection: <integer>
重要
BI Connector には、 mongosqldプロセスが MongoDB にクエリを送信するために使用可能なシステムメモリの量を制御するための次のオプションが用意されています。 これらの制限には、BI Connector がデータ構造のオーバーヘッドなどの他の目的で使用するメモリは含まれないため、BI Connector が使用するメモリの合計量はこれらのオプションで設定された制限よりも多くなります。
runtime.memory.maxPerServerタイプ: 整数
Default: unlimited
バージョン 2.5 の新機能。
mongosqldプロセスで使用可能な最大メモリ量をバイト単位で指定します。
runtime.memory.maxPerConnectionタイプ: 整数
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>
名前 | タイプ | 対応: | |
|---|---|---|---|
string | ホスト名コンポーネント バージョン2.2で変更: 複数の IP アドレスにバインドするには、カンマ区切りのリストを入力します。 以下に例を挙げます。 | ||
integer | ポート コンポーネント | ||
ブール値 | 次の逆: | ||
string | |||
string | |||
ブール値 | |||
string | |||
string | |||
string | |||
string | |||
string |
セキュリティ オプション
security: enabled: <boolean> defaultMechanism: <string> defaultSource: <string> gssapi: hostname: <string> serviceName: <string>
名前 | タイプ | 対応: |
|---|---|---|
ブール値 | ||
string | ||
string | ||
string | ||
string | ||
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>
名前 | タイプ | 対応: |
|---|---|---|
string | ||
string | ||
ブール値 | ||
ブール値 | ||
ブール値 | ||
string | ||
string | ||
string | ||
string | ||
ブール値 | ||
string | ||
string | ||
string | ||
string | ||
string | ||
string |
プロセス管理オプション
processManagement: service: name: <string> displayName: <string> description: <string>
名前 | タイプ | 対応: |
|---|---|---|
string | ||
string | ||
string |
所定のパラメーター オプション
setParameter: polymorphic_type_conversion_mode: <string> type_conversion_mode: <string>
名前 | タイプ | 対応: |
|---|---|---|
string | ||
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 内のすべてのドキュメントを調査するようになります。
次の例では、inventory.electronics 名前空間内のすべてのドキュメントに基づいてスキーマを構築するように mongosqldに指示しています。
mongosqld --sampleNamespaces inventory.electronics \ --sampleSize 0
スキーマを保持するデータベースの指定
スキーマ情報を格納するデータベースを指定するには、--schemaSource オプションを使用します。mongosqld がスキーマ データベースに書込み可能であるか、読み取りのみ可能であるかを指定するには、--schemaMode オプションを使用します。
次のサンプルコマンドでは、 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 で認証が有効な場合
mongosqld認証 が有効になっている状態で実行されている MongoDB インスタンスに接続するには、 オプションを使用して--auth MongoDB ユーザー認証情報を提供します。
次の例では、mongosqld の起動に使用する認証情報は、reportsUser という名前のユーザーのもので、reportsPass というパスワードが付属します。このユーザーには reports.inventory 名前空間へのアクセス権があります。
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 証明書、または自己署名の証明書を使用できます。自己署名証明書を使用する場合、通信チャネルは暗号化されますが、サーバーの身元は検証されません。そのため、接続の盗聴は防止できても、中間者攻撃(man-in-the-middle attack)に対しては脆弱なままになります。信頼できる認証局によって署名された証明書を使用すると、MySQL クライアントはサーバーの身元を確認できるようになります。
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 Connector で mysql クライアントを使用する方法の詳細については、「MySQL クライアントからの接続」を参照してください。
サンプリング モード参照チャート
以下のチャートでは、 mongosqld起動構成の種類と、それぞれで使用されるオプションについて説明します。
モード | mongosqld オプション | 動作 | |||
|---|---|---|---|---|---|
スタンドアロン スキーマ |
|
以下に例を挙げます。 詳細については、「スタンドアロン スキーマ モード(キャッシュされたサンプリング)」を参照してください。 | |||
カスタム スキーマ |
|
以下に例を挙げます。 | |||
Auto Schema |
| ユーザー指定のスキーマ データベースでスキーマ データをサンプリングして永続化します。 以下に例を挙げます。 詳細については、「自動スキーマ モード(MongoDB でのスキーマの永続化)」を参照してください。 |
無効な構成
次の mongosqld オプション構成は無効であり、起動時にエラーが発生します。
モード | mongosqld オプション | 動作 |
|---|---|---|
スタンドアロン ライター(無効) |
| |
クラスター化されたサンプリング リーダー(無効) |
| MongoDB レプリカセットまたはシャーディングされたクラスターで使用する場合、この構成は無効です。スキーマ データの保存用データベースが |