데이터베이스 복원 실패 해결: 오류 1105(HY000) - Adobe Commerce Cloud에서 최대 쓰기 집합 크기를 초과했습니다.

Galera 클러스터에서 MariaDB 백업을 복원할 때 2GB 트랜잭션 크기 제한으로 인해 최대 쓰기 집합 크기 초과 오류가 발생할 수 있습니다. 이 문서에서는 보다 큰 트랜잭션을 처리할 수 있도록 백업 및 복원 명령을 조정하여 성공적인 복원 프로세스를 보장하는 단계별 솔루션을 제공합니다.

설명 description

환경

Adobe Commerce Cloud

이 문제는 MariaDB Galera 클러스터 환경에서 발생합니다.

문제/증상

Galera 클러스터에서 MariaDB 데이터베이스 백업을 복원하려고 하면 다음 오류로 인해 프로세스가 실패할 수 있습니다.

[에 있는 HY005(오류 1100) 특정 줄 번호]: 최대 쓰기 집합 크기를 초과했습니다

원인

Galera 클러스터의 wsrep_max_ws_size 시스템 변수는 최대 쓰기 집합 크기를 2GB로 설정합니다. 백업에 이 크기를 초과하는 큰 행 또는 이진 데이터가 포함된 경우 복원 프로세스가 실패합니다.

해결 방법 resolution

이 문제를 해결하려면 --max_allowed_packet 크기를 늘려 큰 트랜잭션을 방지하도록 백업 프로세스를 조정하십시오. 따라서 MySQL 서버는 백업 및 복원 작업 동안 더 큰 행이나 이진 데이터를 처리할 수 있습니다. 비프로덕션 환경에서 항상 테스트해야 합니다.

  1. MySQL 오류 로그에서 정확한 오류 원인을 식별합니다. 다음과 유사한 메시지를 찾습니다.

    [에 있는 HY005(오류 1100) 특정 줄 번호]: 최대 쓰기 집합 크기를 초과했습니다

    이는 Galera의 한도를 초과하는 거래 규모에 의한 오류임을 확인한다.

  2. 더 큰 데이터 크기를 허용하고 크기를 초과한 트랜잭션을 방지하려면 --max_allowed_packet 매개 변수를 지정하여 새 백업을 만드십시오. The --max_allowed_packet 매개 변수는 클라이언트와 통신하는 동안 서버에서 처리할 수 있는 데이터 패킷의 최대 크기를 정의합니다. 이 크기를 늘리면 더 큰 행이나 개체를 처리할 수 있으므로 트랜잭션이 분할되거나 쓰기 집합이 너무 커지지 않게 됩니다. 대부분의 경우 --max_allowed_packet=64M이면 충분합니다. 데이터베이스에 매우 큰 행 또는 이진 데이터가 포함된 경우 이 값을 —max_allowed_packet=128M으로 조정합니다. 또한 압축(예: gzip)을 사용하여 파일 크기를 줄입니다.
    백업 명령 예:

    code language-none
    mysqldump -h <host> -u <username> -p <password> --single-transaction --max_allowed_packet=64M <db_name> | gzip > /tmp/<dump_name>.sql.gz
    
  3. 백업을 복원할 때 수정된 백업과의 호환성을 보장하려면 증가된 --max_allowed_packet 값을 지정하십시오.
    복원 명령 예:

    zcat /tmp/<dump_name>.sql.gz | sed -e 's/DEFINER[ ] *=[ ] *[ *] *\*/\*/' | mysql --host=127.0.0.1 -u <username> -p <password>

  4. 백업을 복원한 후 프로세스가 오류 없이 완료되었는지 확인합니다. 로그를 확인하여 경고 또는 예외 항목이 없는지 확인합니다.

관련 읽기

MariaDB 설명서의 Galera Cluster System 변수에서 wsrep_max_ws_size.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f