MySQL memcached 지원 - Amazon Relational Database Service

MySQL memcached 지원

Amazon RDS는 MySQL 5.6에서 도입된 InnoDB 테이블에 대한 memcached 인터페이스 사용을 지원합니다. memcached API가 있으면 애플리케이션에서 NoSQL 키-값 데이터 스토어와 비슷한 방식으로 InnoDB 테이블을 사용할 수 있습니다.

memcached 인터페이스는 간단한 키 기반 캐시입니다. 애플리케이션은 이 memcached를 사용하여 키-값 데이터 쌍을 삽입하거나, 조작하거나, 캐시에서 가져옵니다. MySQL 5.6은 데몬 서비스를 이용한 플러그인이 추가되면서 memcached 프로토콜을 통해 InnoDB 테이블의 데이터를 노출시킵니다. MySQL memcached 플러그인에 대한 자세한 내용은 InnoDB와 memcached의 통합을 참조하세요.

RDS for MySQL DB 인스턴스에 memcached 지원을 활성화하는 방법
  1. 먼저 memcached 인터페이스에 대한 액세스를 제어하는 데 사용할 보안 그룹을 결정합니다. 기존에 SQL 인터페이스를 사용하는 애플리케이션과 앞으로 memcached 인터페이스에 액세스할 애플리케이션이 동일한 경우에는 기존에 SQL 인터페이스에서 사용하는 VPC 또는 DB 보안 그룹을 그대로 사용할 수 있습니다. 하지만 memcached 인터페이스에 액세스하는 애플리케이션이 다를 경우에는 새로운 VPC 또는 DB 보안 그룹을 정의해야 합니다. 보안 그룹 관리에 대한 자세한 내용은 보안 그룹을 통한 액세스 제어 단원을 참조하세요.

  2. 사용자 정의 DB 옵션 그룹을 생성한 후 엔진 유형 및 버전으로 MySQL을 선택합니다. 옵션 그룹의 생성에 대한 자세한 내용은 옵션 그룹 생성을(를) 참조하세요.

  3. [MEMCACHED] 옵션을 옵션 그룹에 추가합니다. memcached 인터페이스가 사용할 포트를 비롯해 인터페이스에 대한 액세스 제어에 사용할 보안 그룹을 지정합니다. 옵션 추가에 대한 자세한 내용은 옵션 그룹에 옵션 추가 섹션을 참조하세요.

  4. 필요하다면 옵션 설정을 변경하여 memcached 파라미터를 구성합니다. 옵션 설정을 변경하는 방법에 대한 자세한 내용은 옵션 설정 수정을(를) 참조하십시오.

  5. 옵션 그룹을 인스턴스에 적용합니다. Amazon RDS는 옵션 그룹이 적용될 때 해당 인스턴스에 대한 memcached 지원을 활성화합니다.

    • 인스턴스 실행 시 사용자 정의 옵션 그룹을 지정하여 새로운 인스턴스에 대한 memcached 지원을 활성화합니다. MySQL 인스턴스 실행에 대한 자세한 내용은 Amazon RDS DB 인스턴스 생성 단원을 참조하십시오.

    • 인스턴스 설정 변경 시 사용자 정의 옵션 그룹을 지정하여 기존 인스턴스에 대한 memcached 지원을 활성화합니다. DB 인스턴스 변경에 대한 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하십시오.

  6. MySQL 테이블에서 memcached 인터페이스를 통해 액세스할 수 있는 열을 지정합니다. memcached 플러그인은 containers라는 이름의 전용 데이터베이스에 innodb_memcache라는 이름의 카탈로그 테이블을 생성합니다. 행을 containers 테이블에 삽입하여 memcached를 통해 액세스할 수 있도록 InnoDB 테이블을 매핑합니다. InnoDB 테이블에서 memcached 키 값을 저장하는 데 사용할 열 하나와, 이 키와 연동된 데이터 값을 저장하는 데 사용할 하나 이상의 열을 지정합니다. 또한 memcached 애플리케이션이 해당 열 세트를 참조하는 데 사용할 이름도 지정합니다. 행을 containers 테이블에 삽입하는 방법에 대한 자세한 내용은 InnoDB memcached 플러그인의 내부 요소를 참조하십시오. InnoDB 테이블을 매핑하고 memcached를 통해 액세스하는 예제는 InnoDB memcached 플러그인에 대한 애플리케이션 작성을 참조하세요.

  7. memcached 인터페이스에 액세스하는 애플리케이션이 SQL 인터페이스를 사용하는 애플리케이션과 다른 컴퓨터 또는 EC2 인스턴스에 연결되어 있는 경우에는 이 컴퓨터에 대한 연결 정보를 MySQL 인스턴스와 연동되어 있는 VPC 보안 그룹에 추가합니다. 보안 그룹 관리에 대한 자세한 내용은 보안 그룹을 통한 액세스 제어 단원을 참조하세요.

