bestsource

대용량 이진 데이터를 위해 MySQL 5.6 LONGBLOB를 구성하는 방법

bestsource 2023. 8. 27. 09:43
반응형

대용량 이진 데이터를 위해 MySQL 5.6 LONGBLOB를 구성하는 방법

제가 질문을 하기 전에 약간의 배경을 묻습니다.MySQL 5.5 데이터베이스의 MySQL Workbench 6.1을 사용하여 한 시스템에서 다른 시스템의 5.6으로 데이터 내보내기/가져오기를 수행하고 있습니다. 두 시스템 모두 Ubuntu 한 32비트 다른 64비트입니다.

문제 없이 데이터를 덤프하지만 로드하려고 하면 다음과 같은 메시지가 표시됩니다.

줄 1807에서 오류 1118(42000): 행 크기가 너무 큽니다(> 8126).일부 열을 TEXT 또는 BLOB로 변경하거나 ROW_FORMAT=Dynamic 또는 ROW_FORMAT=COMPRESSED를 사용하면 도움이 될 수 있습니다.현재 행 형식에서는 768바이트의 BLOB 접두사가 인라인으로 저장됩니다.

다음 표를 작성합니다.

CREATE TABLE `file_content` (
  `fileid` bigint(20) NOT NULL,
  `content` LONGBLOB NOT NULL,
  PRIMARY KEY (`fileid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

다음과 같은 관련 my.cnf 설정이 있습니다.

max_allowed_packet=1G
innodb_file_per_table=1
innodb_file_format=디버깅

저는 무엇이 문제인지 알아내려고 많은 구글 검색 시간을 보냅니다.기본 키를 제거하면 BTW(여기서는 문제가 없지만 이 테이블에 외래 키가 있는 다른 테이블에서 불만이 제기됩니다.

운 좋게도, 저는 상자에 대한 SSH 액세스 권한을 가지고 있어서 실제 mysqldb.log를 볼 수 있습니다.내가 정말 흥미롭다고 생각하는 이유는...

2014-08-12 20:42:12 25246 [ERROR] InnoDB:총 Blob 데이터 길이(14179167)가 redo 로그 파일 크기(3072)의 10%보다 큽니다.nodb_log_file_size를 증가시키십시오.

그래서 redo 로그 파일 크기를 10배 LONGBLOB 크기로 늘려서 문제가 해결되었습니다.그러나 1G LONGBLOB(패킷 크기 때문에 실제 최대치)를 삽입하려면 10G innodb_log_file_size가 필요하다는 것을 의미합니다.

"재실행 로그 크기 오류"가 "행 크기가 너무 큼(>8126)" 오류로 바뀌는 방법을 설명할 수 있는 사람이 있습니까?

BTW 나는 이 DB의 구조를 제어할 수 없기 때문에 "왜 데이터베이스에 큰 방울을 저장하고 있습니까?"는 없습니다.

TIA

이 문제의 원인은 변경 로그에서 확인할 수 있는 MySQL 5.6.20의 변경 때문입니다.

MySQL 5.6에 도입된 redo log BLOB 쓰기 제한의 결과로 innodb_log_file_size 설정은 테이블 행에 있는 최대 BLOB 데이터 크기에 다른 변수 길이 필드(VARCHAR, VARBINAR 및 TEXT TYPE 필드)의 길이를 더한 값보다 10배 더 커야 합니다.innodb_log_file_size 설정이 이미 충분히 크거나 테이블에 BLOB 데이터가 없는 경우에는 작업이 필요하지 않습니다.

이 문제를 해결하려면 다음에서 innodb_log_file_size 옵션의 값을 늘려야 합니다.my.ini[mysqld]부분.기본값은 다음과 같습니다.48M:

[mysqld]
innodb_log_file_size=256M

제 경우에는 도움이 되었습니다.

값을 변경할 때 주의하십시오.innodb_log_file_size 작업을 안전하게 수행할 수 있습니다.

  1. 서버를 정상적으로 완전히 종료해야 합니다.
  2. ib_logfile0, ib_logfile1 등의 이름을 가진 로그 파일을 이동합니다(삭제하지 않음).
  3. 오류 로그를 확인하여 종료하는 데 문제가 없는지 확인합니다.
  4. 그런 다음 서버를 재시작하고 오류 로그 출력을 주의 깊게 관찰합니다.로그 파일이 존재하지 않는다는 InnoDB 인쇄 메시지가 나타납니다.새 항목을 만든 다음 시작합니다.
  5. 이때 InnoDB가 작동하는지 확인한 다음 이전 로그 파일을 삭제할 수 있습니다.

XAMPP에 대한 를 찾을 수 :
할 수 있는 수 .innodb_log_file_size

파일: 실제파일:xampp/mysql/bin/my.ini

xampp\mysql\bin\my.ini 위치를 탐색하고 innodb_log_file_size를 256MB로 변경하십시오.

언급URL : https://stackoverflow.com/questions/25277452/how-to-configure-mysql-5-6-longblob-for-large-binary-data

반응형