Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

MySQL MEMCACHED 支持

Amazon RDS 支持使用 MySQL 5.6 中引入的 InnoDB 表的 memcached 界面。memcached API 可让应用程序使用 InnoDB 表,其方式类似于 NoSQL“键-值”数据存储。

memcached 是基于键的简单缓存。应用程序使用 memcached 插入、操作和检索缓存中的“键-值”数据对。MySQL 5.6 引入了一个插件来实现一个守护进程服务,该服务通过 memcached 协议公开 InnoDB 表中的数据。有关 MySQL memcached 插件的更多信息,请转至 InnoDB 与 memcached 的集成

您应当通过以下方式为 Amazon RDS MySQL 5.6 或更高版本的实例启用 memcached 支持:

  1. 确定用于控制对 memcached 接口的访问的安全组。如果已在使用 SQL 接口的系列应用程序与访问 memcached 接口的相同,则可使用 SQL 接口所用的现有 VPC 或数据库安全组。如果访问 memcached 接口的系列应用程序与之不同,则请定义新的 VPC 或数据库安全组。有关管理安全组的更多信息,请参阅 Amazon RDS 个安全组

  2. 创建自定义的数据库选项组,引擎类型选择 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 内存缓存插件内部信息。有关映射 InnoDB 表和通过 memcached 访问该表的示例,请转至为 InnoDB + memcached 应用程序指定表和列映射

  7. 如果访问 memcached 接口的应用程序与使用 SQL 接口的应用程序位于不同的计算机或 EC2 实例上,请将这些计算机的连接信息添加到与 MySQL 实例关联的 VPC 或数据库安全组。有关管理安全组的更多信息,请参阅 Amazon RDS 个安全组

您通过修改该实例并指定 MySQL 版本的默认选项组来关闭实例的 memcached 支持。有关修改 MySQL 实例的更多信息,请参阅 修改运行 MySQL 数据库引擎的数据库实例

MySQL memcached 安全考虑事项

memcached 协议不支持用户身份验证。有关 MySQL memcached 安全注意事项的更多信息,请转至 memcached 部署使用 memcached 作为 MySQL 缓存层

您可以采取下列操作来帮助提高 memcached 接口的安全性:

  • 在向选项组添加 MEMCACHED 选项时,指定一个与默认 11211 不同的端口。

  • 确保将 memcached 接口与用于限制对巳知的可信客户端地址或 EC2 实例的访问的 VPC 或者数据库安全组关联。有关管理安全组的更多信息,请参阅 Amazon RDS 个安全组

MySQL memcached 连接信息

要访问 memcached 接口,应用程序必须同时指定 Amazon RDS 实例的 DNS 名称和 memcached 端口号。例如,如果实例的 DNS 名称为 my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com,并且内存缓存接口使用端口 11212,PHP 中指定的连接信息将为:

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

查找 Amazon RDS MySQL 实例的 DNS 名称和 memcached 端口

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在 AWS 管理控制台中的右上角,选择包含该数据库实例的地区。

  3. 在导航窗格中,单击 Instances

  4. 选择运行 MySQL 数据库引擎的数据库实例名称左边的箭头。在显示的说明中,记录 endpoint 字段的值。DNS 名称是终端节点在分号 (:) 前面的部分。忽略分号及分号后的端口号,该端口不能用于访问 memcached 接口。

  5. 记录 Option Group(s) 字段中列出的名称。

  6. 在导航窗格中,单击 Option Groups

  7. 选择 MySQL 数据库实例所用选项组名称左边的箭头。在显示的说明中,记录 MEMCACHED 选项中 port 设置的值。

MySQL 内存缓存选项设置

Amazon RDS 将 MySQL memcached 参数公开为 Amazon RDS MEMCACHED 选项中的选项设置。

MySQL 内存缓存参数

  • DAEMON_MEMCACHED_R_BATCH_SIZEmemcached – 整数型,用于指定在执行 COMMIT 操作启动新的事务前应执行多少个 读取操作 (获取)。容许的值是 1 到 4294967295,默认值为 1。此选项在重启实例后生效。

  • DAEMON_MEMCACHED_W_BATCH_SIZEmemcached – 整数型,用于指定在执行 COMMIT 操作启动新的事务前应执行多少个 写入操作 (获取),如添加、设置或者 incr。容许的值是 1 到 4294967295,默认值为 1。此选项在重启实例后生效。

  • INNODB_API_BK_COMMIT_INTERVALmemcached – 整数型,用于指定多长时间自动提交一次使用 InnoDB 接口的闲置连接。容许的值是 1 到 1073741824,默认为 5。该选项会立即生效,无需重新启动实例。

  • INNODB_API_DISABLE_ROWLOCK - 一个布尔值,该值在使用 InnoDB memcached 接口时禁用 (1 (true)) 或启用 (0 (false)) 行锁。默认为 0 (false)。此选项在重启实例后生效。

  • INNODB_API_ENABLE_MDL – 一个布尔值,设置为 0(false) 会锁定 InnoDB memcached 插件使用的表,以便 DDL 无法通过 SQL 接口卸除或者更改该表。默认为 0 (false)。此选项在重启实例后生效。

  • INNODB_API_TRX_LEVELmemcached – 整数型,指定 接口处理的查询的事务隔离级别。容许值是 0 到 3。默认值为 0。此选项在重启实例后生效。

Amazon RDS 配置以下 MySQL memcached 参数,这些参数无法修改:DAEMON_MEMCACHED_LIB_NAMEDAEMON_MEMCACHED_LIB_PATHINNODB_API_ENABLE_BINLOG。在 Amazon RDS 中,也以单个 MEMCACHED 选项设置是形式提供 MySQL 管理员使用 daemon_memcached_options 设置的参数。

MySQL daemon_memcached_options 参数

  • BINDING_PROTOCOL – 字符串,指定要使用的绑定协议。允许的值是 autoasciibinary。默认值为 auto,这意味着服务器与客户端自动协商协议。此选项在重启实例后生效。

  • BACKLOG_QUEUE_LIMIT – 一个整数,用于可等待 memcached 处理的网络连接的数目。增大此限值会减少无法连接到 memcached 实例的客户端所收到的错误,但不会提高服务器性能。容许的值是 1 到 2048,默认值为 1024。此选项在重启实例后生效。

  • CAS_DISABLED - 启用 (1 (true)) 或禁用 (0 (false)) 比较和交换 (CAS) 的使用的布尔值,它使每个项目大小减少了 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。此选项在重启实例后生效。

  • VERBOSITYmemcached – 字符串,指定 服务录入 MySQL 错误日志的信息级别。默认为 v。该选项会在实例重新启动后生效。容许值为:

    • v – 执行主事件循环时出现的日志错误和警告。

    • vv – 除了 v 记录的信息之外,还会记录每个客户端命令和响应。

    • vvv – 除了 v 记录的信息之外,还会记录内部状态迁移。

Amazon RDS 配置这些 MySQL DAEMON_MEMCACHED_OPTIONS 参数,且无法进行修改:DAEMON_PROCESSLARGE_MEMORY_PAGESMAXIMUM_CORE_FILE_LIMITMAX_ITEM_SIZELOCK_DOWN_PAGE_MEMORYMASKIDFILEREQUESTS_PER_EVENTSOCKETUSER