인스턴스에 대한 memcached 지원을 비활성화하려면 인스턴스를 변경하여 MySQL 버전의 기본 옵션 그룹을 지정합니다. DB 인스턴스 변경에 대한 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하십시오.

MySQL memcached 보안 고려 사항

memcached 프로토콜은 사용자 인증을 지원하지 않습니다. MySQL memcached 보안 고려 사항에 대한 자세한 내용은 MySQL 설명서의 InnoDB memcached 플러그인의 보안 고려 사항을 참조하세요.

다음은 memcached 인터페이스의 보안을 강화하는 데 효과적인 작업입니다.

  • MEMCACHED 옵션을 옵션 그룹에 추가할 때 기본 11211이 아닌 다른 포트를 지정합니다.

  • 기존에 신뢰할 수 있는 클라이언트 주소 및 EC2 인스턴스에 대한 액세스를 제한하는 VPC 보안 그룹과 memcached 인터페이스가 연동되어 있는지 확인합니다. 보안 그룹 관리에 대한 자세한 내용은 보안 그룹을 통한 액세스 제어 섹션을 참조하세요.

MySQL memcached 연결 정보

memcached 인터페이스에 연결하려면 애플리케이션이 Amazon RDS 인스턴스의 DNS 이름과 memcached 포트 번호를 모두 지정해야 합니다. 예를 들어 인스턴스의 DNS 이름이 my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com이고, memcached 인스턴스가 포트 11212를 사용한다면 PHP에 지정되는 연결 정보는 다음과 같습니다.

<?php $cache = new Memcache; $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212); ?>
MySQL DB 인스턴스의 DNS 이름과 memcached 포트를 찾으려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. AWS Management Console 우측 상단 모서리에서 DB 인스턴스가 속한 리전을 선택합니다.

  3. 탐색 창에서 데이터베이스를 선택합니다.

  4. 세부 정보를 표시하고자 하는 MySQL DB 인스턴스 이름을 선택합니다.

  5. [Connect] 섹션에 있는 [Endpoint] 필드의 값을 기록해둡니다. DNS 이름은 엔드포인트와 같습니다. 또한 [Connect] 섹션에 있는 포트는 memcached 인터페이스에 액세스하는 데 사용되지 않습니다.

  6. 세부 정보 섹션의 옵션 그룹 필드에 나열된 이름을 기록해둡니다.

  7. 탐색 창에서 옵션 그룹을 선택합니다.

  8. MySQL DB 인스턴스가 사용하는 옵션 그룹의 이름을 선택하여 옵션 그룹 세부 정보를 표시합니다. [Options] 섹션에 있는 [MEMCACHED] 옵션의 [Port] 설정 값을 기록해둡니다.

MySQL memcached 옵션 설정

Amazon RDS는 MySQL memcached 파라미터를 Amazon RDS MEMCACHED 옵션의 옵션 설정으로 노출시킵니다.

MySQL memcached 파라미터

  • DAEMON_MEMCACHED_R_BATCH_SIZE – 커밋으로 새로운 트랜잭션을 시작하기 전에 실행해야 할 memcached 읽기 연산(get) 수를 지정하는 정수입니다. 허용 값은 1~4294967295이고, 기본값은 1입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • DAEMON_MEMCACHED_W_BATCH_SIZE – 커밋으로 새로운 트랜잭션을 시작하기 전에 실행해야 할 memcached 쓰기 연산(add, set, incr 등) 수를 지정하는 정수입니다. 허용 값은 1~4294967295이고, 기본값은 1입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • INNODB_API_BK_COMMIT_INTERVAL – InnoDB memcached 인터페이스를 사용하는 자동 커밋 모드의 유휴 연결(idle connection) 횟수를 지정하는 정수입니다. 허용 값은 1~1073741824이고, 기본값은 5입니다. 인스턴스를 다시 시작할 필요 없이 옵션이 바로 적용됩니다.

  • INNODB_API_DISABLE_ROWLOCK – InnoDB memcached 인터페이스 사용 시 행 잠금 기능을 활성화(1. true) 또는 비활성화(0. false)하는 부울입니다. 기본 값은 0(false)입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • INNODB_API_ENABLE_MDL – 0(false)으로 설정 시 InnoDB memcached 플러그인이 사용하는 테이블을 잠그는 부울입니다. 따라서 SQL 인터페이스에서 DDL을 통해 삭제 또는 변경이 불가능합니다. 기본 값은 0(false)입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • INNODB_API_TRX_LEVELmemcached 인터페이스에서 처리하는 쿼리의 트랜잭션 격리 수준을 지정하는 정수입니다. 허용 값은 0~3입니다. 기본값은 0입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

