华为云用户手册

  • 如何调整大Key诊断阈值 string类型key以value大小为判断标准,hash/list/zset/set类型key以元素数量为判断标准。 相关的配置参数有2个: bigkeys-string-threshold:value大于该值的string类型key,会被判断为大key,单位为byte。默认为1024000(即1MB)。 bigkeys-composite-threshold:元素数大于该值的hash/list/zset/set类型key,会被判断为大key,单位为个。默认为10000。 以上两个参数设置不宜过小,以免过多无效结果占据网络带宽,影响业务访问。 参数设置方法: 在Web客户端页面,执行以下命令调整大Key诊断阈值。 string类大key阈值调整为10MB config set bigkeys-string-threshold 10240000 hash/list/zset/set类大key阈值调整为100000 config set bigkeys-composite-threshold 100000
  • 在续费管理页面开通自动续费 登录管理控制台。 单击“控制台”页面上方“费用与成本”,在下拉菜单中选择“续费管理”,进入“续费管理”页面。 自定义查询条件。 可在“自动续费项”页签查询已经开通自动续费的资源。 可对“手动续费项”、“到期转按需项”、“到期不续费项”页签的资源开通自动续费。 图2 续费管理 为包年/包月资源开通自动续费。 单个资源开通自动续费:选择需要开通自动续费的实例,单击操作列“开通自动续费”。 图3 单个资源开通自动续费 批量资源开通自动续费:选择需要开通自动续费的实例,单击列表左上角的“开通自动续费”。 图4 多个资源开通自动续费 选择续费时长,并根据需要设置自动续费次数,单击“开通”。 图5 开通自动续费
  • 副本集实例规格 表1 GaussDB(for Mongo)副本集实例规格 规格名称 vCPU(个) 内存(GB) 最小存储空间(GB) 最大存储空间(GB) 缺省最大连接数配置 geminidb.mongodb.repset.xlarge.4 4 16 100 1,200 1,000 geminidb.mongodb.repset.2xlarge.4 8 32 100 2,400 4,000 geminidb.mongodb.repset.4xlarge.4 16 64 100 4,800 8,000 geminidb.mongodb.repset.8xlarge.4 32 128 100 9,600 16,000 geminidb.mongodb.repset.xlarge.8 4 32 100 1,200 1,000 geminidb.mongodb.repset.2xlarge.8 8 64 100 2,400 4,000 geminidb.mongodb.repset.4xlarge.8 16 128 100 4,800 8,000 geminidb.mongodb.repset.8xlarge.8 32 256 100 9,600 16,000
  • 前提条件 已创建GaussDB(for Cassandra)实例,且运行状态正常。 已创建弹性云服务器,以Linux操作系统为例。 创建弹性云服务器,详情请参见《弹性云服务器快速入门》中购买弹性云服务器的内容。 根据已购弹性云服务器的CPU类型,选择下载并安装对应的Cassandra客户端。 弹性云服务器的CPU类型为x86时,请下载Cassandra客户端安装包。 弹性云服务器的CPU类型为鲲鹏时,请下载Cassandra客户端安装包。 使用SSL方式连接实例时,需要提前获取SSL证书,具体操作请参见下载SSL证书。
  • 业务设计规范 表1 业务设计规范 使用建议 使用限制 命令执行超时或失败时,业务侧需要具有重传机制。 如果业务的key使用hashtag,建议hashtag中的字符串设计为随机散列,尽量避免热点。 Pipeline建议一次执行的命令数不超过30。 如业务流量超过实例QPS基准,或CPU利用率长期高于80%,建议及时升级规格或增加节点,避免过载影响业务访问。 说明: 实例能承载的QPS基准值估算公式为:QPS基准值=节点CPU数*节点数*10000 使用Pub/Sub系列命令的连接上不能执行其他常规命令。 不允许不同数据类型使用同名key。(否则,诸如type等命令的执行效果将不符合预期。) 不允许使用空Key。 每个节点支持的最大连接数不超过10000。
  • 为域名添加解析记录集 内网域名创建成功后,需要为内网域名设置解析记录集,以便使用域名来访问实例。以下操作以添加A类型记录集为例,其他更多类型记录集请参见添加记录集。 单击新建的内网域名名称,进入“解析记录”页面,单击右上方“添加记录集”。 图5 添加记录集 在“添加记录集”弹出框中,根据界面提示填写记录集参数。 图6 添加解析记录集 参数配置说明请参见增加A类型记录集。 单击“确定”。 返回“解析记录”页面。 添加完成后,您可以在域名对应的记录集列表中查看已添加的记录集。当记录集的状态显示为“正常”时,表示记录集添加成功。
  • 约束与限制 包年/包月的云数据库绑定的资源(弹性公网IP)可能不支持随云数据库同步变更计费模式,请参考表1查看绑定资源的计费规则及处理措施。 表1 弹性公网IP计费模式变更规则 资源 计费模式 计费方式 带宽类型 是否支持随GaussDB(for Mongo)包年/包月转按需 处理措施 弹性公网IP 包年/包月 按带宽计费 独享带宽 否 在控制台的弹性公网IP页面进行按需转包年/包月操作。 详细内容,请参见变更弹性公网IP计费方式。 弹性公网IP 包年/包月 按流量计费 独享带宽 否 包年/包月EIP不支持直接转为按需、按流量计费EIP。变更方法如下: 先转为按需、按带宽计费EIP。 再由按需、按带宽计费EIP转为按需、按流量计费EIP。 详细内容,请参见变更弹性公网IP计费方式。
  • 企业级特性介绍 GaussDB(for Redis)基于云原生分布式架构,实现了计算与存储分离,完全兼容社区版Redis5.0及以下版本,提供了更多的企业级特性。 资源独享,分片不限流 计算节点部署在独享容器,租户隔离,稳定性高。面对高并发流量,节点不被限流。 内置独享型负载均衡器,转发性能和稳定性更高。 计算节点支持绑定公网IP,方便用户迁移上云和远程调试。 秒级弹性伸缩,轻松应对业务峰谷 支持存储和计算各自独立伸缩。单实例最大支持千万级QPS和36TB容量。 数据量增长场景,容量的扩容只需一键即可秒级完成,业务应用无感知。 业务量突增的场景(比如游戏、电商的活动期间,临时有更高的QPS诉求),可通过增加节点和提升规格两种方式进行扩容,后续可轻松缩容,对业务的影响仅为秒级连接重连。 一库替代多库,简化业务架构 基于高性能存储池,实例自动加载高频访问的热数据在计算节点的内存中,内部自动完成冷热数据交换,业务优先从内存中读取热数据,兼顾数据的高可靠和低时延。 GaussDB(for Redis)适合存储持续增长的重要业务数据(比如游戏玩家数据、用户画像、行为日志、文章资讯等),相比使用Redis+MySQL的架构场景,架构更简洁、数据存储更可靠,同时还具备更高的综合性能和性价比。 支持3AZ部署 3AZ实例支持将计算和存储资源都会均匀分布在3个可用区,部署规则严格遵循反亲和组,实例具备超高可靠性。 支持故障节点秒级接管,在独有的存算分离架构下,即使发生N-1节点同时故障的极端场景,依然可以秒级恢复业务访问,超高可用。 支持跨Region双活容灾 支持企业级双活容灾能力,用户可创建2个独立的实例(同Region或跨Region),并搭建容灾关系,如果其中一个实例出现极端场景的故障,另一个实例能继续提供可靠的数据库服务。 支持双向数据同步,支持断点续传。 帐号管理,支持DB级权限控制 支持使用65536个DB,支持创建200个子帐号。 用户不但可以为子帐号设置只读或读写权限,还可为子帐号配置可访问的DB列表,从根本上避免多租户之间数据误操作风险。 数据强一致,不会发生脏读 开源Redis采用异步复制,数据副本间弱一致。在计数器、限流器、分布式锁等常见业务场景中,会带来脏读隐患,可能会导致业务逻辑错乱。 GaussDB(for Redis)将数据副本下沉到高性能存储池中,一旦写入成功,将保障数据3副本强一致存储,后续业务访问不会发生脏读。 增强版事务功能 支持事务功能,即MULTI/EXEC。相比开源Redis的伪事务,GaussDB(for Redis)实现了真事务,即支持ACID,在底层实现了对回滚的支持,满足了事务的原子性。 增强版前缀扫描 当用户对实例执行Scan类扫描命令时,如指定前缀匹配(match prefix*),则此时的扫描性能将远远超越开源Redis。这是因为GaussDB(for Redis)将该场景下达命令复杂度优化到了O(logN + M),其中N是整体数据量,M是匹配的数据量。而开源Redis的扫描复杂度则是更慢的O(N)。 支持为Hash key的Field单独设置过期时间 开源Redis只支持为Hash key整体设置过期时间。GaussDB(for Redis)新增了一组hash命令,这一新功能让用户可以为一个Hash key中的指定Field单独设置过期时间,将业务层面的淘汰逻辑下沉到数据库中实施,简化业务架构。 父主题: 产品介绍
  • 计费模式概述 GaussDB(for Cassandra)提供包年/包月和按需计费两种计费模式,以满足不同场景下的用户需求。 包年/包月:一种预付费模式,即先付费再使用,按照订单的购买周期进行结算。购买周期越长,享受的折扣越大。一般适用于设备需求量长期稳定的成熟业务。 按需计费:一种后付费模式,即先使用再付费,按照实例实际使用时长计费,秒级计费,按小时结算。按需计费模式允许您根据实际业务需求灵活地调整资源使用,无需提前预置资源,从而降低预置过多或不足的风险。一般适用于电商抢购等设备需求量瞬间大幅波动的场景。 表1列出了两种计费模式的区别。 表1 计费模式 计费模式 包年/包月 按需计费 付费方式 预付费。 按照订单的购买周期结算。 后付费。 按照实例实际使用时长计费。 计费周期 按订单的购买周期计费。 秒级计费,按小时结算。 适用计费项 实例规格(vCPU和内存)、存储空间、备份空间、弹性公网IP 实例规格(vCPU和内存)、存储空间、备份空间、弹性公网IP 变更计费模式 支持变更为按需计费模式。但包年/包月资费模式到期后,按需的资费模式才会生效。详情请参考包年/包月转按需。 支持变更为包年/包月计费模式。详情请参考按需转包年/包月。 变更规格 支持变更实例规格。 支持变更实例规格。 适用场景 适用于可预估资源使用周期的场景,价格比按需计费模式更优惠。对于长期使用者,推荐该方式。 适用于计算资源需求波动的场景,可以随时开通,随时删除。 父主题: 计费模式
  • 使用须知 该功能目前处于公测阶段,如需使用,请您联系客服申请开通。 您需要设置安全组,开通需访问数据库的IP地址和端口,才可以访问数据库实例。在访问数据库前,您需要在虚拟私有云申请一个弹性公网IP,并将访问数据库的IP地址,或者IP段加安全组入方向的访问规则,操作请参见设置安全组规则。 GaussDB(for Influx)使用您在VPC控制台购买的公网IP绑定到实例上,详细收费标准请参见:带宽和IP产品价格详情。 对于已绑定弹性公网IP的节点,需解绑后,才可重新绑定其他弹性公网IP。
  • 自定义策略样例 示例1:授权用户创建云数据库 GaussDB NoSQL实例 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "nosql:instance:create" ] } ] } 示例2:拒绝用户删除云数据库 GaussDB NoSQL数据库实例 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。 如果您给用户授予GaussDB NoSQLFullAccess的系统策略,但不希望用户拥有GaussDB NoSQLFullAccess中定义的删除云数据库 GaussDB NoSQL实例权限,您可以创建一条拒绝删除云数据库 GaussDB NoSQL实例的自定义策略,然后同时将GaussDB NoSQLFullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对云数据库 GaussDB NoSQL执行除了删除云数据库 GaussDB NoSQL实例外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny" "Action": [ "nosql:instance:delete" ], } ] } 示例3:多个授权项策略 一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下: { "Version": "1.1", "Statement": [ { "Action": [ "nosql:instance:create", "nosql:instance:rename", "nosql:instance:delete", "vpc:publicIps:list", "vpc:publicIps:update" ], "Effect": "Allow" } ] }
  • GaussDB(for Redis)是否支持多DB GaussDB(for Redis)的多DB功能已于2022年3月底上线,此前创建的实例暂不支持该功能,也不支持通过升级开启该功能。 使用GaussDB(for Redis)多DB功能时,您需要关注以下约束与限制: DB数支持的范围为0~65535。 不支持swapdb命令。 dbsize结果非实时刷新,flushdb后dbsize返回的结果不会立刻降为0,会在一段时间后变为0。 不支持在Lua脚本中使用select和flushdb命令。 不支持在事务中使用select和flushdb命令。 暂不支持move命令。 父主题: 数据库使用
  • 基础语法 新增数据 set:设置一个string类型键值对。 清理数据 数据清理为高危操作,操作需谨慎。 flushdb:删除当前选定数据库的所有数据。 flushall:删除所有现有数据库的所有数据。 修改数据 set:设置一个string类型键值对。 查询数据 get:获取指定 key 的值。 通过命令获取实例数据量 info capacity:查看当前实例的数据量。 通过info命令能够查询当前实例的信息,具体请参考info命令。 通过命令删除指定前缀的key 先通过scan获取要删除指定前缀的key,然后再执行删除操作。 下面以python代码为例: import redis def del_prefix_key(key_name): client = redis.Redis(host="127.0.0.1", port=8635, password="@cCe%FkLn0p7X8Z~") for key in client.scan_iter(match=key_name, count=5): client.delete(key) del_prefix_key("test*") GaussDB(for Redis)前缀搜索模式速度比开源Redis有大幅提升,对多种数据类型的scan前缀搜索做大量优化,scan命令完全兼容开源Redis,不过需要注意如果需要分多次进行一轮完整扫描,需保持在同一个长连接中操作。 获取key数量 dbsize:获取当前所选的数据库key数量。 dbsize数据非实时刷新,故刚迁移结束的dbsize结果可能存在偏差。 GaussDB(for Redis)完全兼容开源Redis协议,关于其他更多命令的使用方法请参见Redis命令。
  • 入门实践 当您购买并连接了GaussDB(for Influx)数据库实例后,可以根据自身的业务需求使用GaussDB(for Influx)提供的一系列常用实践。 表1 常用最佳实践 实践 描述 使用规范 使用规范和建议 从命名、TAG、FIELD、查询等方面介绍GaussDB(for Influx)使用上的一些规范和建议,用于解决常见的使用错误,低效,难以维护等问题。 解决方案 运维平台数据库解决方案 该解决方案帮助用户快速在华为云上部署数据库运维监控系统Prometheus,用户可以通过部署界面完成参数配置,完成GaussDB(for Influx)和弹性云服务ECS资源的创建及监控业务的配置。 变更实例 修改实例名称 GaussDB(for Influx)支持修改数据库实例名称,以方便您区分和识别实例。 重置管理员密码 GaussDB(for Influx)支持重置数据库管理员密码,建议您定期修改密码,以提高系统安全性,防止出现密码被破解等安全风险。 变更实例的CPU和内存规格 当用户购买的实例的CPU和内存规格无法满足业务需要时,可以在控制台进行CPU和内存规格变更。 数据备份 管理自动备份 介绍如何在数据库实例的备份时段中创建数据库实例的自动备份,系统根据您指定的备份保留期保存数据库实例的自动备份。 管理手动备份 介绍如何为数据库实例手动备份数据,用户可以通过手动备份恢复数据,从而保证数据可靠性。 数据恢复 恢复备份到新实例 介绍如何使用已有的自动备份或手动备份恢复实例数据到新建实例,恢复后的数据与该备份生成时的实例数据一致。 父主题: 快速入门
  • 表设计规则 规则1:表的设计要考虑兼容性。 只允许新增字段,不允许删除字段。 规则2:表名和数据库名不超过48字节。 规则3:表默认按照最佳性能规格创建。如果对表性能要求不高,可以创表时指定性能参数“Z00_THROUGHPUT”, 可选项有big、medium、small。默认不指定为big,由于存储引擎使用Rocksdb需要预分配内存,所以实例创表数目有一定限制,具体请参见GaussDB(for Cassandra)创表时需要注意什么。 建议:需要的时候,通过反范式化和冗余来提升读性能。
  • 索引规范 规则1:尽可能把所有查询都设计为主键形式的查询,不要对二级索引过度依赖。 规则2:创建索引后需要等待索引构建完成后才能使用索引字段进行查询。 规则3:避免对索引字段频繁更新。 规则4:不建议重复值过多表列建立索引,比如表有一亿条数据,某一列的数据都是一样的或者少数几种,这种情况不建议在该列建索引列。 规则5:counter列不能进行索引。 规则6:频繁更新或者删除的列,不建议在该列建索引列。 规则7:建议索引配合分区键使用,否则会增加节点间消息转发,造成资源消耗过大导致oom或者cpu飙高。
  • 创表参数 吞吐量参数:Z00_THROUGHPUT,默认值为 big。 低吞吐量 CREATE TABLE test1 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_THROUGHPUT = 'small'; 中吞吐量 CREATE TABLE test2 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_THROUGHPUT = 'medium'; 高吞吐量 CREATE TABLE test3 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_THROUGHPUT = 'big'; 指定表tokens数目:表示创建表时候表的tokens数目,tokens数目必须大于1。 CREATE TABLE test4 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z01_TABLE_TOKENS = 24; 表参数:Z00_BUFFER_SIZE 、Z00_BUFFER_NUMBER(不推荐使用)。 创表时可以指定存储层memtable的大小和个数。 Z00_BUFFER_SIZE为map类型,指定对应cf name和value值 ,value值取值范围2~32之间。 CREATE TABLE test6 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_BUFFER_SIZE = {'default': 16}; Z00_BUFFER_NUMBER为map类型,指定对应cf name和value值,取值范围2~8之间。 CREATE TABLE test5 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_BUFFER_NUMBER = {'default': 3}; 如果创建完成的表需要调整表规格,比如达到表上限,需要将表规格调小,以创建更多的表,则可以通过如下参数调整。 将所有创建表调小为medium,则可以多建一倍数量的表 ALTER TABLE keyspace_name.table_name WITH Z00_THROUGHPUT = 'medium'; 将所有创建表调小为small,则可以多建两倍数量的表 ALTER TABLE keyspace_name.table_name WITH Z00_THROUGHPUT = 'small';
  • 创表数目计算方式 根据实例规格不同,创表需要的内存稍有不同,以4U16GB实例为例,可以简单按照单张表768MB计算。 所以创表数目上限=集群可用总内存/单表所需内存 奇数数目集群 集群可用内存=节点内存/2*(N/2+1) 偶数数目集群 集群可用内存=节点内存/2*(N/2) 例如: 3节点4U16GB实例的可用内存=16/2*(3/2+1)=16GB 创表数目上限=16*1024MB/768MB=21 4节点4U16GB实例的可用内存=16/2*(4/2)=16GB 创表数目上限=16*1024MB/768MB=21 5节点4U16GB实例可用内存=16/2*(5/2+1)=24GB 创表数目上限=24*1024MB/768MB=32 根据上述计算方式,4U16GB规格实例的节点个数和表个数对应关系,请参见表1。 表1 4U16GB规格实例的节点数和表个数对应关系 实例规格 节点数量 表个数 4U16GB 3 21 4 21 5 32 6 32 7 42 8 42 9 53 10 53 11 64 12 64 单表占用内存为768MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算,换算公式为(768/12)*tokens个数。 上述表个数都是按照普通表计算的,如果开启了流表,一张流表耗费的资源为2.5个普通表。 根据上述计算方式,8U32GB规格实例的节点个数和表个数对应关系,请参见表2。 表2 8U32GB规格实例的节点个数和表个数对应关系 实例规格 节点个数 表个数 8U32GB 3 22 4 22 5 34 6 34 7 45 8 45 9 56 10 56 11 68 12 68 单表占用内存为1440MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算,换算公式为(1440/ 12 )* tokens个数。 上述表个数都是按照普通表计算的,如果开启了流表,一张流表耗费的资源为2.5个普通表。 根据上述计算方式,16U64GB规格节点个数和表个数对应关系,请参见表3。 表3 16U64GB规格节点个数和表个数对应关系 实例规格 节点个数 表个数 16U64GB 3 45 4 45 5 68 6 68 7 91 8 91 9 113 10 113 11 136 12 136 单表占用内存1440MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算,换算公式为(1440/ 12 )* tokens个数。 上述表个数都是按照普通表计算的,如果开启了流表,一张流表耗费的资源为2.5个普通表。 根据上述计算方式,32U128GB规格节点个数和表个数对应关系,请参见表4。 表4 32U128GB规格节点个数和表个数对应关系 实例规格 节点个数 表个数 32U128GB 3 68 4 68 5 102 6 102 7 136 8 136 9 170 10 170 11 204 12 204 单表占用内存1920MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算。换算公式为 (1920 / 12 )* tokens个数。 上述表个数都是按照普通表计算的,如果开启了流表,一张流表耗费的资源为2.5个普通表。
  • 包年/包月资源 对于包年/包月计费模式的资源,例如包年/包月的GaussDB(for Mongo)实例,用户在购买时会一次性付费,服务将在到期后自动停止使用。 如果在计费周期内不再使用包年/包月资源,您可以执行退订操作,系统将根据资源是否属于五天无理由退订、是否使用代金券和折扣券等条件返还一定金额到您的帐户。详细的退订规则请参见云服务退订规则概览。 如果您已开启“自动续费”功能,为避免继续产生费用,请在自动续费扣款日(默认为到期前7日)之前关闭自动续费。
  • 使用GaussDB(for Redis)时要注意什么 实例的操作系统,对用户都不可见,这意味着,只允许用户应用程序访问数据库对应的IP地址和端口。 对象存储服务(Object Storage Service,简称OBS)上的备份文件以及GaussDB(for Redis)使用的系统容器,都对用户不可见,它们只对GaussDB(for Redis)后台管理系统可见。 购买数据库实例后,您还需要做什么。 购买实例后,您不需要进行数据库的基础运维(比如高可用、安全补丁等),但是您还需要重点关注以下事情: 数据库实例的CPU、IOPS、空间是否足够。 数据库实例是否存在性能问题,是否需要优化等。 父主题: 产品咨询
  • 热key问题 热key的危害: 在日常生活中,经常会发生各种热门事件,应用中对该热点新闻进行上万次的点击浏览和评论时,会形成一个较大的请求量。这种情况下会造成短时间内对同一个key频繁操作,会导致key所在节点的CPU和负载突然升高,从而影响落在该节点的其他请求,导致业务成功率下降。诸如此类的还有热门商品促销,网红直播等场景,这些典型的读多写少的场景也会产生热点问题。 热key问题会产生如下危害: 流量集中,达到物理网卡上限。 请求过多,缓存分片服务被打垮。 数据库击穿,引起业务雪崩。 处理思路: 针对热key问题,一般采取如下处理思路。 设计上需要考虑热key的问题,避免在数据库上产生热key。 业务侧通过增加缓存来减少热key出现的情况。考虑多级缓存解决热key问题(如Redis + 本地二级缓存) 屏蔽热点key。 比如:在业务侧进行定制,支持热key黑白名单能力,可以将热key临时屏蔽。 检测方法: 我们定义访问频率大于100000 次/min的key为热key。 热key事件分为两种类型。一种是Writes事件,代表写热点,一种是Reads事件,表示读热点。 GaussDB(for Cassandra)提供了热key的监测与告警。在CES界面,可以配置实例的热key告警,具体方法请参见设置告警规则。 当发生热key事件时,系统会第一时间发送预警通知,您可以前往CES界面查看监控事件数据,及时处理,避免业务波动。 图2 热key告警 热key告警字段说明: { "sampler_type": "WRITES", //采样类型。取值有WRITES,READS;WRITES代表写,READS代表读。 "partition_num": "2969", //分区键的热点次数 "keyspace_name": "performance", //keyspace名称 "table_id": "a10f3bb0-3626-11ec-bbdf-63e05bbb4391", //表id "table_name": "stresstable", //表名 "partition_key": "85897376" //产生热点分区键的值 }
  • 总结 在线业务在使用Cassandra时,必须执行相关的开发规则和使用规范,在开发设计阶段就降低使用风险,合理的设计会降低大部份风险发生的概率。 任何表的设计都要考虑是否会造成热key或者大key的产生,是否会造成负载倾斜的问题。 建立数据过期机制,表中的数据不能无限制的增长而不删除或者过期。 针对读多写少的场景,要增加缓存机制,来应对读热点问题,并提升查询性能。 对于每个PK以及每行Row的大小,要控制大小,否则将影响性能和稳定性。超出后要及时优化。
  • 大key问题 可能原因: 大key的产生,最主要的原因是主键设计不合理,使得单个分区的记录数或数据量过大。一旦某一个分区出现极大时,对该分区的访问,会造成分区所在服务器的负载变高,甚至造成节点内存溢出(OOM)等。 处理思路: 针对大key问题,一般采取如下两种处理思路。 增加缓存,优化表结构。 基于现有分区键,增加分区键散列。对数据进行打散,避免单个分区的记录过大。 检测方法: 通过长时间的业务观察,我们规定以下阈值,超过任何一个条件的阈值即为大key。 单个分区键的行数不能超过10万。 单个分区的大小不超过100MB。 GaussDB(for Cassandra)支持了大key的检测与告警。在CES界面,可以配置实例的大key告警,具体方法请参见设置告警规则。 当发生大key事件时,系统会第一时间发送预警通知,您可以前往CES界面查看监控事件数据,及时处理,避免业务波动。 图1 大key告警 告警字段说明如下: [ { "partition_size": "1008293497", //超大分区键的总大小 "timestamp": "2021-09-08 07:08:18,240", //大key产生时间 "partition_num": "676826", //超大分区键的总行数 "keyspace_name": "ssss", //keyspace名称 "table_name": "zzzz", //表名称 "table_id": "024a1070-0064-11eb-bdf3-d3fe5956183b", //表id "partition_key": "{vin=TESTW3YWZD2021003}" //分区键 } ] 常见案例及解决方案: 案例1:某集群的数据量过大,导致集群存在大分区键(排查数量大概为2000+),最大的分区键达到38GB。当业务频繁访问这部分大的分区键时,会导致节点持续高负载,影响业务请求成功率。 该案例中表结构设计如下: 表设计分析: 上述movie表保存了短视频的相关信息,分区键为movieid,并且保存了用户信息(uid)。如果movieid是一个热门短视频,有几千万甚至上亿用户点赞此短视频,则该热门短视频所在的分区非常大(当前发现有38GB)。 解决方法: 针对上述案例中问题,可以通过如下方法解决。 优化表结构。 创建新表保存热门短视频信息,只保留短视频公共信息,不包含用户信息,确保该表不会产生大的分区键。热门短视频信息写入该表中。 增加缓存 业务应用先从缓存中读取热门文件信息,没有查询到,则从数据库中查询,减少数据库查询次数。 整体优化逻辑如下: 先查缓存,当缓存存在,直接返回结果。 当缓存不存在,查询热门视频缓存(缓存不存在,则查询hot表),当视频为为热门视频时,查询hotmovieaccess表。 当hotmovieaccess表存在结果时,直接返回。当hotmovieaccess表不存在记录时,查询movie表。 并缓存查询结果。 案例2:movie_meta以月度建表,每个表只存当月的数据,初始的这种设计是可以减轻或规避分区键过大问题的。由于业务频繁写入,热门视频存储的记录非常多,还是形成了大的数据分区。 解决方法: 新分区键增加一个随机数(0~999):将原来一个分区存储的信息随机离散存储到1000个分区中。采用新的分区键之后,没有形成新超过100MB的分区键,旧的超过100MB的分区键数据,随着时间过期即可。
  • 数据库实例状态 数据库实例状态是数据库实例的运行情况。可以通过管理控制台查看数据库实例状态。 表1 实例状态 状态 说明 正常 数据库实例正常和可用。 异常 数据库实例不可用。 创建中 正在创建数据库实例。 创建失败 数据库实例创建失败。 重启中 正在重启数据库实例。 重置密码中 正在重置管理员密码。 节点扩容中 正在扩容该实例下的节点个数。 节点缩容中 正在删除该实例下的节点。 存储扩容中 正在扩容实例的磁盘容量。 规格变更中 正在变更实例的CPU和内存规格。 备份上传中 正在上传备份文件。 备份中 正在创建数据库备份。 恢复检查中 该实例下的备份正在恢复到新实例。 转包周期中 实例的计费方式正在由“按需计费”转为“包年/包月”。 转按需中 实例的计费方式正在由“包年/包月”转为“按需计费”。 灾备集群创建中 正在创建容灾实例。 容灾关系解除中 删除容灾实例。 SSL切换中 正在开启或关闭SSL安全连接。 冻结 账户余额小于或等于0元,系统对该用户下的实例进行冻结。您需前往费用中心充值成功,欠款核销后,冻结的实例才会解冻。 解冻中 欠款核销后,正在解冻数据库实例。 包周期变更资源检查中 包周期实例在进行变更过程中所持续的状态。 父主题: 引擎简介
  • 事件监控支持的事件说明 表1 云数据库GaussDB NoSQL事件监控支持的事件说明 事件来源 事件名称 事件ID 事件级别 事件说明 处理建议 事件影响 NoSQL 创建实例业务失败 NoSQLCreateInstanceFailed 重要 一般是由于实例配额不足或底层资源不足等原因导致。 先释放不再使用的实例再尝试重新发放,或者提交工单调整配额上限。 无法创建数据库实例。 变更规格失败 NoSQLResizeInstanceFailed 重要 一般是由于底层资源不足等原因导致。 提交工单让运维在后台协调资源再重试规格变更操作。 业务中断。 添加节点失败 NoSQLAddNodesFailed 重要 一般是由于底层资源不足等原因导致。 提交工单让运维在后台协调资源,删除添加失败的节点,重新尝试添加新节点。 无 删除节点失败 NoSQLDeleteNodesFailed 重要 一般是由于底层释放资源失败导致。 重新尝试删除节点。 无 扩卷失败 NoSQLScaleUpStorageFailed 重要 一般是由于底层资源不足等原因导致。 提交工单让运维在后台协调资源再重试扩卷操作。 如果磁盘满,会导致业务中断。 重置密码失败 NoSQLResetPasswordFailed 重要 一般是由于重置密码命令超时导致。 重新尝试重置密码操作。 无 修改参数模板失败 NoSQLUpdateInstanceParamGroupFailed 重要 一般是由于修改参数模板命令超时导致。 重新尝试修改参数模板操作。 无 设置备份策略失败 NoSQLSetBackupPolicyFailed 重要 一般是由于数据库连接异常导致。 重新重试设置备份策略操作。 无 创建手动备份失败 NoSQLCreateManualBackupFailed 重要 一般是备份文件导出失败或上传失败等原因导致。 提交工单让运维处理。 无法备份数据。 创建自动备份失败 NoSQLCreateAutomatedBackupFailed 重要 一般是备份文件导出失败或上传失败等原因导致。 提交工单让运维处理。 无法备份数据。 实例运行状态异常 NoSQLFaultyDBInstance 重要 由于灾难或者物理机故障导致实例故障时,会上报该事件,属于关键告警事件。 提交工单。 可能导致数据库服务不可用。 实例运行状态异常已恢复 NoSQLDBInstanceRecovered 重要 针对灾难性的故障,NoSQL有高可用工具会自动进行恢复或者手动恢复,执行完成后会上报该事件。 不需要处理。 无 节点运行状态异常 NoSQLFaultyDBNode 重要 由于灾难或者物理机故障导致数据库节点故障时,会上报该事件,属于关键告警事件。 检查数据库服务是否可以正常使用,并提交工单。 可能导致数据库服务不可用。 节点运行状态异常已恢复 NoSQLDBNodeRecovered 重要 针对灾难性的故障,NoSQL有高可用工具会自动进行恢复或者手动恢复,执行完成后会上报该事件。 不需要处理。 无 实例主备切换 NoSQLPrimaryStandbySwitched 重要 在手动触发的主备倒换或节点故障自动触发的故障倒换场景下,会上报该事件。 不需要处理。 无 出现热点分区键 HotKeyOccurs 重要 客观上是因为主键设置不合理,使得热点数据集中分布在一个分区。客户端不合理的应用程序设计,造成对某一key的频繁读写。 1. 选择合理的分区键。 2. 业务增加缓存,业务应用先从缓存中读取热点数据。 影响业务请求成功率,存在影响集群性能及稳定性的风险。 出现超大分区键 BigKeyOccurs 重要 主键设计不合理,单个分区的记录数或数据量过大,引起了节点负载不均。 1. 选择合理的分区键 2. 基于现有分区键,增加分区键散列。 随着数据量增长,集群稳定性会下降。 数据盘空间不足 NoSQLRiskyDataDiskUsage 重要 数据盘空间不足,产生此告警。 请参见对应服务用户指南中“扩容磁盘”的内容,进行磁盘扩容。 实例被设为只读模式,数据无法写入。 数据盘空间已扩容并恢复可写 NoSQLDataDiskUsageRecovered 重要 数据盘空间已扩容并恢复可写,产生此事件。 无需处理。 无 创建索引失败 NoSQLCreateIndexFailed 重要 业务负载超过实例规格瓶颈,此时再创建索引会耗费更多实例资源,导致响应变慢甚至卡顿,最终超时,引起索引创建失败。 1、根据业务负载,选择匹配的实例规格 2、在业务低峰期创建索引 3、使用后台方式创建索引 4、索引字段,结合业务进行合理选择。 索引创建失败或不完整,导致索引无效,需要删掉索引重新创建。 发生写入降速 NoSQLStallingOccurs 重要 写入速度快,接近集群规模和实例规格范围允许最大写能力,从而触发数据库自身的限流机制,会发生请求失败情况 1. 根据业务的最大写请求速率,调整集群规模或者节点规格 2. 衡量业务的最大写请求速率,分散业务写峰值速率 影响业务的请求的成功率 发生写入停止 NoSQLStoppingOccurs 重要 写入速度过快,达到集群规模和实例规格范围允许最大写能力,从而触发数据库自身的限流机制,会发生请求失败情况 1. 根据业务的最大写请求速率,调整集群规模或者节点规格 2. 衡量业务的最大写请求速率,分散业务写峰值速率 影响业务的请求的成功率 重启数据库失败 NoSQLRestartDBFailed 重要 一般是由于实例状态异常等原因导致。 提交工单让运维处理。 数据库实例状态可能存在异常。 恢复到新实例失败 NoSQLRestoreToNewInstanceFailed 重要 一般是由于底层资源不足等原因导致。 提交工单让运维在后台协调资源,重新尝试添加新节点。 无法恢复到新的数据库实例。 恢复到已有实例失败 NoSQLRestoreToExistInstanceFailed 重要 一般是由于备份文件下载或恢复失败等原因导致。 提交工单让运维处理。 当前数据库实例可能处于不可用状态。 删除备份文件失败 NoSQLDeleteBackupFailed 重要 一般是由于备份文件从obs删除失败导致。 重新尝试删除备份文件。 无 切换慢日志明文开关失败 NoSQLSwitchSlowlogPlainTextFailed 重要 一般是由于引擎不支持切换等原因导致。 请查阅NoSQL用户指南,确认引擎支持打开慢日志明文开关。提交工单让运维处理。 无 绑定EIP失败 NoSQLBindEipFailed 重要 一般是由于节点状态不正常,节点已经绑定EIP或EIP非法等原因导致。 检查节点是否正常,EIP是否合法。 无法通过公网访问数据库实例。 解绑EIP失败 NoSQLUnbindEipFailed 重要 一般是由于节点状态不正常,节点已经未绑定EIP等原因导致。 检查节点和EIP状态是否正常。 无 修改参数失败 NoSQLModifyParameterFailed 重要 一般是由于参数取值非法等原因导致。 排查参数值是否符合在合法范围内,提交工单让运维处理。 无 参数模板应用失败 NoSQLApplyParameterGroupFailed 重要 一般是由于实例状态异常导致参数模板无法应用等原因导致。 提交工单让运维处理。 无 开启或关闭SSL失败 NoSQLSwitchSSLFailed 重要 一般是由于修改SSL命令超时导致。 重新提交一次或者提交工单处理,并先保持切换之前使用SSL的连接方式。 是否使用SSL连接。 单行数据量太大 LargeRowOccurs 重要 用户单行数据量过大,可能会导致查询超时,进而节点OOM挂掉等各种故障发生。 1. 对每列和每行的写入长度做限制,遵从规范,使得单行的的key和value长度和不超过阈值。 2. 排查业务是否出现异常写入和异常编码,导致写入大row。 过大的单行记录,随着数据量增长,集群稳定性会下降。 父主题: 事件监控
  • 常见问题 如何查看当前的免密列表? 通过config get passwdfree-ip命令查看当前的免密列表。 如何取消免密? 取消指定IP/网段免密权限:config set del-passwdfree-ip [ip-pattern] 取消全部IP/网段免密权限:config set clear passwdfree-ip 对于免密IP,是否还支持密码访问方式? 支持。不论密码是否正确,免密IP都具备访问权限。
  • 约束与限制 按需计费云数据库绑定的资源(弹性公网IP)可能不支持随实例同步变更计费模式,请参考表1查看绑定资源的计费规则及处理措施。 表1 弹性公网IP计费模式变更规则 资源 计费模式 计费方式 带宽类型 是否支持随GaussDB(for Cassandra)按需转包年/包月 处理措施 弹性公网IP 按需计费 按带宽计费 独享带宽 是 在控制台的弹性公网IP页面进行按需转包年/包月操作。 详细内容,请参见变更弹性公网IP计费方式。 弹性公网IP 按需计费 按流量计费 独享带宽 否 按需、按流量计费EIP不支持直接转为包年/包月EIP。变更方法如下: 先转为按需、按带宽计费的EIP。 再由按需、按带宽计费EIP转为包年/包月EIP。 详细内容,请参见变更弹性公网IP计费方式。
  • GaussDB(for Cassandra)内核版本说明 本章节介绍云数据库 GaussDB(for Cassandra)的内核版本更新说明。 表1 云数据库 GaussDB(for Cassandra)版本说明 版本 日期 特性描述 3.11 2023-07-30 新特性及性能优化: 流控功能增强。 新增基于本地快照恢复功能。 优化创建跨Region双活过程中的CPU消耗。 2023-06-30 新特性及性能优化: 优化内存使用,对于集群中创建满表的情况优化效果明显。 2023-05-30 新特性及性能优化: 新增运维命令实现路由表更改。 新增运维命令实现系统表查询。 日志使用异步打印。 运维命令:强制接管某个节点上的数据或者强制接管指定Token。 2023-04-30 新特性及性能优化: 新增EVS磁盘故障探测以及RTO优化。 新增监控项:单行删除每分钟的量、范围删除的请求数。 新增事件项:Keyspace中的墓碑数目超过阀值,产生告警、大列超过阀值,产生告警。 2023-03-30 新特性及性能优化: 优化系统健康监视器。 增加客户端连接监听重启功能。 增加System Monitor固化开关,是否开启可在Cassandra.yaml 中配置。 修复问题: 修复大范围删除场景下,查询迭代没有超时退出,导致内存占用过多问题。 2023-01-30 新特性及性能优化: 同分区删除过多次配置告警:增加日志。 灾备同步模块重试次数调整,重试范围:按照Token重试。 基线建立备机不同步备机上物理拷贝的日志。 增加系统表定期Compaction。 写入请求较少的表的增加定期Flush。 Rebalance优化。 新增灾备实例/多活实例Schema不一致时修复工具。 Gossip信息增加Meta节点信息,避免被频繁抢锁;租约检查流程中,增加Metalock租约检查。 2022-11-30 新特性及性能优化: 双活模块优化:节点传输文件按照总文件大小切分。 双活模块优化:增加多连接并行传输文件。 双活模块优化:增加限速模块。 双活模块优化:增加异常时消息重试。 修复问题: DDL修改保证原子和Globa Meta系统表归一。 Global Meta节点系统表归一。 DDL操作保证Tabletokens和Schema更新原子性。 2022-10-30 新特性及性能优化: Lucene分页查询优化,增加补偿机制, 解决Lucene实时性导致的删除未生效时,分页查询中断问题。 Lucene查询新增Offset功能:深度分页,支持偏移量功能,提升深度分页性能。 Lucene分裂重构:有Lucene索引的表,分裂修改为延迟分裂,分裂期间 父/子Lucene实例由双读改为双写。 2022-09-30 新特性及性能优化: Periodic Compaction,Compaction线程空闲时触发Periodic Compaction。 存储加密特性。 GC策略优化。 2022-07-30 新特性及性能优化: Lucene支持Json扩展语义。 Lucene备份恢复。 Lucene写线程池优化,优化单节点Token多的抖动问题。 2022-06-30 新特性及性能优化: 优化:Drop列后,Compaction将存储尽快的回收。 优化SinglePartition查询逆序返回时延。 Auth质量加固。 增加自动Compaction解决Auth Keyspace表墓碑多问题。 修复问题: 修复二级索引Group By聚合函数查询Bug。 2022-05-30 新特性及性能优化: 新特性异地双活特性。 增加IO线程健康监控。 2022-03-30 新特性及性能优化: 新特性Lucene特性。 增加IO线程健康监控。 优化分裂特性。 修复问题: 修正Range删除时候CK键反序时提取错。 修正CDC生成时间为内核记录的生成时间,避免同行数据并发场景下的CDC生成时间戳相同导致错序。 2022-01-30 新特性及性能优化: 新特性Lucene特性。 2021-12-30 新特性及性能优化: 优化主备同步模块内存使用。 优化缩容节点期间的RTO。 新增Map/Set类型中空Value序列化问题。 2021-11-30 修复问题: 修复灾备场景下,切流时已有连接不能关闭,切流失败。 修复在开启CDC时,Range删除不存在数据只产生CDC数据导致主备同步失败问题。 修复灾备同步在开启CDC场景下,频繁调用获取ColumnFamily信息导致性能下降问题。 2021-11-15 新特性及性能优化: 优化CDC表中含有NULL列问题。 增加CDC表的主动Compact功能。 优化主备同步模块的对比机制性能。 2021-06-30 新特性及性能优化: Range查询优化。 5min增备、恢复性能优化。 故障节点RTO优化。 数据库内存使用优化。 主备同步模块性能优化。 2021-04-30 新特性及性能优化: 支持Arm版本。 2021-02-28 新特性及性能优化: 主备容灾实例数据同步模块性能优化、以及内核相关适配。 2020-12-30 新特性及性能优化: 增加分裂特性。 优化Range删除运维命令。 优化CDC墓碑查询问题。 优化大Key场景的查询性能。 Compaction性能优化。 2020-11-30 新特性及性能优化: 新增CDC功能。 流控特性增强。 细粒度权限控制。 2020-09-30 新特性及性能优化: 增加限流告警。 2020-08-30 新特性及性能优化: 增加备份、恢复功能。 优化多个故障节点RTO。 增加限流保护机制。 2020-07-30 新特性及性能优化: 增加自动Rebalance功能。 增加存储满只读特性。 2020-06-30 新特性及性能优化: 优化单个故障节点RTO。 2020-05-30 新特性及性能优化: 增加流表功能。 新增主备容灾功能。 增加主备容灾实例主备一致性检测功能。 2020-04-30 新特性及性能优化: 增加Showclients功能。 优化内存使用。 2020-03-30 新特性及性能优化: 支持大Key检测。 支持自动Compact资源使用优化。 增加无损升级功能。 Auth认证失败,Auth缓存优化。 2020-02-09 新特性及性能优化: Cache使用优化。 Copy导出时长优化。 2019-12-06 新特性及性能优化: 支持存算分离架构。 高度兼容Cassandra协议。 父主题: 版本发布说明
  • 续费相关的功能 包年/包月实例续费相关的功能如表1所示。 表1 续费相关的功能 功能 说明 手动续费 包年/包月实例从购买到被自动删除之前,您可以随时在控制台为实例续费,以延长实例的使用时间。 自动续费 开通自动续费后,实例会在每次到期前自动续费,避免因忘记手动续费而导致资源被自动删除。 在一台包年/包月实例生命周期的不同阶段,您可以根据需要选择一种方式进行续费,具体如图1所示。 图1 实例生命周期 实例从购买到到期前,处于正常运行阶段,资源状态为“使用中”。 到期后,资源状态变为“已过期”。 到期未续费时,实例首先会进入宽限期,宽限期到期后仍未续费,资源状态变为“已冻结”。 超过宽限期仍未续费将进入保留期,如果保留期内仍未续费,资源将被自动删除。 华为云根据客户等级定义了不同客户的宽限期和保留期时长。 实例到期前均可开通自动续费,到期前7日凌晨3:00首次尝试自动续费,如果扣款失败,每天凌晨3:00尝试一次,直至实例到期或者续费成功。到期前7日自动续费扣款是系统默认配置,您也可以根据需要修改此扣款日。
  • 准备工作 通过公网IP迁移 提前购买华为侧弹性公网IP,带宽需要大于源库流量。 将弹性公网IP绑定到华为云GaussDB(for Redis)其中一个节点上。 配置DTS时选择目标库接入方式为公网IP。 通过专线迁移 提前购买阿里侧ECS,确保能连通到华为云GaussDB(for Redis)。 配置数据转发,将本地端口接收的流量转发到目标端,实现从阿里云Redis迁移至GaussDB(for Redis)。 ssh -g -L (转发端口):(华为侧Redis 负载均衡IP):(华为侧Redis端口) -N -f root@(本地ECS IP) 配置DTS时选择目标库接入方式为ECS自建数据库。
共100000条