MySQL Shell 8.0  /  MySQL Shell コードの実行  /  API コマンドラインインタフェース

このページは機械翻訳したものです。

5.8 API コマンドラインインタフェース

MySQL Shell では、mysqlsh を他のツールと簡単に統合できる API コマンド構文を使用して、その機能の多くを公開しています。 この機能は --execute オプションの使用と似ていますが、コマンドインタフェースでは簡略化された引数構文が使用され、端末で必要になる可能性のある引用符およびエスケープが削減されます。 たとえば、bash スクリプトを使用して InnoDB クラスタ を作成する場合は、この機能を使用できます。

次の組込み MySQL Shell グローバルオブジェクトを使用できます:

  • session - 現在のグローバルセッションを表します。

  • db - デフォルトデータベースが指定された X プロトコル 接続を使用してグローバルセッションが確立された場合、そのセッションのデフォルトデータベースを表します。

  • cluster - InnoDB クラスタ を表します。

  • dba - AdminAPI を使用した InnoDB クラスタ管理機能へのアクセスを提供します。 第6章「MySQL AdminAPI の使用を参照してください。

  • shell - global は、MySQL Shell オプションを構成するための shell.options (セクション10.4「MySQL Shell オプションの構成」 を参照)、および MySQL Shell レポートを実行するための shell.reports (セクション7.1「MySQL Shell でのレポート」 を参照) などの MySQL Shell 機能へのアクセスを提供します。

  • util - MySQL Shell ユーティリティへのアクセスを提供します。 第8章「MySQL Shell ユーティリティを参照してください。

API コマンドライン統合構文

次の特別な構文を使用してコマンドラインで MySQL Shell を起動すると、-- はオプションのリストの最後と、コマンドおよびその引数として扱われた後のすべてを示します。

mysqlsh [options] -- shell_object object_method [arguments]

ここで、次のことが適用されます:

  • shell_object は、MySQL Shell グローバルオブジェクトにマップされる文字列です。

  • object_method は、shell_object によって提供されるメソッドの名前です。 メソッド名は、JavaScript、Python または代替コマンドライン入力のフレンドリ形式のいずれかに従って指定できます。既知のメソッドはすべて小文字を使用し、単語はハイフンで区切られます。 object_method の名前は、標準の JavaScript スタイルの camelCase 名から自動的に変換されます。この場合、大/小文字の変更はすべて - に置き換えられ、小文字になります。 たとえば、getClusterget-cluster になります。

  • arguments は、コール時に object_method に渡される引数です。

shell_object は公開されたグローバルオブジェクトのいずれかと一致する必要があり、object_method は有効な形式 (JavaScript、Python またはコマンドライン対応) のいずれかのグローバルオブジェクトメソッドと一致する必要があります。 有効なグローバルオブジェクトとそのメソッドに対応していない場合、MySQL Shell はステータス 10 で終了します。

API コマンドライン統合引数の構文

arguments リストはオプションで、すべての引数は、このセクションで説明するコマンドラインでの使用に適した構文に従う必要があります。 たとえば、システムシェル (bashcmd など) によって処理される特殊文字は避けてください。引用符が必要な場合は、親シェルの引用符のみを考慮するようにしてください。 つまり、foo barbash でパラメータとして使用されている場合、引用符は削除され、エスケープが処理されます。

引数のリストでは、2 つのタイプの引数を使用できます: 位置指定引数と名前付き引数。 位置引数は、文字列、数値、ブール、null などの単純な型です。 名前付き引数はキーと値のペアで、値は単純な型です。 使用方法は、次のパターンに従う必要があります:

[ positional_argument ]* [ { named_argument* } ]* [ named_argument ]*

この構文を使用するためのルールは次のとおりです:

  • 構文のすべての部分はオプションであり、任意の順序で指定できます

  • 中カッコのネストは禁止されています

  • 名前付き引数として指定するすべてのキー値は、スコープ内で一意の名前を持つ必要があります。 スコープは、グループ化されていないか、グループ内 (中カッコ内) にあります。

これらの引数は、次の方法でメソッドコールに渡される引数に変換されます:

  • グループ化されていない名前付き引数はすべて、それらが出現する場所に関係なく単一のディクショナリに結合され、最後のパラメータとしてメソッドに渡されます

  • 中カッコ内にグループ化された名前付き引数は、単一のディクショナリに結合されます

  • グループ化された名前付き引数によって生成された位置指定引数およびディクショナリは、コマンドラインに表示された順序で arguments リストに挿入されます

API インタフェースの例

API 統合を使用すると、--execute オプションを使用するよりも、MySQL Shell コマンドをコールする方が簡単で扱いにくくなります。 次の例では、この機能の使用方法を示します:

  • サーバーインスタンスがアップグレードに適していることを確認し、その後の処理のために結果を JSON として返すには:

    $ mysqlsh -- util check-for-server-upgrade { --user=root --host=localhost --port=3301 } --password='password' --outputFormat=JSON --config-path=/etc/mysql/my.cnf

    これは、MySQL Shell の同等のコマンドにマップされます:

    mysql-js> util.checkForServerUpgrade({user:'root', host:'localhost', port:3301}, {password:'password', outputFormat:'JSON', configPath:'/etc/mysql/my.cnf'})
  • InnoDB クラスタ サンドボックスインスタンスをデプロイするには、ポート 1234 でリスニングし、接続に使用するパスワードを指定します:

    $ mysqlsh -- dba deploy-sandbox-instance 1234 --password=password

    これは、MySQL Shell の同等のコマンドにマップされます:

    mysql-js> dba.deploySandboxInstance(1234, {password: password})
  • ポート 1234 でリスニングし、mycluster という名前を指定してサンドボックスインスタンスを使用して InnoDB クラスタ を作成するには:

    $ mysqlsh root@localhost:1234 -- dba create-cluster mycluster

    これは、MySQL Shell の同等のコマンドにマップされます:

    mysql-js> dba.createCluster('mycluster')
  • ポート 1234 でリスニングしているサンドボックスインスタンスを使用して InnoDB クラスタ のステータスを確認するには:

    $ mysqlsh root@localhost:1234 -- cluster status

    これは、MySQL Shell の同等のコマンドにマップされます:

    mysql-js> cluster.status()
  • コマンド履歴をオンにするように MySQL Shell を構成するには:

    $ mysqlsh -- shell.options set_persist history.autoSave true

    これは、MySQL Shell の同等のコマンドにマップされます:

    mysql-js> shell.options.set_persist('history.autoSave', true);