Suporte a memcached MySQL - Amazon Relational Database Service

Suporte a memcached MySQL

O Amazon RDS oferece suporte ao uso da interface memcached para tabelas do InnoDB introduzido no MySQL 5.6. A API memcached permite que os aplicativos usem as tabelas do InnoDB de forma semelhante aos armazenamentos de dados de chave/valor NoSQL.

A interface memcached é um cache simples baseado em chave. Os aplicativos usam memcached para inserir, manipular e recuperar pares de dados de valor/chave do cache. O MySQL 5.6 introduziu um plugin que implementa um serviço de daemon que expõe os dados das tabelas do InnoDB através do protocolo memcached. Para ter mais informações sobre o plug-in memcached MySQL, consulte Integração do InnoDB com memcached.

Como habilitar o suporte a memcached para uma instância de banco de dados do RDS para MySQL
  1. Determine o grupo de segurança a ser usado para controlar o acesso à interface de memcached. Se o conjunto de aplicações que já estão usando a interface SQL for o mesmo conjunto que acessará a interface memcached, você poderá usar o grupo de segurança de VPC existente usado pela interface SQL. Se um conjunto diferente de aplicativos acessar a interface memcached, defina um novo grupo de segurança de VPC ou grupo de segurança de banco de dados. Para ter mais informações sobre como gerenciar grupo de seguranças, consulte Controlar acesso com grupos de segurança

  2. Crie um grupo de opções de banco de dados personalizado, selecionando MySQL como o tipo e a versão do mecanismo. Para ter mais informações sobre como criar um grupo de opções, consulte Criar um grupo de opções.

  3. Adicione a opção MEMCACHED ao grupo de opções. Especifique a porta que a interface memcached usará e o grupo de segurança a ser usado para controlar o acesso à interface. Para mais informações sobre a adição de opções, consulte Adicionar uma opção a um grupo de opções.

  4. Modifique as configurações de opções para configurar os parâmetros memcached, se necessário. Para mais informações sobre como modificar as configurações da opção, consulte Modificar uma configuração de opção.

  5. Aplique o grupo de opções a uma instância. O Amazon RDS habilita o suporte ao memcached para essa instância quando o grupo de opções for aplicado:

    • Você habilita o suporte de memcached para uma nova instância especificando o grupo de opções personalizado ao executar a instância. Para ter mais informações sobre como executar uma instância MySQL, consulte Criar uma instância de banco de dados do Amazon RDS.

    • Você habilita o suporte de memcached para uma instância existente especificando o grupo de opções personalizado ao modificar a instância. Para ter mais informações sobre a modificação de uma instância de banco de dados , consulte Modificar uma instância de banco de dados do Amazon RDS.

  6. Especifique quais colunas em suas tabelas MySQL podem ser acessadas por meio da interface de memcached. O plug-in memcached cria uma tabela de catálogo chamada containers em um banco de dados dedicado chamado innodb_memcache. Você insere uma linha na tabela containers para mapear uma tabela do InnoDB para acesso via memcached. Você especifica uma coluna na tabela do InnoDB que é usada para armazenar os valores das chaves do memcached e uma ou mais colunas que são usadas para armazenar os valores de dados associados à chave. Você também especifica um nome que um aplicativo memcached usa para se referir a esse conjunto de colunas. Para obter detalhes sobre como inserir linhas na tabela containers, consulte Elementos internos do plug-in memcached do InnoDB. Para obter um exemplo de mapeamento de uma tabela do InnoDB e acessá-la por meio de memcached, consulte Writing applications for the InnoDB memcached plugin.

  7. Se as aplicações que acessarem a interface memcached estiverem em computadores ou instâncias do EC2 diferentes das aplicações que usam a interface SQL, adicione as informações de conexão desses computadores ao grupo de segurança de VPC associado à instância MySQL. Para ter mais informações sobre como gerenciar grupo de seguranças, consulte Controlar acesso com grupos de segurança.

Você desliga o suporte memcached para uma instância modificando essa instância e especificando o grupo de opções padrão para sua versão do MySQL. Para ter mais informações sobre a modificação de uma instância de banco de dados , consulte Modificar uma instância de banco de dados do Amazon RDS.

