클라우드 인프라의 Adobe Commerce에서 MySQL 디스크 공간이 부족합니다.

이 문서에서는 클라우드 인프라의 Adobe Commerce에서 MySQL에 대한 공간이 부족하거나 부족한 경우에 대한 솔루션을 제공합니다. 증상으로는 사이트 중단, 고객이 장바구니에 제품을 추가할 수 없음, 데이터베이스에 연결할 수 없음, 데이터베이스에 원격으로 액세스할 수 없음, 노드에 SSH할 수 없음 등이 있습니다. 증상에는 또한 갈레라, 환경 동기화, PHP, 데이터베이스 및 배포 오류가 포함됩니다. 솔루션을 클릭하여 솔루션 섹션으로 바로 이동합니다.

영향을 받는 제품 및 버전

클라우드 인프라의 Adobe Commerce 2.3.0-2.3.6-p1, 2.4.0-2.4.2

문제

데이터베이스가 너무 커집니다. 증상에는 데이터베이스 연결 손실, 데이터베이스 업로드 오류 및 기타 다양한 문제가 포함될 수 있습니다.

발생할 수 있는 오류:

갈레라:

  • SQLSTATE[08S01]: 통신 링크 실패: 1047 WSREP가 아직 응용 프로그램 사용을 위한 노드를 준비하지 않았습니다. 가져오기 오류:
  • SQLSTATE[HY000]: 일반 오류: 1180 오류 5 "입력/출력 오류"
  • SQLSTATE[08S01]: 통신 링크 실패: 1047 WSREP가 아직 응용 프로그램 사용을 위한 노드를 준비하지 않았습니다.

환경 동기화 오류:

  • SQLSTATE: 일반 오류: 1180 커밋 중 오류 5 "입력/출력 오류"가 발생했습니다.

PHP 오류:

  • php: PDO:__construct(): MySQL 서버가 사라졌습니다.
  • php 오류: PDO::__construct(): 인사말 패킷을 읽는 동안 오류가 발생했습니다. PID=NNNN.
  • 오류 2013(HY000): '초기 통신 패킷 읽기' 시 MySQL 서버에 대한 연결이 끊어졌습니다. 시스템 오류: 0 "내부 오류/검사(시스템 오류가 아님)".

데이터베이스 오류:

  • 오류_코드: 1114
  • InnoDB: FTS 보조 인덱스 테이블에 단어 노드를 쓰는 동안 오류가 발생했습니다(디스크 공간 부족).
  • SQLSTATE[HY000]: 일반 오류: 2006 MySQL 서버가 사라졌습니다.
  • [ERROR] 슬레이브 SQL: 쿼리에서 '테이블 <table\_name>이(가) 꽉 찼습니다' 오류가 발생했습니다.
  • Unit mysql.service가 실패 상태로 들어갔습니다.
  • 오류: '/var/run/mysqld/mysqld.sock' 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다(111 "연결이 거부되었습니다")'
  • 1205 잠금 대기 시간 초과; 트랜잭션을 다시 시작해 보십시오. 쿼리: INSERT INTO `cron_schedule`(`job_code`, `status`, `created_at`, `scheduled_at`) 값(?, ?, YYYY-02-07 HH:MM:SS, YYYY-MM-DD HH:MM:SS)

