Compatibilidad con memcached para MySQL - Amazon Relational Database Service

Compatibilidad con memcached para MySQL

Amazon RDS admite el uso de la interfaz memcached para las tablas de InnoDB que se introdujo en MySQL 5.6. La API de memcached permite a las aplicaciones utilizar las tablas de InnoDB de una manera similar a los almacenes de datos clave-valor de NoSQL.

La interfaz memcached es una caché sencilla y basada en claves. Las aplicaciones utilizan memcached para insertar, manipular y recuperar pares de datos de clave-valor de la memoria caché. MySQL 5.6 introdujo un complemento que implementa un servicio de daemon que expone los datos de las tablas de InnoDB a través del protocolo de memcached. Para obtener más información acerca del complemento memcached de MySQL, consulte InnoDB Integration with memcached.

A fin de habilitar el soporte de memcached para una instancia de base de datos RDS para MySQL
  1. Determine el grupo de seguridad que se utilizará para controlar el acceso a la interfaz memcached. Si el conjunto de aplicaciones que utilizan la interfaz SQL es el mismo que tendrá acceso a la interfaz memcached, puede utilizar el grupo de seguridad de la VPC existente utilizado por la interfaz de SQL. Si otro conjunto de aplicaciones va a acceder a la interfaz memcached, defina un grupo de seguridad de base de datos nuevo o una VPC nueva. Para obtener más información acerca de la administración de grupos de seguridad, consulte Control de acceso con grupos de seguridad

  2. Cree un grupo de opciones de base de datos personalizado, seleccionando MySQL como versión y tipo de motor. Para obtener más información acerca de cómo crear un grupo de opciones, consulte Creación de un grupo de opciones.

  3. Añada la opción MEMCACHED al grupo de opciones. Especifique el puerto que utilizará la interfaz memcached y el grupo de seguridad que se utilizará para controlar el acceso a la interfaz. Para obtener más información acerca de la adición de opciones, consulte Agregar una opción a un grupo de opciones.

  4. Modifique las opciones para configurar los parámetros de memcached, si es necesario. Para obtener más información acerca de cómo modificar la configuración de las opciones, consulte Modificación de una configuración de opciones.

  5. Aplique el grupo de opciones a una instancia. Amazon RDS permite usar memcached para esa instancia cuando se aplica el grupo de opciones:

  6. Especifique las columnas de las tablas de MySQL a las que se puede obtener acceso a través de la interfaz memcached. El complemento memcached crea una tabla de catálogo denominada containers en una base de datos dedicada denominada innodb_memcache. Inserte una fila en la tabla containers para asignar una tabla de InnoDB para el acceso a través de memcached. Especifique la columna de la tabla de InnoDB que se utiliza para almacenar los valores de clave de memcached, y una o varias columnas que se utilizan para almacenar los valores de datos asociados a la clave. También debe especificar el nombre que utiliza una aplicación de memcached para referirse a ese conjunto de columnas. Para obtener información detallada sobre cómo insertar filas en la tabla containers, consulte InnoDB memcached Plugin Internals. Para obtener un ejemplo de mapeo de una tabla InnoDB y acceso a ella a través de memcached, consulte Writing Applications for the InnoDB memcached Plugin.

  7. Si las aplicaciones que acceden a la interfaz memcached se encuentran en equipos o instancias EC2 diferentes de los de las aplicaciones que utilizan la interfaz de SQL, añada la información de conexión para esos equipos al grupo de seguridad de la VPC asociado a la instancia de MySQL. Para obtener más información acerca de la administración de grupos de seguridad, consulte Control de acceso con grupos de seguridad.

Para desactivar la compatibilidad con memcached en una instancia, modifique la instancia y especifique el grupo de opciones predeterminado para la versión de MySQL. Para obtener más información acerca de la modificación de una instancia de base de datos de , consulte Modificación de una instancia de base de datos de Amazon RDS.

Consideraciones de seguridad de la interfaz memcached de MySQL

El protocolo de memcached no admite la autenticación de usuarios. Para obtener más información sobre las consideraciones de seguridad de memcached de MySQL, consulte Security Considerations for the InnoDB memcached Plugin (Consideraciones de seguridad del complemento Memcached de InnoDB) en la documentación de MySQL.