Amazon RDS가 위 MySQL memcached 파라미터를 구성하지만 다음 파라미터는 변경할 수 없습니다. DAEMON_MEMCACHED_LIB_NAME, DAEMON_MEMCACHED_LIB_PATHINNODB_API_ENABLE_BINLOG. MySQL 관리자가 daemon_memcached_options를 사용하여 설정하는 파라미터는 Amazon RDS의 개별 MEMCACHED 옵션 설정으로 이용할 수 있습니다.

MySQL daemon_memcached_options 파라미터

  • BINDING_PROTOCOL – 사용할 바인딩 프로토콜을 지정하는 문자열입니다. 허용 값은 auto, ascii 또는 binary입니다. 기본 값은 auto이고, 이 경우 서버가 자동으로 클라이언트와 프로토콜을 협상합니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • BACKLOG_QUEUE_LIMIT – 의 처리를 기다리는 네트워크 연결 수를 지정하는 정수입니다.memcached 이 파라미터의 최대 값을 높이면 memcached 인스턴스에 연결할 수 없다는 클라이언트의 오류 메시지가 줄어들 수 있지만 그렇다고 서버 성능이 향상되는 것은 아닙니다. 허용 값은 1~2048이고, 기본값은 1024입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • CAS_DISABLED – Compare and Swap(CAS) 기능을 활성화(1. true)하거나 비활성화(0. false)하는 부울로서, 이 기능을 활성화하면 항목 1개의 크기가 8바이트까지 줄어듭니다. 기본 값은 0(false)입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • CHUNK_SIZE – 가장 작은 항목의 키, 값 및 플래그에 할당할 최소 청크 크기(바이트)를 지정하는 정수입니다. 허용 값은 1~48입니다. 기본 값은 48이며, 값이 작을수록 메모리 효율이 크게 개선됩니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • CHUNK_SIZE_GROWTH_FACTOR – 새로운 청크 크기를 조절하는 부동 소수점입니다. 이전 청크 크기와 CHUNK_SIZE_GROWTH_FACTOR를 곱한 값이 새로운 청크의 크기가 됩니다. 허용되는 값은 1~2이고, 기본값은 1.25입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • ERROR_ON_MEMORY_EXHAUSTED – 1(true)로 설정할 경우, 항목을 저장할 메모리가 없으면 memcached가 항목을 제거하지 않고 오류를 반환하는 부울입니다. 0(false)으로 설정할 경우 메모리가 없으면 memcached가 항목을 제거합니다. 기본 값은 0(false)입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • MAX_SIMULTANEOUS_CONNECTIONS – 동시에 접속할 수 있는 최대 수를 지정하는 정수입니다. 이 값을 10보다 작게 설정하면 MySQL을 시작하지 못합니다. 허용 값은 10~1024이고, 기본값은 1024입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • VERBOSITY – MySQL 오류 로그에서 memcached 서비스가 기록할 정보 수준을 지정하는 문자열입니다. 기본값은 v입니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다. 허용 값은 다음과 같습니다.

    • v – 주요 이벤트 루프 실행 중 발생하는 오류와 경고를 기록합니다.

    • vv – v에서 기록하는 정보에 더하여 각 클라이언트 명령과 응답을 기록합니다.

    • vvv – vv에서 기록하는 정보에 더하여 내부의 상태 전환을 기록합니다.

Amazon RDS가 위 MySQL DAEMON_MEMCACHED_OPTIONS 파라미터를 구성하지만 다음 파라미터는 변경할 수 없습니다. DAEMON_PROCESS, LARGE_MEMORY_PAGES, MAXIMUM_CORE_FILE_LIMIT, MAX_ITEM_SIZE, LOCK_DOWN_PAGE_MEMORY, MASK, IDFILE, REQUESTS_PER_EVENT, SOCKETUSER.