14.18.8 InnoDB memcached 플러그인 문제 해결
다음 목록은 InnoDB
memcached 플러그인 사용시 발생하는 잠재적 인 문제와 해결책이나 해결 방법이 있으면 그것을 보여줍니다.
MySQL 오류 로그에 오류가 표시되는 경우 서버가 시작에 실패 할 수 있습니다.
failed to set rlimit for open files. Try running as root or requesting smaller maxconns value.
오류 메시지는 실제로는 memcached 데몬에서 나온 것입니다. 하나의 해결책은 열 파일의 수에 OS에 제한을 늘리는 것입니다. 명령은 운영 체제에 따라 다릅니다. 예를 들어, 일부 운영 체제에서 제한을 확인하여 증가시키는 명령을 보여줍니다.
# Linux $ ulimit -n 1024 ulimit -n 4096 $ ulimit -n 4096 # OS X Lion (10.6) $ ulimit -n 256 ulimit -n 4096 $ ulimit -n 4096
다른 해결책은
-c
옵션을 사용하여 memcached 데몬에서 사용할 수있는 동시 연결 수를 줄임으로써 기본값은 1024입니다. MySQL 구성 파일의 MySQL 옵션daemon_memcached_option
를 사용하여이 memcached 옵션을 인코딩합니다.[mysqld] ... loose-daemon_memcached_option = '- c 64'
memcached 데몬이
InnoDB
테이블에 데이터를 저장하거나 데이터를 검색 할 수없는 경우 문제를 해결하려면 MySQL 구성 옵션daemon_memcached_option
를 사용하여 memcached 옵션-vvv
를 지정합니다. MySQL 에러 로그를 확인하여 memcached 조작과 관련된 디버깅 출력이 없는지 검사합니다.memcached 항목 값을 유지하도록 지정된 컬럼의 데이터 형식이 잘못된 경우 (예 : 문자열 대신 숫자 형식을 지정하는 등) 키 / 값 쌍을 저장하려고하면 특정 오류 코드 또는 메시지를 보내지 않고 실패합니다.
daemon_memcached
플러그인 MySQL Server 시작에 관련한 문제가 발생하면 MySQL 구성 파일의[mysqld]
그룹 아래에 다음 줄을 추가하여 문제를 해결하는 동안 플러그인을 비활성화합니다.daemon_memcached = OFF
예를 들어, 필요한 데이터베이스 및 테이블을 설정하는
innodb_memcached_config.sql
구성 스크립트를 실행하기 전에install plugin
명령을 실행하면 서버가 충돌하여 시작하지 못할 수 있습니다. 또는innodb_memcache.containers
테이블에 잘못된 항목을 설치 한 경우 서버가 시작되지 않을 수 있습니다.MySQL 인스턴스 용 memcached 플러그인을 영구적으로 해제하려면 다음 명령을 실행합니다.
mysql> uninstall plugin daemon_memcached;
동일한 시스템에서 MySQL의 여러 인스턴스를 실행하고 각각의 memcached 데몬 플러그인을 사용하면
daemon_memcached_option
구성 옵션을 사용하여 고유의 memcached 포트를 지정하십시오.기대하는 테이블을 SQL 문에서 발견하지 못하거나 테이블에 데이터가 없거나하더라도 memcached API 호출이 계속 작동하고 기대하는 데이터를 보유 할 수도 있습니다. 이것이 발생하는 것은
innodb_memcache.containers
테이블에 항목을 설정하지 않았거나,GET
또는SET
요청에 키@@
를 지정하고 실행하여 테이블로 전환 없거나table_id
innodb_memcache.containers
의 기존 항목을 변경 한 후에 MySQL Server를 다시 시작하지 않은 경우입니다. 모든 데이터를 단일 컬럼에 저장하는test.demo_test
테이블을 데몬이 사용하는 동안에도 자유 형식의 저장 메커니즘이 유연하기 때문에col1|col2|col3
같은 멀티 컬럼 값을 저장하거나 검색 에 대한 요청은 일반적으로 계속 작동합니다.사용자 고유의
InnoDB
테이블을InnoDB
memcached와 함께 사용하도록 정의 테이블의 컬럼이 NOT NULL로 정의되어있는 경우,InnoDB
테이블에 대한 디스크립터를 memcached containers 테이블 (innodb_memcached.containers
)에 삽입 할 때 , NOT NULL 컬럼에 값을 지정합니다. 매핑 된 컬럼보다 기술자의INSERT
문에 포함 된 구분 된 값이 더 적은 경우, 입력 값이없는 컬럼은 NULL로 설정됩니다. NULL 값을 NOT NULL 컬럼에 삽입하려고하면INSERT
는 실패하지만 이것은InnoDB
memcached 플러그인을 다시 초기화하여 변경 사항을 containers 테이블에 적용 한 후에 처음으로 공개됩니다.innodb_memcached.containers
테이블cas_column
및expire_time_column
를 NULL로 설정하면 memcached 플러그인을로드하려고하면 다음 오류가 반환됩니다.InnoDB_Memcached : column 6 in the entry for config table 'containers'in database 'innodb_memcache'has an invalid NULL value.
플러그인 memcached는
cas_column
및expire_time_column
컬럼의 NULL의 사용을 거부합니다. 이 컬럼을 사용하지 않는 경우는 컬럼의 값을0
으로 설정하십시오.memcached 키와 값의 길이가 증가함에 따라 다른 포인트에서 크기와 길이의 제한이 발생합니다.
키의 크기가 250 바이트를 초과 할 경우 memcached 작업은 오류를 반환합니다. 이것은 memcached에서 현재의 고정 제한입니다.
값의 크기가 768 바이트를 초과하거나 3072 바이트를 초과하거나
innodb_page_size
에서 지정된 크기의 1/2을 초과하면InnoDB
제한이 발생할 수 있습니다. 이러한 제한은 값 컬럼에 인덱스를 작성하고 그 컬럼에서 SQL에서 보고서 생성 쿼리를 실행하려고 할 때 주로 적용됩니다. 자세한 내용은 섹션 14.6.7 "InnoDB 테이블에서의 제한" 을 참조하십시오.키와 값을 조합 한 최대 크기는 1M 바이트입니다.
다른 버전을 가지고 MySQL Server간에 구성 파일을 공유하는 경우 memcached 플러그인의 최신 구성 옵션을 사용하면 이전 MySQL 버전에서 부팅 오류가 발생할 수 있습니다. 호환성 문제를 해결하려면이 옵션 이름
loose
형식을 사용하여 예를 들어daemon_memcached_option='-c 64'
이 아니라loose-daemon_memcached_option='-c 64'
로 지정합니다.문자 집합 설정을 검증하기위한 제약도 체크도 없습니다. memcached는 키와 값을 바이트 형식으로 저장하고 검색하기 위해 문자 집합의 차이를 구분하지 않습니다. 그러나 memcached 클라이언트와 MySQL 테이블에서 동일한 문자 집합을 사용해야합니다.