MySQL Shell 8.0  /  MySQL Shell の機能

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

第 1 章 MySQL Shell の機能

MySQL Shell では、次の機能を使用できます。

サポートされる言語

MySQL Shell は、JavaScript、Python および SQL で記述されたコードを処理します。 実行されたコードは、現在アクティブな言語に基づいて、これらの言語のいずれかとして処理されます。 \という接頭辞が付いた特定の MySQL Shell コマンドもあり、現在選択されている言語に関係なく MySQL Shell を構成できます。 詳細は、セクション3.1「MySQL Shell のコマンド」 を参照してください。

バージョン 8.0.18 から、MySQL Shell では Python 2.7 ではなく Python 3 が使用されます。 システムでサポートされている Python 3 のインストールを含むプラットフォームの場合、MySQL Shell では使用可能な最新バージョンが使用され、サポートされている最小バージョンの Python 3.6 が使用されます。 Python 3 が含まれていないプラットフォームの場合、MySQL Shell には Python 3.7.7 がバンドルされます。MySQL Shell は、Python 2.6 および Python 2.7 とのコード互換性を維持しているため、これらの古いバージョンのいずれかが必要な場合は、適切な Python バージョンを使用してソースから MySQL Shell をビルドできます。

対話型コードの実行

MySQL Shell には対話型コード実行モードが用意されており、ここで MySQL Shell プロンプトにコードを入力すると、入力した各ステートメントが処理され、処理の結果が画面に表示されます。 Unicode テキスト入力は、使用中の端末でサポートされている場合にサポートされます。 カラー端子がサポートされています。

コマンドを使用して複数行コードを記述し、MySQL Shell で複数行をキャッシュして単一のステートメントとして実行できます。 詳細は、複数行のサポート を参照してください。

バッチコード実行

MySQL Shell では、コードの対話型実行に加えて、様々なソースからコードを取得して処理することもできます。 この非対話的な方法でコードを処理する方法は、バッチ実行と呼ばれます。

バッチ実行モードは単一言語のスクリプト処理を目的としているため、フォーマットされていない出力を最小限に抑え、コマンドの実行を無効にすることに制限されます。 これらの制限を回避するには、対話型セッションであるかのように入力を実行するように MySQL Shell に指示する --interactive コマンドラインオプションを使用します。 このモードでは、各行が対話型セッションで入力されたかのように、入力は line by line で処理されます。 詳細は、セクション5.6「バッチコード実行」 を参照してください。

サポートされる API

MySQL Shell には、MySQL と対話するコードの開発に使用できる、JavaScript および Python に実装された次の API が含まれています。

  • AdminAPI を使用すると、MySQL インスタンスを管理し、それらを使用して InnoDB クラスタs、InnoDB ReplicaSets を作成し、MySQL Router を統合できます。InnoDB クラスタ は、InnoDB ベースの MySQL データベースを使用して高可用性およびスケーラビリティのための統合ソリューションを提供します。InnoDB クラスタ は、MySQL の高度な専門知識を必要とせずに Group Replication を使用するための代替ソリューションです。 同様に、InnoDB ReplicaSet を使用すると、非同期 GTID ベースのレプリケーションを実行する一連の MySQL インスタンスを管理できます。AdminAPI には、InnoDB クラスタ および InnoDB ReplicaSet との統合をできるだけ簡単にするために、MySQL Router のユーザーを構成する操作も用意されています。 第6章「MySQL AdminAPI の使用を参照してください。

  • X DevAPI を使用すると、MySQL Shell が X プロトコル を使用して MySQL サーバーに接続している場合に、開発者はリレーショナルデータとドキュメントデータの両方を操作できます。 詳細は、ドキュメントストアとしての MySQL の使用を参照してください。 X DevAPI の概念および使用方法のドキュメントは、X DevAPI User Guide を参照してください。

X プロトコル のサポート