배포 오류:

  • E: '['sudo', '-u', <environment name>, 'bash', '-c', '/etc/platform/<environment name>/post_deploy.sh']' 명령이 0이 아닌 종료 상태 255 ​를 반환했습니다.
  • E: '['ssh', u<node IP address>, 'sudo /usr/bin/sv -w 30 restart site-<environment name>g-nginx']' 명령이 0이 아닌 값으로 반환됨
  • 스키마를 업그레이드하는 중… SQLSTATE[HY000]: 일반 오류: 1114 테이블 <table\_name>이(가) 가득 찼습니다
  • SQLSTATE[HY000]: 일반 오류: 파일을 쓰는 동안 오류 발생 ./<environment name>/#
  • 너비: <filename>(오류 코드: 28 "장치에 남은 공간이 없음") 인덱싱 오류(https://experienceleague.adobe.com/tmp%EC%97%90%20%EB%B6%84%EB%A6%AC%EB%90%9C%20%EC%9E%84%EC%8B%9C%20.ibd%20%ED%8C%8C%EC%9D%BC%20%ED%8F%AC%ED%95%A8?lang=ko):
  • 카탈로그 규칙 인덱서에서 예외가 발생했습니다. 그 이후에 임시 테이블이 정리되지 않고 현재 MySQL 마스터 노드 ​의 디스크를 채웁니다.

재현 단계:

CLI에서 다음 명령을 실행하여 /data/mysql(또는 MySQL 데이터 저장소가 구성된 곳)이 가득 찼는지 확인할 수 있는 방법 중 하나는 다음과 같습니다.

df -h

MySQL 디스크의 사용 가능한 메모리 중 10% 미만이 중단에 대한 기본 표시기입니다.

원인

충분한 Inodes, 사용 가능한 저장소 공간 및 임시 테이블을 생성하는 잘못된 쿼리와 같은 다양한 문제로 인해 /data/mysql 마운트가 꽉 찼을 수 있습니다.

솔루션

MySQL을(를) 원래 상태로 되돌리거나 중단되지 않도록 하는 즉각적인 단계를 수행할 수 있습니다. 큰 테이블을 플러시하여 공간을 확보하십시오.

그러나 장기 솔루션에는 더 많은 공간을 할당하고 주문/송장/배송 보관 기능을 사용하도록 설정하는 등 데이터베이스 모범 사례를 따르는 것이 포함됩니다.

다음은 빠른 솔루션과 장기적인 솔루션에 대한 세부 사항입니다.

inodes 확인 및 해제

사용 가능한 인사이트가 충분한지 확인합니다. 이렇게 하려면 다음 명령을 실행합니다.

df -i

출력은 다음과 비슷합니다.

Filesystem Inodes   Used   Free Use% Mounted on
/dev/nvme2n1 655360    1695  653665    1% /data/mysql

사용 % 가 70% 미만인지 확인합니다. Inode는 파일과 관련이 있습니다. 파티션에서 파일을 제거하면 inodes를 사용할 수 있습니다.

저장소 공간 확인 및 사용 가능

사용 가능한 저장소 공간을 확인합니다. 이를 위해 다음을 실행합니다.

df -k

출력은 다음과 비슷합니다.

Size Used Avail Use% Mounted on·
       50G 49G 95M 100% /data/mysql

사용 %가 70%를 초과하는 경우 일부 공간을 사용/추가하기 위해 조치를 취해야 합니다.

대용량 ibtmp1개 파일 확인

각 노드의 /data/mysql에서 큰 ibtmp1 파일을 확인하십시오. 이 파일은 임시 테이블의 테이블스페이스입니다. 임시 테이블을 생성하는 잘못된 쿼리가 있는 경우 해당 쿼리는 ibtmp1 파일에 포함되어 있습니다. 이 파일은 데이터베이스가 다시 시작될 때만 제거됩니다. 사용 가능한 모든 공간을 사용하는 경우 데이터베이스를 다시 시작해야 합니다. 잘못된 쿼리가 있는 경우 다시 생성됩니다.

큰 테이블 초기화

WARNING
조작을 수행하기 전에 데이터베이스 백업을 만들고 사이트 로드가 많은 기간 동안에는 이를 피하는 것이 좋습니다. 개발자 설명서에서 데이터베이스 덤프를 참조하십시오.

큰 테이블이 있는지 확인하고 플러시할 수 있는 테이블이 있는지 확인합니다. 기본(소스) 노드에서 이 작업을 수행합니다.

예를 들어 보고서가 있는 표는 일반적으로 플러시할 수 있습니다. 큰 테이블을 찾는 방법에 대한 자세한 내용은 크게 찾기 MySQL 테이블 문서를 참조하십시오.

대용량 보고서 테이블이 없는 경우 Adobe Commerce 응용 프로그램을 정상 상태로 되돌리기 위해 _index 테이블을 플러시하는 것이 좋습니다. index_price개 테이블이 가장 적합한 후보입니다. 예를 들어 catalog_category_product_index_storeX개의 테이블을 사용합니다. 여기서 X는 "1"부터 최대 저장소 개수까지의 값을 가질 수 있습니다. 이러한 테이블의 데이터를 복원하려면 색인을 다시 지정해야 하며 큰 카탈로그의 경우 이 색인 재지정에 많은 시간이 걸릴 수 있습니다.

플러시하고 나면 wsrep 동기화가 완료될 때까지 기다립니다. 이제 백업을 만들고 더 많은 공간을 할당/구매하고 주문/송장/배송 보관 기능을 활성화하는 등 더 중요한 단계를 수행하여 공간을 추가할 수 있습니다.

이진 로깅 설정 확인

MySQL 서버 이진 로깅 설정을 확인합니다. log_binlog_bin_index. 이 설정을 사용하면 로그 파일이 커질 수 있습니다. 지원 티켓을 만듭니다 큰 이진 로그 파일을 제거하도록 요청합니다. 또한 로그가 주기적으로 삭제되고 공간이 너무 많이 차지하지 않도록 바이너리 로깅이 올바르게 구성되어 있는지 확인하는 요청입니다.

MySQL 서버 설정에 대한 액세스 권한이 없는 경우 지원을 요청하여 확인하세요.

추가 공간 할당/구매

사용하지 않은 디스크 공간이 있는 경우 MySQL에 더 많은 디스크 공간을 할당하십시오. 사용 가능한 디스크 공간이 있는지 확인하는 방법은 디스크 공간 제한 확인 문서를 참조하십시오.

  • Starter 계획, 모든 환경 및 Pro 계획 통합 환경의 경우 일부 사용하지 않는 디스크 공간이 있을 경우 디스크 공간을 할당할 수 있습니다. 자세한 내용은 추가 공간 할당 MySQL을 참조하세요.
  • Pro 계획 스테이징 및 프로덕션 환경의 경우 사용하지 않은 디스크 공간이 있는 경우 지원에 문의하여 더 많은 디스크 공간을 할당하십시오.

공간 제한에 도달했지만 여전히 공간 부족 문제가 있는 경우 더 많은 디스크 공간을 구입하는 것이 좋습니다. 자세한 내용은 Adobe 계정 팀에 문의하십시오.

관련 읽기

Commerce 구현 플레이북의 데이터베이스 테이블 수정 우수 사례

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a