Puede realizar las siguientes acciones para aumentar la seguridad de la interfaz memcached:

  • Al añadir la opción MEMCACHED al grupo de opciones, especifique un puerto distinto del predeterminado (11211).

  • Asegúrese de asociar la interfaz memcached a un grupo de seguridad de VPC que limite el acceso a las direcciones de los clientes o las instancias EC2 que sean conocidas y de confianza. Para obtener más información acerca de la administración de grupos de seguridad, consulte Control de acceso con grupos de seguridad.

Información sobre la conexión de la interfaz memcached de MySQL

Para acceder a la interfaz memcached, una aplicación debe especificar tanto el nombre de DNS de la instancia de Amazon RDS como el número de puerto de memcached. Por ejemplo, si una instancia tiene el nombre de DNS my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com y la interfaz memcached utiliza el puerto 11212, la información de conexión especificada en PHP sería:

<?php $cache = new Memcache; $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212); ?>
Para encontrar el nombre DNS y el puerto de memcached de una instancia de base de datos de MySQL
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En la esquina superior derecha de la AWS Management Console, seleccione la región que contiene la instancia de base de datos.

  3. En el panel de navegación, seleccione Databases (Bases de datos).

  4. Seleccione el nombre de la instancia de base de datos MySQL para mostrar sus detalles.

  5. En la sección Connect, anote el valor del campo Endpoint. El nombre DNS será igual al punto de enlace. Asimismo, observe que el puerto de la sección Connect no se utiliza para obtener acceso a la interfaz de memcached.

  6. En la sección Details, anote el nombre que aparece en el campo Option Group.

  7. En el panel de navegación, elija Option groups (Grupos de opciones).

  8. Seleccione el nombre del grupo de opciones utilizado por la instancia de base de datos MySQL para mostrar los detalles del grupo de opciones. En la sección Options, anote el valor de la configuración Port de la opción MEMCACHED.

Opciones de configuración de la interfaz memcached de MySQL

Amazon RDS expone los parámetros de la interfaz memcached de MySQL como opciones de configuración de la opción MEMCACHED de Amazon RDS.

Parámetros de la interfaz memcached de MySQL

  • DAEMON_MEMCACHED_R_BATCH_SIZE: valor entero que especifica cuántas operaciones de lectura (get) de memcached se deben realizar antes de utilizar COMMIT para iniciar una transacción nueva. Los valores permitidos son de 1 a 4294967295, el valor predeterminado es 1. La opción no surtirá efecto hasta que no se reinicie la instancia.

  • DAEMON_MEMCACHED_W_BATCH_SIZE: valor entero que especifica cuántas operaciones de escritura de memcached, como add, set o incr, se deben realizar antes de utilizar COMMIT para iniciar una transacción nueva. Los valores permitidos son de 1 a 4294967295, el valor predeterminado es 1. La opción no surtirá efecto hasta que no se reinicie la instancia.

  • INNODB_API_BK_COMMIT_INTERVAL: valor entero que especifica la frecuencia con la que se confirmarán automáticamente las conexiones inactivas que utilizan la interfaz memcached de InnoDB. Los valores permitidos son de 1 a 1073741824, el valor predeterminado es 5. La opción entra en vigor inmediatamente, sin necesidad de reiniciar la instancia.

  • INNODB_API_DISABLE_ROWLOCK: valor booleano que desactiva (1 (true)) o activa (0 (false)) el uso de los bloqueos de filas cuando se utiliza la interfaz memcached de InnoDB. El valor predeterminado es 0 (false). La opción no surtirá efecto hasta que no se reinicie la instancia.

  • INNODB_API_ENABLE_MDL: valor booleano que, cuando se establece en 0 (false), bloquea la tabla utilizada por el complemento memcached de InnoDB, de modo que no pueda ser eliminado ni alterado por DDL a través de la interfaz de SQL. El valor predeterminado es 0 (false). La opción no surtirá efecto hasta que no se reinicie la instancia.

  • INNODB_API_TRX_LEVEL: valor entero que especifica el nivel de aislamiento de transacciones para las consultas procesadas por la interfaz memcached. Los valores permitidos son de 0 a 3. El valor predeterminado es 0. La opción no surtirá efecto hasta que no se reinicie la instancia.

