MySQL サービスの設定
この mysql
サービスは以下に基づいて永続的なデータストレージを提供 MariaDB バージョン 10.2 ~ 10.4、 XtraDB ストレージエンジンと、MySQL 5.6 および 5.7 の機能を再実装。
MariaDB 10.4 でのインデックス再作成は、他の MariaDB または MySQL バージョンに比べて時間がかかります。 参照: インデクサー が含まれる パフォーマンスのベストプラクティス ガイド。
Pro 統合環境およびスターター環境でのサービス設定については、以下の手順に従ってください。 master
分岐。
MySQL を有効にするには:
-
必要な名前、タイプ、ディスク値(MB 単位)をに追加します
.magento/services.yaml
ファイル。code language-yaml mysql: type: mysql:<version> disk: 5120
note tip TIP MySQL エラー(など) PDO Exception: MySQL server has gone away
ディスク容量が不足した結果、が発生する場合があります。 のサービスに十分なディスク領域が割り当てられていることを確認します。.magento/services.yaml
ファイル。 -
での関係の設定
.magento.app.yaml
ファイル。code language-yaml relationships: database: "mysql:mysql"
-
コードの変更を追加、コミット、プッシュします。
code language-bash git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name>
services.yaml
および .magento.app.yaml
設定ファイル。 参照: サービスバージョンの変更 サービスのアップグレードまたはダウングレードのガイダンス。MySQL データベースの設定
MySQL データベースを設定する際には、次のオプションがあります。
schemas
- スキーマはデータベースを定義します。 デフォルトのスキーマはmain
データベース。endpoints
– 各エンドポイントは、特定の権限を持つ資格情報を表します。 デフォルトのエンドポイントはです。mysql
、次を持つadmin
アクセス (への)main
データベース。properties
- プロパティを使用して、追加のデータベース構成を定義します。
以下は、の基本的な設定例です .magento/services.yaml
ファイル:
mysql:
type: mysql:10.4
disk: 5120
configuration:
properties:
optimizer_switch: "rowid_filter=off"
optimizer_use_condition_selectivity: 1
この properties
上記の例では、デフォルトを変更します optimizer
の設定 パフォーマンスのベストプラクティスガイドで推奨.
MariaDB 設定オプション:
default_charset
default_collation
max_allowed_packet
1
対象: 100
.optimizer_switch
optimizer_use_condition_selectivity
複数のデータベースユーザーの設定
オプションで、へのアクセスに関する異なる権限を持つ複数のユーザーを設定できます main
データベース。
デフォルトでは、という名前のエンドポイントが 1 つあります。 mysql
データベースへの管理者アクセス権を持つ。 複数のデータベースユーザーを設定するには、で複数のエンドポイントを定義する必要があります。 services.yaml
ファイルに関係を記述し、で関係を宣言します .magento.app.yaml
ファイル。 ステージング環境および実稼動環境の場合は、 Adobe Commerce サポートチケットを送信 追加のユーザーをリクエストします。
ネストされた配列を使用して、特定のユーザーアクセスのエンドポイントを定義します。 各エンドポイントは、1 つ以上のスキーマ(データベース)へのアクセスと、それぞれに対する異なるレベルの権限を指定できます。
有効な権限レベルは次のとおりです。
ro
:SELECT クエリのみ使用できます。rw
:SELECT クエリと INSERT クエリ、UPDATE クエリ、DELETEクエリを使用できます。admin
:DDL クエリ(CREATE TABLE、DROP TABLE など)を含め、すべてのクエリが許可されます。
例:
mysql:
type: mysql:10.4
disk: 5120
configuration:
schemas:
- main
endpoints:
admin:
default_schema: main
privileges:
main: admin
reporter:
privileges:
main: ro
importer:
privileges:
main: rw
properties:
optimizer_switch: "rowid_filter=off"
optimizer_use_condition_selectivity: 1
前述の例では、 admin
エンドポイントは、への管理者レベルのアクセスを提供します main
データベース、 reporter
エンドポイントは、読み取り専用アクセスを提供し、 importer
エンドポイントは、読み取り/書き込みアクセスを提供します。つまり、
- この
admin
ユーザーはデータベースを完全に制御できます。 - この
reporter
ユーザーは SELECT 権限のみ持っています。 - この
importer
ユーザーは、SELECT、INSERT、UPDATE およびDELETE権限を持っています。
上記の例で定義したエンドポイントを、 relationships
のプロパティ .magento.app.yaml
ファイル。 例:
relationships:
database: "mysql:admin"
databasereporter: "mysql:reporter"
databaseimporter: "mysql:importer"
DEFINER
ストアド・プロシージャとビューのアクセス制御メカニズム。データベースへの接続
MariaDB データベースに直接アクセスするには、SSH を使用してリモート クラウド環境にログインし、データベースに接続する必要があります。
-
SSH を使用してリモート環境にログインします。
code language-bash magento-cloud ssh
-
から MySQL ログイン資格情報を取得する
database
およびtype
のプロパティ $CLOUD_RELATIONSHIPS$MAGENTO 変数。code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
または
code language-bash php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
応答で、MySQL 情報を見つけます。 例:
code language-json "database" : [ { "password" : "", "rel" : "mysql", "hostname" : "nnnnnnnn.mysql.service._.magentosite.cloud", "service" : "mysql", "host" : "database.internal", "ip" : "###.###.###.###", "port" : 3306, "path" : "main", "cluster" : "projectid-integration-id", "query" : { "is_master" : true }, "type" : "mysql:10.3", "username" : "user", "scheme" : "mysql" } ],
-
データベースに接続します。
-
スターターの場合は、次のコマンドを使用します。
code language-bash mysql -h database.internal -u <username>
-
Pro の場合は、次のコマンドを、から取得したホスト名、ポート番号、ユーザー名、パスワードと共に使用します。
$MAGENTO_CLOUD_RELATIONSHIPS
変数。code language-bash mysql -h <hostname> -P <number> -u <username> -p'<password>'
-
magento-cloud db:sql
リモート・データベースに接続して SQL コマンドを実行するコマンド。セカンダリ データベースに接続する
場合によっては、データベースのパフォーマンスを向上させたり、データベース ロックの問題を解決するために、セカンダリ データベースに接続する必要があります。 この設定が必要な場合は、 "port" : 3304
接続を確立します。 を参照してください。 MySQL スレーブ接続を設定するためのベストプラクティス のトピック 実装のベストプラクティス ガイド。
トラブルシューティング
MySQL の問題のトラブルシューティングについては、次のAdobe Commerce サポートの記事を参照してください。