MySQL サービスの設定
mysql サービスは、MariaDB バージョン 10.2から10.4に基づいて永続的なデータストレージを提供し、XtraDB ストレージエンジンをサポートし、MySQL 5.6および5.7の機能を再実装しました。
MariaDB 10.4でのインデックス再作成は、他のMariaDBまたはMySQL バージョンと比較してより多くの時間がかかります。 「パフォーマンスのベストプラクティス」ガイドの「 インデクサー」を参照してください。
master ブランチを含むPro統合環境およびスターター環境でのサービス設定については、次の手順を使用します。
MySQLを有効にするには:
-
必要な名前、タイプ、およびディスク値(MB単位)を
.magento/services.yamlファイルに追加します。code language-yaml mysql: type: mysql:<version> disk: 5120note tip TIP ディスク領域が不足しているため、 PDO Exception: MySQL server has gone awayなどのMySQL エラーが発生する可能性があります。.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で、mainデータベースへのadminアクセス権があります。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_charsetdefault_collationmax_allowed_packet1 ~ 100。optimizer_switchoptimizer_use_condition_selectivity複数のデータベース・ユーザーの設定
必要に応じて、main データベースにアクセスするための異なる権限を持つ複数のユーザーを設定できます。
デフォルトでは、データベースへの管理者アクセス権を持つmysqlという名前のエンドポイントが1つあります。 複数のデータベースユーザーを設定するには、services.yaml ファイルで複数のエンドポイントを定義し、.magento.app.yaml ファイルで関係を宣言する必要があります。 Pro ステージング環境および実稼動環境の場合は、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権限があります。
上記の例で定義されたエンドポイントを.magento.app.yaml ファイルのrelationships プロパティに追加します。 例:
relationships:
database: "mysql:admin"
databasereporter: "mysql:reporter"
databaseimporter: "mysql:importer"
DEFINER アクセス制御メカニズムを使用することはできません。データベースへの接続
MariaDB データベースに直接アクセスするには、SSHを使用してリモートクラウド環境にログインし、データベースに接続する必要があります。
-
SSHを使用してリモート環境にログインします。
code language-bash magento-cloud ssh -
$MAGENTO_CLOUD_RELATIONSHIPS変数の
databaseおよびtypeプロパティからMySQL ログイン資格情報を取得します。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" } ], -
データベースに接続します。
-
Starterには、次のコマンドを使用します。
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 サポート記事を参照してください。