TiDB と ProxySQL を統合する
このドキュメントでは、ProxySQL の概要を説明し、 ProxySQL と TiDB を開発環境および本番環境で統合する方法を説明し、 クエリルーティングのシナリオによる主な統合の利点を示します。
TiDB と ProxySQL について詳しく知りたい場合は、次の便利なリンクを参照してください。
プロキシSQLとは何ですか?
プロキシSQLは、高性能のオープンソース SQL プロキシです。柔軟なアーキテクチャを備えており、さまざまな方法で導入できるため、さまざまなユースケースに最適です。たとえば、ProxySQL を使用すると、頻繁にアクセスされるデータをキャッシュすることでパフォーマンスを向上できます。
ProxySQL は、高速かつ効率的で使いやすいように最初から設計されています。 MySQL と完全な互換性があり、高品質の SQL プロキシに期待されるすべての機能をサポートします。さらに、ProxySQL には、幅広いアプリケーションにとって理想的な選択肢となる、多数の独自の機能が備わっています。
ProxySQL を統合する理由
- ProxySQL は、TiDB と対話する際のレイテンシーを短縮することで、アプリケーションのパフォーマンスを向上させるのに役立ちます。 Lambda などのサーバーレス関数を使用したスケーラブルなアプリケーションでワークロードが非決定的で急増する可能性がある場合や、大量のデータを読み込むクエリを実行するアプリケーションを構築している場合など、何を構築しているかに関係なく。 接続プーリングや頻繁に使用されるクエリのキャッシュなどの ProxySQL の強力な機能を活用することで、アプリケーションはすぐにメリットを得ることができます。
- ProxySQL は、ProxySQL で利用可能な構成が簡単な機能クエリルールを利用して、SQL インジェクションなどの SQL 脆弱性に対するアプリケーション セキュリティ保護の追加レイヤーとして機能します。
- プロキシSQLとTiDBは両方ともオープンソース プロジェクトであるため、ベンダー ロックインがゼロのメリットを得ることができます。
導入アーキテクチャ
ProxySQL を TiDB とともにデプロイする最も明白な方法は、アプリケーションレイヤーと TiDB の間にスタンドアロンの仲介者として ProxySQL を追加することです。ただし、スケーラビリティと耐障害性は保証されておらず、ネットワーク ホップによるレイテンシーも追加されます。これらの問題を回避するための代替デプロイメントアーキテクチャは、次のように ProxySQL をサイドカーとしてデプロイすることです。

ノート:
前述の図は参考用です。実際の展開アーキテクチャに応じてこれを調整する必要があります。
開発環境
このセクションでは、開発環境で TiDB を ProxySQL と統合する方法について説明します。 ProxySQL 統合を開始するには、 前提条件つをすべて準備した後、TiDB クラスターのタイプに応じて次のオプションのいずれかを選択できます。
- オプション 1: TiDB Cloudと ProxySQL を統合する
- オプション 2: TiDB (セルフホスト型) を ProxySQL と統合する
前提条件
選択したオプションに応じて、次のパッケージが必要になる場合があります。
以下のインストール手順に従ってください。
ダウンロードを選択して Docker を起動します (Docker デスクトップには既に Docker Compose が含まれています)。
次のコマンドを実行して、Python と
mysql-clientをインストールします。/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install python mysql-client
curl -fsSL https://get.docker.com | bash -s docker
yum install -y git python39 docker-ce docker-ce-cli containerd.io docker-compose-plugin mysql
systemctl start docker
Git をダウンロードしてインストールします。
Git Windowsのダウンロードページから64 ビット Git for Windows セットアップパッケージをダウンロードします。
セットアップ ウィザードに従って Git パッケージをインストールします。 「次へ」を数回クリックして、デフォルトのインストール設定を使用できます。