Amazon RDS configura estos parámetros de memcached en MySQL y no es posible modificarlos: DAEMON_MEMCACHED_LIB_NAME, DAEMON_MEMCACHED_LIB_PATH e INNODB_API_ENABLE_BINLOG. Los parámetros que los administradores de MySQL establecen utilizando daemon_memcached_options están disponibles como opciones de configuración individuales de MEMCACHED en Amazon RDS.

Parámetros de daemon_memcached_options de MySQL

  • BINDING_PROTOCOL: cadena que especifica el protocolo de enlace que se va a utilizar. Los valores permitidos son auto, ascii o binary. El valor predeterminado es auto, que significa que el servidor negocia automáticamente el protocolo con el cliente. La opción no surtirá efecto hasta que no se reinicie la instancia.

  • BACKLOG_QUEUE_LIMIT – valor entero que especifica cuántas conexiones de red pueden estar esperando a que las procese memcached. Si se aumenta este límite, se pueden reducir los errores recibidos por un cliente que no puede conectarse a la instancia de memcached, pero no se mejora el desempeño del servidor. Los valores permitidos son de 1 a 2048, el valor predeterminado es 1024. La opción no surtirá efecto hasta que no se reinicie la instancia.

  • CAS_DISABLED: valor booleano que activa (1 (verdadero)) o desactiva (0 (false)) el uso de la función de comparación e intercambio (CAS), lo que reduce el tamaño por cada elemento en 8 bytes. El valor predeterminado es 0 (false). La opción no surtirá efecto hasta que no se reinicie la instancia.

  • CHUNK_SIZE: valor entero que especifica el tamaño mínimo del fragmento, en bytes, que se debe asignar para la clave, el valor y las marcas del elemento más pequeño. Los valores permitidos son de 1 a 48. El valor predeterminado es 48, y se puede mejorar significativamente la eficiencia de la memoria con un valor inferior. La opción no surtirá efecto hasta que no se reinicie la instancia.

  • CHUNK_SIZE_GROWTH_FACTOR: valor de coma flotante que controla el tamaño de los fragmentos nuevos. El tamaño de un fragmento nuevo es el tamaño de fragmento anterior multiplicado por CHUNK_SIZE_GROWTH_FACTOR. Los valores permitidos son de 1 a 2, el valor predeterminado es 1.25. La opción no surtirá efecto hasta que no se reinicie la instancia.

  • ERROR_ON_MEMORY_EXHAUSTED: valor booleano que, cuando se establece en 1 (true), especifica que memcached devolverá un error en lugar de desalojar elementos cuando no haya más memoria para almacenar elementos. Si se establece en 0 (false), memcached desalojará elementos cuando no haya más memoria. El valor predeterminado es 0 (false). La opción no surtirá efecto hasta que no se reinicie la instancia.

  • MAX_SIMULTANEOUS_CONNECTIONS: valor entero que especifica el número máximo de conexiones simultáneas. Si este valor es menor que 10, MySQL no se iniciará. Los valores permitidos son de 10 a 1024, el valor predeterminado es 1024. La opción no surtirá efecto hasta que no se reinicie la instancia.

  • VERBOSITY: cadena que especifica el nivel de información que el servicio memcached registra en el registro de errores de MySQL. La opción predeterminada es v. La opción no surtirá efecto hasta que no se reinicie la instancia. Los valores permitidos son:

    • v: registra los errores y las advertencias mientras de ejecuta el bucle del evento principal.

    • vv: además de la información registrada por v, también registra cada comando de cliente y la respuesta.

    • vvv: además de la información registrada por vv, también registra las transiciones entre los estados internos.

Amazon RDS configura estos parámetros de DAEMON_MEMCACHED_OPTIONS en MySQL; no es posible modificarlos: DAEMON_PROCESS, LARGE_MEMORY_PAGES, MAXIMUM_CORE_FILE_LIMIT, MAX_ITEM_SIZE, LOCK_DOWN_PAGE_MEMORY, MASK, IDFILE, REQUESTS_PER_EVENT, SOCKET y USER.