Considerações sobre segurança do MySQL memcached

O protocolo memcached não oferece suporte para a autenticação do usuário. Para ter mais informações sobre as considerações de segurança do MySQL memcached, consulte Considerações de segurança para o plug-in memcached do InnoDB na documentação do MySQL.

Você pode realizar as seguintes ações para ajudar a aumentar a segurança da interface memcached:

  • Especifique uma porta diferente do padrão de 11211 ao adicionar a opção MEMCACHED ao grupo de opções.

  • Certifique-se de associar a interface memcached com um grupo de segurança de VPC que limite o acesso a endereços de clientes conhecidos ou confiáveis e a instâncias do EC2. Para ter mais informações sobre como gerenciar grupo de seguranças, consulte Controlar acesso com grupos de segurança.

Informações sobre conexão com MySQL memcached

Para acessar a interface memcached, um aplicativo deve especificar o nome DNS da instância do Amazon RDS e o número da porta memcached. Por exemplo, se uma instância tiver um nome DNS my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com e a interface memcached estiver usando a porta 11212, as informações de conexão especificadas no PHP serão:

<?php $cache = new Memcache; $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212); ?>
Para encontrar o nome DNS e a porta memcached de uma instância do MySQL
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No canto superior direito do AWS Management Console, selecione a região que contém a instância de banco de dados.

  3. No painel de navegação, escolha Databases (Bancos de dados).

  4. Escolha o nome da instância de banco de dados MySQL para exibir os detalhes.

  5. Na seção Connect (Conectar), anote o valor do campo Endpoint. O nome do DNS é o mesmo que o do endpoint. Além disso, observe que a porta na seção Connect (Conectar) não é usada para acessar a interface memcached.

  6. Na seção Details (Detalhes), anote o nome listado no campo Option Group (Grupo de opções).

  7. No painel de navegação, escolha Option groups (Grupos de opções).

  8. Escolha o nome do grupo de opções usado pela instância de banco de dados MySQL para mostrar os detalhes do grupo de opções. Na seção Options (Opções), anote o valor da configuração de Port (Porta) na opção MEMCACHED.

Configurações de opções de MySQL memcached

O Amazon RDS expõe os parâmetros memcached do MySQL como configurações de opções na opção MEMCACHED do Amazon RDS.

Parâmetros de MySQL memcached

  • DAEMON_MEMCACHED_R_BATCH_SIZE – um inteiro que especifica quantas operações de leitura memcached devem ser realizadas antes de fazer um COMMIT para iniciar uma nova transação. Os valores permitidos são de 1 a 4294967295; o padrão é 1. A opção não terá efeito até que a instância seja reiniciada.

  • DAEMON_MEMCACHED_W_BATCH_SIZE – um inteiro que especifica quantas operações de gravação memcached, como adicionar, definir ou aumentar, devem ser realizadas antes de fazer um COMMIT para iniciar uma nova transação. Os valores permitidos são de 1 a 4294967295; o padrão é 1. A opção não terá efeito até que a instância seja reiniciada.

  • INNODB_API_BK_COMMIT_INTERVAL – um inteiro que especifica com que frequência as conexões inativas de confirmação automática usam a interface memcached do InnoDB. Os valores permitidos são de 1 a 1073741824; o padrão é 5. A opção entra em vigor imediatamente, sem exigir que você reinicie a instância.

  • INNODB_API_DISABLE_ROWLOCK – um booliano que desabilita (1 (true)) ou habilita (0 (false)) o uso de bloqueios de linha ao usar a interface memcached do InnoDB. O padrão é 0 (false). A opção não terá efeito até que a instância seja reiniciada.

  • INNODB_API_ENABLE_MDL – um booliano que, quando definido como 0 (false), bloqueia a tabela usada pelo plug-in memcached do InnoDB, de modo que ela não possa ser descartada ou alterado pela DDL por meio da interface SQL. O padrão é 0 (false). A opção não terá efeito até que a instância seja reiniciada.

  • INNODB_API_TRX_LEVEL – um número inteiro que especifica o nível de isolamento da transação para consultas processadas pela interface memcached. Os valores permitidos são de 0 a 3. O padrão é 0. A opção não terá efeito até que a instância seja reiniciada.