MySQL シェルをダウンロードしてインストールします。
MySQL インストーラーの ZIP ファイルをMySQL コミュニティ サーバーのダウンロードページからダウンロードします。
ファイルを解凍し、
binフォルダー内のmysql.exeを見つけます。binフォルダーのパスをシステム変数に追加し、それを Git Bash のPATH変数に設定する必要があります。echo 'export PATH="(your bin folder)":$PATH' >>~/.bash_profile source ~/.bash_profile例えば:
echo 'export PATH="/c/Program Files (x86)/mysql-8.0.31-winx64/bin":$PATH' >>~/.bash_profile source ~/.bash_profile
Dockerをダウンロードしてインストールします。
ドッカーのダウンロードページからDocker Desktopインストーラーをダウンロードします。
インストーラーをダブルクリックして実行します。インストールが完了すると、再起動を求めるメッセージが表示されます。

Pythonのダウンロードページから最新の Python 3 インストーラーをダウンロードして実行します。
オプション 1: TiDB Cloudと ProxySQL を統合する
この統合では、 ProxySQL Docker イメージ TiDB サーバーレス クラスターとともに使用します。次の手順では、ポート16033に ProxySQL をセットアップするため、このポートが使用可能であることを確認してください。
ステップ 1. TiDB サーバーレスクラスターを作成する
無料の TiDB サーバーレス クラスターを作成する 。クラスターに設定した root パスワードを覚えておいてください。
後で使用するためにクラスターのホスト名、ポート、およびユーザー名を取得します。
- クラスターページで、クラスター名をクリックしてクラスターの概要ページに移動します。
- クラスターの概要ページで、 [接続]ペインを見つけて、
Endpoint、Port、およびUserフィールドをコピーします。ここで、Endpointはクラスターのホスト名です。
ステップ 2. ProxySQL 構成ファイルを生成する
TiDB と ProxySQL の統合サンプルコードリポジトリをクローンします。
git clone https://github.com/pingcap-inc/tidb-proxysql-integration.gitgit clone https://github.com/pingcap-inc/tidb-proxysql-integration.gitgit clone https://github.com/pingcap-inc/tidb-proxysql-integration.gittidb-cloud-connectフォルダーに変更します。cd tidb-proxysql-integration/example/tidb-cloud-connectcd tidb-proxysql-integration/example/tidb-cloud-connectcd tidb-proxysql-integration/example/tidb-cloud-connectproxysql-config.pyを実行して ProxySQL 構成ファイルを生成します。python3 proxysql-config.pypython3 proxysql-config.pypython proxysql-config.pyプロンプトが表示されたら、クラスターのエンドポイントを
Serverless Tier Hostに入力し、クラスターのユーザー名とパスワードを入力します。以下は出力例です。現在の
tidb-cloud-connectフォルダーの下に 3 つの構成ファイルが生成されていることがわかります。[Begin] generating configuration files.. tidb-cloud-connect.cnf generated successfully. proxysql-prepare.sql generated successfully. proxysql-connect.py generated successfully. [End] all files generated successfully and placed in the current folder.
ステップ 3. ProxySQL を構成する
Dockerを起動します。 Docker がすでに起動している場合は、この手順をスキップしてください。
インストールしたDockerのアイコンをダブルクリックして起動します。
systemctl start dockerインストールしたDockerのアイコンをダブルクリックして起動します。
ProxySQL イメージをプルし、バックグラウンドで ProxySQL コンテナを起動します。
docker compose up -ddocker compose up -ddocker compose up -d次のコマンドを実行して ProxySQL と統合します。これにより、 ProxySQL Admin Interface内で
proxysql-prepare.sqlが実行されます。docker compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"docker compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"docker compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"ノート:
proxysql-prepare.sqlスクリプトは次のことを行います。- クラスターのユーザー名とパスワードを使用してユーザーを追加します。
- ユーザーを監視アカウントに割り当てます。
- TiDB サーバーレス クラスターをホストのリストに追加します。
- ProxySQL と TiDB サーバーレス クラスター間の安全な接続を有効にします。
より深く理解するには、
proxysql-prepare.sqlファイルを確認することを強くお勧めします。 ProxySQL 構成の詳細については、 ProxySQL ドキュメントを参照してください。以下は出力例です。クラスターのホスト名が出力に表示されていることがわかります。これは、ProxySQL と TiDB サーバーレス クラスター間の接続が確立されていることを意味します。
*************************** 1. row *************************** hostgroup_id: 0 hostname: gateway01.us-west-2.prod.aws.tidbcloud.com port: 4000 gtid_port: 0 status: ONLINE weight: 1 compression: 0 max_connections: 1000 max_replication_lag: 0 use_ssl: 1 max_latency_ms: 0 comment:
ステップ 4. ProxySQL を介して TiDB クラスターに接続する
TiDB クラスターに接続するには、
proxysql-connect.pyを実行します。スクリプトは MySQL クライアントを自動的に起動し、 ステップ2で指定したユーザー名とパスワードを接続に使用します。python3 proxysql-connect.pypython3 proxysql-connect.pypython proxysql-connect.pyTiDB クラスターに接続した後、次の SQL ステートメントを使用して接続を検証できます。
SELECT VERSION();TiDB バージョンが表示されたら、ProxySQL を介して TiDB サーバーレス クラスターに正常に接続されています。 MySQL クライアントをいつでも終了するには、
quit入力してEnterを押します。ノート:
デバッグの場合:クラスターに接続できない場合は、ファイル
tidb-cloud-connect.cnf、proxysql-prepare.sql、およびproxysql-connect.pyを確認してください。指定したサーバー情報が利用可能であり、正しいことを確認してください。コンテナを停止して削除し、前のディレクトリに移動するには、次のコマンドを実行します。
docker compose down cd -docker compose down cd -docker compose down cd -
オプション 2: TiDB (セルフホスト型) を ProxySQL と統合する
この統合では、 Docker イメージTiDBとプロキシSQLを使用して環境をセットアップします。自分の興味に合わせてTiDB をインストールする他の方法 (セルフホスト型)を試してみることをお勧めします。
次の手順では、ProxySQL と TiDB をポート6033と4000にそれぞれセットアップするため、これらのポートが使用可能であることを確認してください。
Dockerを起動します。 Docker がすでに起動している場合は、この手順をスキップしてください。
インストールしたDockerのアイコンをダブルクリックして起動します。
systemctl start dockerインストールしたDockerのアイコンをダブルクリックして起動します。
TiDB と ProxySQL の統合サンプルコードリポジトリをクローンします。
git clone https://github.com/pingcap-inc/tidb-proxysql-integration.gitgit clone https://github.com/pingcap-inc/tidb-proxysql-integration.gitgit clone https://github.com/pingcap-inc/tidb-proxysql-integration.gitProxySQL と TiDB の最新イメージをプルします。
cd tidb-proxysql-integration && docker compose pullcd tidb-proxysql-integration && docker compose pullcd tidb-proxysql-integration && docker compose pullTiDB と ProxySQL の両方をコンテナーとして実行して、統合環境を開始します。
docker compose up -ddocker compose up -ddocker compose up -dProxySQL
6033ポートにログインするには、rootユーザー名と空のパスワードを使用できます。ProxySQL 経由で TiDB に接続します。
mysql -u root -h 127.0.0.1 -P 6033mysql -u root -h 127.0.0.1 -P 6033mysql -u root -h 127.0.0.1 -P 6033TiDB クラスターに接続した後、次の SQL ステートメントを使用して接続を検証できます。
SELECT VERSION();TiDB バージョンが表示されたら、ProxySQL を介して TiDB コンテナに正常に接続されています。
コンテナを停止して削除し、前のディレクトリに移動するには、次のコマンドを実行します。
docker compose down cd -docker compose down cd -docker compose down cd -
本番環境
本番環境では、フルマネージド エクスペリエンスを得るためにTiDB Cloud直接使用することをお勧めします。
前提条件
MySQL クライアントをダウンロードしてインストールします。たとえば、 MySQL シェル 。
TiDB Cloudと CentOS 上の ProxySQL を統合する
ProxySQL はさまざまなプラットフォームにインストールできます。以下では CentOS を例に説明します。
サポートされているプラットフォームと対応するバージョン要件の完全なリストについては、 ProxySQL ドキュメントを参照してください。
ステップ 1. TiDB 専用クラスターを作成する
詳細な手順については、 TiDBクラスタを作成するを参照してください。
ステップ 2. ProxySQL をインストールする
ProxySQL を YUM リポジトリに追加します。
cat > /etc/yum.repos.d/proxysql.repo << EOF [proxysql] name=ProxySQL YUM repository baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/centos/\$releasever gpgcheck=1 gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key EOFProxySQL をインストールします。
yum install -y proxysqlProxySQL を開始します。
systemctl start proxysql
ProxySQL のサポートされているプラットフォームとそのインストールの詳細については、 ProxySQL の READMEまたはProxySQL のインストールに関するドキュメントを参照してください。
ステップ 3. ProxySQL を構成する
ProxySQL を TiDB のプロキシとして使用するには、ProxySQL を構成する必要があります。これを行うには、 ProxySQL 管理インターフェイス内で SQL ステートメントを実行する (推奨) または設定ファイルを使用します。
ノート:
次のセクションでは、ProxySQL の必要な構成項目のみをリストします。構成の包括的なリストについては、 ProxySQL ドキュメントを参照してください。
オプション 1: 管理インターフェイスを使用して ProxySQL を構成する
標準の ProxySQL 管理インターフェイスを使用して ProxySQL の内部を再構成します。これは、MySQL コマンド ライン クライアント (デフォルトでポート
6032で利用可能) 経由でアクセスできます。mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt 'ProxySQL Admin> '上記の手順により、ProxySQL 管理プロンプトが表示されます。
使用する TiDB クラスターを構成します。ここで、1 つまたは複数の TiDB クラスターを ProxySQL に追加できます。たとえば、次のステートメントは TiDB 専用クラスターを 1 つ追加します。
<tidb cloud dedicated cluster host>と<tidb cloud dedicated cluster port>TiDB Cloudエンドポイントとポートに置き換える必要があります (デフォルトのポートは4000)。INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES ( 0, '<tidb cloud dedicated cluster host>', <tidb cloud dedicated cluster port> ); LOAD mysql servers TO runtime; SAVE mysql servers TO DISK;ノート:
hostgroup_id: ホストグループのIDを指定します。 ProxySQL はホストグループを使用してクラスターを管理します。 SQL トラフィックをこれらのクラスターに均等に分散するには、同じホストグループへの負荷分散が必要な複数のクラスターを構成できます。読み取りおよび書き込み目的などでクラスターを区別するには、異なるホストグループを使用するようにクラスターを構成できます。hostname: TiDB クラスターのエンドポイント。port: TiDB クラスターのポート。
プロキシ ログイン ユーザーを構成して、ユーザーが TiDB クラスターに対する適切な権限を持っていることを確認します。以下のステートメントでは、「 tidb cloud dedicated Cluster username 」と「 tidb cloud dedicated clusta passwd 」を、クラスターの実際のユーザー名とパスワードに置き換える必要があります。
INSERT INTO mysql_users( username, password, active, default_hostgroup, transaction_persistent ) VALUES ( '<tidb cloud dedicated cluster username>', '<tidb cloud dedicated cluster password>', 1, 0, 1 ); LOAD mysql users TO runtime; SAVE mysql users TO DISK;ノート:
username: TiDB ユーザー名。password: TiDB パスワード。active: ユーザーがアクティブかどうかを制御します。1ユーザーがアクティブでログインに使用できることを示し、0ユーザーが非アクティブであることを示します。default_hostgroup: ユーザーが使用するデフォルトのホストグループ。クエリ ルールによって特定のホストグループへのトラフィックがオーバーライドされない限り、SQL トラフィックが分散されます。transaction_persistent:1永続的なトランザクションを示します。ユーザーが接続内でトランザクションを開始すると、トランザクションがコミットまたはロールバックされるまで、すべてのクエリ ステートメントが同じホストグループにルーティングされます。
オプション 2: 構成ファイルを使用して ProxySQL を構成する
このオプションは、ProxySQL を構成するための代替方法としてのみ考慮してください。詳細については、 構成ファイルによる ProxySQL の構成を参照してください。
既存の SQLite データベース (構成が内部に保存されているデータベース) を削除します。
rm /var/lib/proxysql/proxysql.db必要に応じて構成ファイル
/etc/proxysql.cnfを変更します。例えば:mysql_servers: ( { address="<tidb cloud dedicated cluster host>" port=<tidb cloud dedicated cluster port> hostgroup=0 max_connections=2000 } ) mysql_users: ( { username = "<tidb cloud dedicated cluster username>" password = "<tidb cloud dedicated cluster password>" default_hostgroup = 0 max_connections = 1000 default_schema = "test" active = 1 transaction_persistent = 1 } )前の例では次のようになります。
addressおよびport: TiDB Cloudクラスターのエンドポイントとポートを指定します。usernameおよびpassword: TiDB Cloudクラスターのユーザー名とパスワードを指定します。
ProxySQL を再起動します。
systemctl restart proxysql再起動後、SQLite データベースが自動的に作成されます。
典型的なシナリオ
このセクションでは、クエリ ルーティングを例として、ProxySQL と TiDB を統合することで活用できる利点のいくつかを示します。
クエリルール
データベースは、高トラフィック、欠陥のあるコード、または悪意のあるスパムによって過負荷になる可能性があります。 ProxySQL のクエリ ルールを使用すると、クエリの再ルーティング、書き換え、または拒否により、これらの問題に迅速かつ効果的に対応できます。

