使用 Cassandra 查询语言 (CQL) 管理 Amazon Keyspaces 自动扩展 - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Cassandra 查询语言 (CQL) 管理 Amazon Keyspaces 自动扩展

要使用 Cassandra 查询语言 (CQL) 为 Amazon Keyspaces 表创建和管理 Amazon Keyspaces 表的自动缩放设置,您可以使用。cqlsh本主题概述了您可以使用 CQL 以编程方式管理的 auto Scaling 任务。

有关本主题中描述的 CQL 语句的更多信息,请参阅Amazon Keyspaces 中的 DDL 语句(数据定义语言)

开始前的准备工作

在开始之前,您需要完成以下任务。

配置 权限

如果未完成这些任务,您必须为用户配置相应的权限,以创建和管理自动扩展设置。在 Amazon Identity and Access Management (IAM) 中,需要使用 Amazon 托管策略来管理 Amazon Keys AmazonKeyspacesFullAccess paces 扩展策略。有关详细步骤,请参阅开始之前:向用户授予 Amazon Keyspaces 自动缩放的权限

配置 cqlsh

如果您尚未这样做,则必须进行安装和配置cqlsh。为此,请按照中的说明进行操作使用 cqlsh-expansion 连接 Amazon Keyspaces。然后,您可以使用 Amazon CloudShell 来运行以下各节中的命令。

使用 CQL 创建具有自动缩放功能的新表

创建新的 Amazon Keyspaces 表时,可以在语句中自动为表的写入或读取容量启用自动缩放。CREATE TABLE这允许 Amazon Keyspaces 代表您联系 Application Auto Scaling,将该表注册为可扩展目标并调整预配置的写入或读取容量。

有关如何创建多区域表以及如何为表副本配置不同的 auto Scaling 设置的更多信息,请参阅。使用默认设置创建多区域表 (CQL)

注意

Amazon Keyspaces 自动扩展需要服务相关角色 (AWSServiceRoleForApplicationAutoScaling_CassandraTable) 的存在才能代表您执行自动扩展操作。将自动为您创建此角色。有关更多信息,请参阅对 Amazon Keyspaces 使用服务相关角色

要以编程方式为表配置自动缩放设置,您可以使用包含 Amazon Keyspaces 自动缩放参数的AUTOSCALING_SETTINGS语句。这些参数定义了指示 Amazon Keyspaces 调整表的预配置吞吐量的条件,以及要采取哪些其他可选操作。在此示例中,您定义了 mytable 的自动缩放设置。

该策略包含以下元素:

  • AUTOSCALING_SETTINGS— 指定是否允许 Amazon Keyspaces 代表您调整吞吐容量。以下值是必需的:

    • provisioned_write_capacity_autoscaling_update:

      • minimum_units

      • maximum_units

    • provisioned_read_capacity_autoscaling_update:

      • minimum_units

      • maximum_units

    • scaling_policy— Amazon Keyspaces 支持目标跟踪政策。要定义目标跟踪策略,请配置以下参数。

      • target_value— Amazon Keyspaces 自动扩展可确保已用容量与预配置容量的比率保持在该值或接近该值。您将 target_value 定义为百分比。

      • disableScaleIn:(可选)Aboolean,它指定该表scale-in是禁用还是启用。默认情况下,此参数处于禁用状态。要开启scale-in,请将该boolean值设置为FALSE。这意味着代表您自动缩小餐桌的容量。

      • scale_out_cooldown – 横向扩展活动会增加表的预置吞吐量。要为横向扩展活动增加冷却时间,请为 scale_out_cooldown 指定一个值(以秒为单位)。如果未指定值,则默认值为 0。有关目标跟踪和冷却时间的更多信息,请参阅 App lication Auto Scaling 用户指南中的目标跟踪扩展策略

      • scale_in_cooldown – 横向缩减活动会减小表的预置吞吐量。要为缩减活动增加冷却时间,请为 scale_in_cooldown 指定一个值(以秒为单位)。如果未指定值,则默认值为 0。有关目标跟踪和冷却时间的更多信息,请参阅 App lication Auto Scaling 用户指南中的目标跟踪扩展策略

注意

为了进一步了解 target_value 的工作原理,假设您的表的预配置吞吐量设置为 200 个写入容量单位。您决定为此表创建扩展策略,并使用 target_value 的 70%。

现在假设您开始将写入流量驱动到表,以便实际写入吞吐量为 150 个容量单位。现在的 consumed-to-provisioned 比率是(150/200),或75%。此比率超过了您的目标,因此 auto scaling 会将预配置的写入容量增加到 215,因此该比率为 (150/215),即 69.77%,target_value尽可能接近您的目标,但不超过该比率。

对于 mytable,您可以将读取和写入容量都设置为 TargetValue 50%。Amazon Keyspaces 自动扩展可在 5-10 个容量单位范围内调整表的预配置吞吐量,使该 consumed-to-provisioned 比率保持在或接近 50%。对于读取容量,您可以将ScaleOutCooldown和的值设置ScaleInCooldown为 60 秒。

您可以使用以下语句创建启用自动扩展功能的新 Amazon Keyspaces 表。

CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck)) WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } } };

使用 CQL 在现有表上启用自动缩放

对于现有的 Amazon Keyspaces 表,您可以使用语句为该表的写入或读取容量启用自动缩放。ALTER TABLE如果您要更新当前处于按需容量模式的表,capacity_mode则为必填项。如果您的表已处于预置容量模式,则可以省略此字段。

注意

Amazon Keyspaces 自动扩缩需要存在一个代表您执行自动扩缩操作的服务相关角色 (AWSServiceRoleForApplicationAutoScaling_CassandraTable)。将自动为您创建此角色。有关更多信息,请参阅对 Amazon Keyspaces 使用服务相关角色

在以下示例中,该语句更新了处于按需容量模式的表 my table。该语句将表的容量模式更改为启用了 auto Scaling 的预配置模式。

写入容量配置在 5-10 个容量单位范围内,目标值为 50%。读取容量也配置在 5-10 个容量单位的范围内,目标值为 50%。对于读取容量,您可以将scale_out_cooldown和的值设置scale_in_cooldown为 60 秒。

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } } };

使用 CQL 查看表的 Amazon Keyspaces 自动扩展配置

要查看表的 auto Scaling 配置的详细信息,请使用以下命令。

SELECT * FROM system_schema_mcs.autoscaling WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

该命令的输出如下所示。

keyspace_name | table_name | provisioned_read_capacity_autoscaling_update | provisioned_write_capacity_autoscaling_update ---------------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- mykeyspace | mytable | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}}

使用 CQL 关闭表的 Amazon Keyspaces 自动缩放功能

您可以随时关闭表格的 Amazon Keyspaces 自动缩放功能。如果您不再需要扩展表的读取或写入容量,则应考虑关闭自动扩展,这样 Amazon Keyspaces 就不会继续修改表的读取或写入容量设置。您可以使用ALTER TABLE语句更新表。

以下语句关闭了表 my table 写入容量的自动缩放。它还会删除以您的名义创建的 CloudWatch 警报。

ALTER TABLE mykeyspace.mytable WITH AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'autoscaling_disabled': true } };
注意

要删除 Application Auto Scaling 使用的服务相关角色,必须禁用账户中所有表的自动缩放功能。 Amazon Web Services 区域