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: 5120
note 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
- 각 끝점은 특정 권한이 있는 자격 증명을 나타냅니다. 기본 끝점은main
데이터베이스에 대한admin
액세스 권한이 있는mysql
입니다.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
데이터베이스에 액세스할 수 있는 다양한 권한을 가진 여러 사용자를 설정할 수 있습니다.
기본적으로 데이터베이스에 대한 관리자 액세스 권한이 있는 mysql
(이)라는 엔드포인트가 한 개 있습니다. 여러 데이터베이스 사용자를 설정하려면 services.yaml
파일에 여러 끝점을 정의하고 .magento.app.yaml
파일에 관계를 선언해야 합니다. Pro 스테이징 및 프로덕션 환경의 경우 추가 사용자를 요청하려면 Adobe Commerce 지원 티켓을 제출하십시오.
중첩된 배열을 사용하여 특정 사용자 액세스에 대한 끝점을 정의합니다. 각 끝점은 하나 이상의 스키마(데이터베이스)에 대한 액세스와 각 항목에 대한 서로 다른 권한 수준을 지정할 수 있습니다.
유효한 권한 수준은 다음과 같습니다.
ro
: SELECT 쿼리만 허용됩니다.rw
: SELECT 쿼리와 INSERT, UPDATE 및 DELETE 쿼리가 허용됩니다.admin
: DDL 쿼리(CREATE TABLE, DROP TABLE 등)를 포함한 모든 쿼리가 허용됩니다.
For example:
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
속성에 위 예제에 정의된 끝점을 추가합니다. For example:
relationships:
database: "mysql:admin"
databasereporter: "mysql:reporter"
databaseimporter: "mysql:importer"
DEFINER
액세스 제어 메커니즘을 사용할 수 없습니다.데이터베이스에 연결
MariaDB 데이터베이스에 직접 액세스하려면 SSH를 사용하여 원격 클라우드 환경에 로그인하고 데이터베이스에 연결해야 합니다.
-
SSH를 사용하여 원격 환경에 로그인합니다.
code language-bash magento-cloud ssh
-
$INSIGHT_CLOUD_RELATIONSHIPS 변수의
database
및type
MAGENTO에서 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 정보를 찾습니다. For example:
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 지원 문서를 참조하십시오.