MySQL Shell は、X プロトコル をサポートするすべての MySQL 製品に統合コマンドラインクライアントを提供するように設計されています。 MySQL Shell の開発機能は、X プロトコル を使用するセッション用に設計されています。MySQL Shell は、クラシック MySQL プロトコル を使用して、X プロトコル をサポートしていない MySQL Server に接続することもできます。 クラシック MySQL プロトコル を使用して作成されたセッションでは、X DevAPI の最小限の機能セットを使用できます。

拡張機能

MySQL Shell の基本機能に対する拡張機能は、レポートおよび拡張オブジェクトの形式で定義できます。 レポートおよび拡張オブジェクトは、JavaScript または Python を使用して作成でき、アクティブな MySQL Shell 言語に関係なく使用できます。 レポートおよび拡張機能オブジェクトは、MySQL Shell の起動時に自動的にロードされるプラグインに保持できます。MySQL Shell には、使用可能な組込みレポートがいくつか用意されています。 詳しくは第7章「MySQL Shell の拡張をご覧ください。

ユーティリティ

MySQL Shell には、MySQL を使用するための次のユーティリティが含まれています:

  • MySQL サーバーインスタンスのアップグレード準備ができているかどうかを検証するアップグレードチェッカユーティリティ。 util.checkForServerUpgrade() を使用してアップグレードチェッカにアクセスします。

  • JSON ドキュメントを MySQL Server コレクションまたはテーブルにインポートする JSON インポートユーティリティ。 util.importJSON() を使用してインポートユーティリティにアクセスします。

  • 単一のデータファイルを分割し、複数のスレッドを使用してチャンクを MySQL テーブルにロードするパラレルテーブルインポートユーティリティ。

詳しくは第8章「MySQL Shell ユーティリティをご覧ください。

API コマンドライン統合

MySQL Shell では、mysqlsh を他のツールと簡単に統合できる API コマンド構文を使用して、その機能の多くを公開しています。 たとえば、この機能を使用して InnoDB クラスタ を管理する bash スクリプトを作成できます。 REPL インタフェースをバイパスして操作を MySQL Shell グローバルオブジェクトに直接渡すには、mysqlsh [options] -- shell_object object_method [method_arguments]構文を使用します。 セクション5.8「API コマンドラインインタフェース」を参照してください。

出力形式

MySQL Shell は、結果をテーブル、タブ付きまたは垂直形式で、または JSON 出力として返すことができます。 MySQL Shell を外部ツールと統合するために、コマンドラインから MySQL Shell を起動するときに、すべての出力に対して JSON ラッピングをアクティブ化できます。 詳細は、セクション5.7「出力形式」 を参照してください。

ロギングおよびデバッグ

MySQL Shell では、選択した詳細レベルで実行プロセスに関する情報をログに記録できます。 ロギング情報は、アプリケーションログファイル、追加の表示可能な宛先およびコンソールの任意の組合せに送信できます。 詳細は、第9章「MySQL Shell のロギングおよびデバッグ を参照してください。

グローバルセッション

MySQL Shell では、MySQL Server インスタンスへの接続はセッションオブジェクトによって処理されます。 MySQL Shell の起動時またはその後に実行できる MySQL Server インスタンスへの最初の接続を行うと、この接続を表す session という名前の MySQL Shell グローバルオブジェクトが作成されます。 このセッションは、すべての MySQL Shell 実行モードで使用できるため、グローバルセッションと呼ばれます。 SQL モードでは、グローバルセッションはステートメントの実行に使用され、JavaScript モードおよび Python モードでは、session という名前のオブジェクトを介して使用できます。 mysqlx および mysql JavaScript および Python モジュールで使用可能な関数を使用してさらにセッションオブジェクトを作成し、これらのセッションオブジェクトのいずれかを session グローバルオブジェクトとして設定して、任意のモードで使用できます。 詳細は、セクション4.2「MySQL Shell セッション」を参照してください。