ノート:
次の手順では、TiDB と ProxySQL のコンテナ イメージを使用してクエリ ルールを構成します。まだ引いていない場合は、 統合セクション参照して詳細な手順を確認してください。
TiDB と ProxySQL の統合サンプルコードリポジトリをクローンします。前の手順ですでにクローンを作成している場合は、この手順をスキップしてください。
git clone https://github.com/pingcap-inc/tidb-proxysql-integration.gitgit clone https://github.com/pingcap-inc/tidb-proxysql-integration.gitgit clone https://github.com/pingcap-inc/tidb-proxysql-integration.gitProxySQL ルールのサンプル ディレクトリに移動します。
cd tidb-proxysql-integration/example/proxy-rule-admin-interfacecd tidb-proxysql-integration/example/proxy-rule-admin-interfacecd tidb-proxysql-integration/example/proxy-rule-admin-interface次のコマンドを実行して、2 つの TiDB コンテナと 1 つの ProxySQL コンテナを起動します。
docker compose up -ddocker compose up -ddocker compose up -dすべてがうまくいけば、次のコンテナが開始されます。
- ポート
4001、4002経由で公開される TiDB クラスターの 2 つの Docker コンテナー - ポート
6034経由で公開される 1 つの ProxySQL Docker コンテナ。
- ポート
2 つの TiDB コンテナーでは、
mysqlを使用して同様のスキーマ定義を持つテーブルを作成し、異なるデータ ('tidb-server01-port-4001'、'tidb-server02-port-4002') を挿入してこれらのコンテナーを識別します。mysql -u root -h 127.0.0.1 -P 4001 << EOF DROP TABLE IF EXISTS test.tidb_server; CREATE TABLE test.tidb_server (server_name VARCHAR(255)); INSERT INTO test.tidb_server (server_name) VALUES ('tidb-server01-port-4001'); EOF mysql -u root -h 127.0.0.1 -P 4002 << EOF DROP TABLE IF EXISTS test.tidb_server; CREATE TABLE test.tidb_server (server_name VARCHAR(255)); INSERT INTO test.tidb_server (server_name) VALUES ('tidb-server02-port-4002'); EOFmysql -u root -h 127.0.0.1 -P 4001 << EOF DROP TABLE IF EXISTS test.tidb_server; CREATE TABLE test.tidb_server (server_name VARCHAR(255)); INSERT INTO test.tidb_server (server_name) VALUES ('tidb-server01-port-4001'); EOF mysql -u root -h 127.0.0.1 -P 4002 << EOF DROP TABLE IF EXISTS test.tidb_server; CREATE TABLE test.tidb_server (server_name VARCHAR(255)); INSERT INTO test.tidb_server (server_name) VALUES ('tidb-server02-port-4002'); EOFmysql -u root -h 127.0.0.1 -P 4001 << EOF DROP TABLE IF EXISTS test.tidb_server; CREATE TABLE test.tidb_server (server_name VARCHAR(255)); INSERT INTO test.tidb_server (server_name) VALUES ('tidb-server01-port-4001'); EOF mysql -u root -h 127.0.0.1 -P 4002 << EOF DROP TABLE IF EXISTS test.tidb_server; CREATE TABLE test.tidb_server (server_name VARCHAR(255)); INSERT INTO test.tidb_server (server_name) VALUES ('tidb-server02-port-4002'); EOF次のコマンドを実行して ProxySQL を構成します。これにより、ProxySQL 管理インターフェイス内で
proxysql-prepare.sql実行され、TiDB コンテナと ProxySQL の間にプロキシ接続が確立されます。docker compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"docker compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"docker compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"ノート:
proxysql-prepare.sqlは次のことを行います。- ProxySQL に TiDB クラスターを
hostgroup_idを0および1として追加します。 - 空のパスワードを持つユーザー
rootを追加し、default_hostgroupを0に設定します。 - ルール
^SELECT.*FOR UPDATE$をrule_idを1として、destination_hostgroup0として追加します。 SQL ステートメントがこのルールに一致する場合、リクエストはhostgroupを0として TiDB クラスターに転送されます。 - ルール
^SELECTをrule_idを2として、destination_hostgroup1として追加します。 SQL ステートメントがこのルールに一致する場合、リクエストはhostgroupを1として TiDB クラスターに転送されます。
より深く理解するには、
proxysql-prepare.sqlファイルを確認することを強くお勧めします。 ProxySQL 構成の詳細については、 ProxySQL ドキュメントを参照してください。以下は、ProxySQL パターンがクエリ ルールとどのように一致するかに関する追加情報です。
- ProxySQL は、
rule_idの昇順でルールを 1 つずつ照合しようとします。 ^記号は SQL ステートメントの先頭に一致し、$最後に一致します。
ProxySQL の正規表現とパターン マッチングの詳細については、ProxySQL ドキュメントのmysql-query_processor_regexを参照してください。
パラメータの完全なリストについては、ProxySQL ドキュメントのmysql_query_rulesを参照してください。
- ProxySQL に TiDB クラスターを
構成を検証し、クエリ ルールが機能するかどうかを確認します。
ProxySQL MySQL インターフェイスに
rootユーザーとしてログインします。mysql -u root -h 127.0.0.1 -P 6034mysql -u root -h 127.0.0.1 -P 6034mysql -u root -h 127.0.0.1 -P 6034次の SQL ステートメントを実行します。
SELECTステートメントを実行します。SELECT * FROM test.tidb_server;このステートメントは、rule_id
2と一致し、ステートメントをhostgroup 1の TiDB クラスターに転送します。SELECT ... FOR UPDATEステートメントを実行します。SELECT * FROM test.tidb_server FOR UPDATE;このステートメントは、rule_id
1と一致し、ステートメントをhostgroup 0の TiDB クラスターに転送します。トランザクションを開始します。
BEGIN; INSERT INTO test.tidb_server (server_name) VALUES ('insert this and rollback later'); SELECT * FROM test.tidb_server; ROLLBACK;このトランザクションでは、
BEGINステートメントはどのルールにも一致しません。デフォルトのホストグループ (この例ではhostgroup 0) が使用されます。 ProxySQL はデフォルトでユーザーtransaction_persistent を有効にし、同じホストグループ内の同じトランザクション内のすべてのステートメントを実行するため、INSERTとSELECT * FROM test.tidb_server;ステートメントも TiDB クラスターhostgroup 0に転送されます。
以下は出力例です。同様の出力が得られた場合は、ProxySQL を使用してクエリ ルールが正常に構成されています。
+-------------------------+ | server_name | +-------------------------+ | tidb-server02-port-4002 | +-------------------------+ +-------------------------+ | server_name | +-------------------------+ | tidb-server01-port-4001 | +-------------------------+ +--------------------------------+ | server_name | +--------------------------------+ | tidb-server01-port-4001 | | insert this and rollback later | +--------------------------------+MySQL クライアントをいつでも終了するには、
quit入力してEnterを押します。
コンテナを停止して削除し、前のディレクトリに移動するには、次のコマンドを実行します。
docker compose down cd -docker compose down cd -docker compose down cd -