O Amazon RDS configura esses parâmetros memcached MySQL, e eles não podem ser modificados: DAEMON_MEMCACHED_LIB_NAME, DAEMON_MEMCACHED_LIB_PATH e INNODB_API_ENABLE_BINLOG. Os parâmetros que os administradores MySQL definem usando daemon_memcached_options estão disponíveis como configurações da opção MEMCACHED individuais no Amazon RDS.

Parâmetros daemon_memcached_options MySQL

  • BINDING_PROTOCOL – uma string que especifica o protocolo de associação a ser usado. Os valores permitidos são auto, ascii ou binary. O padrão é auto, o que significa que o servidor negocia automaticamente o protocolo com o cliente. A opção não terá efeito até que a instância seja reiniciada.

  • BACKLOG_QUEUE_LIMIT – um número inteiro que especifica quantas conexões de rede podem estar aguardando para serem processadas por memcached. Aumentar esse limite pode reduzir os erros recebidos por um cliente que não seja capaz de se conectar à instância memcached, mas não melhora a performance do servidor. Os valores permitidos são de 1 a 2048; o padrão é 1024. A opção não terá efeito até que a instância seja reiniciada.

  • CAS_DISABLED – um booliano que permite (1 (true)) ou desabilite (0 (false)) o uso do recurso de comparação e permuta (CAS), o que reduz o tamanho por item em 8 bytes. O padrão é 0 (false). A opção não terá efeito até que a instância seja reiniciada.

  • CHUNK_SIZE – um número inteiro que especifica o tamanho mínimo do bloco, em bytes, para alocar a chave, o valor e os sinalizadores do menor item. Os valores permitidos são de 1 a 48. O padrão é 48 e você pode melhorar significativamente a eficiência da memória com um valor menor. A opção não terá efeito até que a instância seja reiniciada.

  • CHUNK_SIZE_GROWTH_FACTOR – um flutuante que controla o tamanho de novos blocos. O tamanho de um novo bloco é o tamanho do bloco anterior vezes CHUNK_SIZE_GROWTH_FACTOR. Os valores permitidos são de 1 a 2; o padrão é 1.25. A opção não terá efeito até que a instância seja reiniciada.

  • ERROR_ON_MEMORY_EXHAUSTED – um booliano, quando definido como 1 (true), especifica que memcached retornará um erro ao invés de despejar itens quando não houver mais memória para armazenar itens. Se definido como 0 (false), memcached expulsará itens se não houver mais memória. O padrão é 0 (false). A opção não terá efeito até que a instância seja reiniciada.

  • MAX_SIMULTANEOUS_CONNECTIONS – um inteiro que especifica o número máximo de conexões simultâneas. Definir esse valor como qualquer coisa abaixo de 10 impede que o MySQL seja iniciado. Os valores permitidos são de 10 a 1024; o padrão é 1024. A opção não terá efeito até que a instância seja reiniciada.

  • VERBOSITY – uma string que especifica o nível de informações registradas no log de erros do MySQL pelo serviço memcached. O padrão é v. A opção não terá efeito até que a instância seja reiniciada. Os valores permitidos são:

    • v – registra erros e avisos durante a execução do loop de eventos principal.

    • vv – Além das informações registradas por v, também registra cada comando do cliente e a resposta.

    • vvv – Além das informações registradas por vv, também registra transições de estado internas.

O Amazon RDS configura esses parâmetros DAEMON_MEMCACHED_OPTIONS MySQL, eles não podem ser modificados: DAEMON_PROCESS, LARGE_MEMORY_PAGES, MAXIMUM_CORE_FILE_LIMIT, MAX_ITEM_SIZE, LOCK_DOWN_PAGE_MEMORY, MASK, IDFILE, REQUESTS_PER_EVENT, SOCKET e USER.