메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

MySQL MEMCACHED 지원

Amazon RDS는 memcached 인터페이스를 MySQL 5.6에 추가하여 InnoDB 테이블에 사용할 수 있도록 지원합니다. 애플리케이션이 NoSQL 키-값 형식의 데이터 스토어와 비슷하게 InnoDB 테이블을 사용할 수 있는 것도 memcached API가 있기 때문입니다.

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

Amazon RDS MySQL 5.6 이상 인스턴스에 memcached 지원을 활성화하는 방법은 다음과 같습니다.

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

  2. 사용자 정의 DB 옵션 그룹을 생성한 후 엔진 유형으로 MySQL 5.6 이상을 선택합니다. 옵션 그룹의 생성에 대한 자세한 내용은 옵션 그룹 생성 단원을 참조하십시오.

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

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

  5. 옵션 그룹을 인스턴스에 적용합니다. 옵션 그룹을 적용하면 Amazon RDS가 다음과 같은 방법으로 해당 인스턴스에 memcached 지원을 활성화합니다.

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

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

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

MySQL memcached 보안 고려 사항

memcached 프로토콜은 사용자 인증을 지원하지 않습니다. MySQL memcached 보안 고려 사항에 대한 자세한 내용은 memcached 배포memcached를 MySQL 캐싱 레이어로 사용을 참조하십시오.

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

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

  • 기존에 신뢰할 수 있는 클라이언트 주소나 EC2 인스턴스에 대한 액세스를 제한하는 VPC 또는 DB 보안 그룹과 memcached 인터페이스가 연동되어 있는지 확인합니다. 보안 그룹 관리에 대한 자세한 내용은 Amazon RDS 보안 그룹 단원을 참조하십시오.

MySQL memcached 연결 정보

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

Copy
<?php $cache = new Memcache; $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212); ?>

Amazon RDS MySQL 인스턴스의 DNS 이름과 memcached 포트를 찾는 방법

  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

  3. 탐색 창에서 Instances를 클릭합니다.

  4. MySQL 데이터베이스 엔진 기반 DB 인스턴스의 이름 좌측을 향하는 화살표를 선택합니다. 설명 화면에서 [endpoint] 필드의 값을 기록합니다. 세미콜론(;)까지 엔드포인트 부분이 DNS 이름에 해당합니다. 세미콜론과 세미콜론 뒤의 포트 번호는 무시합니다. 이 포트는 memcached 인터페이스에 액세스하는 데 사용되지 않기 때문입니다.

  5. [Option Group(s)] 필드의 이름을 기록합니다.

  6. 탐색 창에서 [Option Groups]를 클릭합니다.

  7. MySQL DB 인스턴스가 사용하는 옵션 그룹의 이름 좌측을 향하는 화살표를 선택합니다. 설명 화면에서 [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_LEVEL - memcached 인터페이스에서 처리하는 쿼리의 트랜잭션 격리 수준을 지정하는 정수입니다. 허용 값은 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이며, 값이 작을수록 메모리 효율이 크게 개선됩니다. 옵션을 적용하려면 인스턴스를 다시 시작해야 합니다.

  • CHUNCK_SIZE_GROWTH_FACTOR - 새로운 청크 크기를 조절하는 부동 소수점입니다. 이전 청크 크기와 CHUNCK_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.