云服务器内容精选

  • 操作场景 当前GeminiDB Redis支持将其他云厂商Redis、自建Redis的数据通过GeminiDB控制台导入到GeminiDB Redis。 您需要先将其他云厂商Redis、自建Redis的数据备份下载到本地,然后将备份数据文件上传与GeminiDB Redis实例同一租户下相同Region下的OBS桶中,最后在GeminiDB控制台创建数据导入任务,将数据导入到GeminiDB Redis实例中。
  • 创建OBS桶并上传备份文件 如果上传的备份文件大于5GB,请按照OBS服务提供的超过5GB如何上传操作指导执行。 如果上传的备份文件较小,且小于5GB,请执行如下步骤: 创建OBS桶。 在创建过程中,以下两个参数请按要求设置,其他详细的创建步骤,请参考《对象存储服务用户指南》的“创建桶”章节。 选择“区域”。 OBS桶所在区域必须跟Redis目标实例所在区域相同。 设置“存储类别”,当前支持“标准存储”、“低频访问存储”和“归档存储”。 请不要选择“归档存储”,否则会导致备份文件数据导入失败。 设置完成后,单击“立即创建”,等待OBS桶创建完成。 在OBS管理控制台的桶列表中,单击1中创建的OBS桶名称,进入“概览”页面。 在左侧导航栏,单击“对象”。 在“对象”页签下,单击“上传对象”,系统弹出“上传对象”对话框。 指定对象的存储类别。 请不要选择“归档存储”,否则会导致备份文件数据导入失败。 上传对象。 您可以拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件,也可以通过单击“上传对象”区域框内的“添加文件”,选择本地文件添加。 单次最多支持100个文件同时上传,总大小不超过5GB。 图1 批量上传对象 可选:勾选“KMS加密”,用于加密上传文件。 单击“上传”,完成备份文件上传到OBS桶。
  • 入门实践 当您购买并连接了GeminiDB Redis数据库实例后,可以根据自身的业务需求使用GeminiDB Redis提供的一系列常用实践。 表1 常用最佳实践 实践 描述 数据迁移 阿里云数据库Redis/Tair到GeminiDB Redis的迁移 本实践主要介绍阿里云数据库Redis/Tair到GeminiDB Redis的迁移方案。使用阿里云的数据迁移工具DTS中的数据迁移功能,该功能支持将阿里云Redis服务的数据迁移至其他Redis服务中,利用该工具避开阿里云 Redis服务屏蔽sync和psync命令限制,实现数据从阿里云Redis服务迁移至华为云GeminiDB Redis中。 腾讯云Redis到GeminiDB Redis的迁移 本实践主要介绍腾讯云Redis到GeminiDB Redis的迁移方案。使用腾讯云的数据迁移工具DTS中的数据同步功能,该功能支持将腾讯云 Redis服务的数据迁移至ECS自建Redis中,利用该工具避开腾讯云 Redis服务屏蔽分片实际IP,实现数据从腾讯云 Redis服务迁移至华为云GeminiDB Redis中。 自建Redis到GeminiDB Redis的迁移 本实践主要介绍自建Redis到GeminiDB Redis的迁移方案。使用Redis-Shake迁移工具进行源端Redis到目标端GeminiDB Redis的迁移。迁移过程支持全量+增量迁移,支持单机/主从/Cluster集群/RDB文件等多种Redis数据源。 RDB文件恢复到GeminiDB Redis(推荐) 本实践主要介绍RDB到GeminiDB Redis的迁移方案。使用Redis-Shake迁移工具进行源端RDB到目标端GeminiDB Redis的迁移。迁移过程支持全量+增量迁移。 Kvrocks到GeminiDB Redis的迁移 本实践主要介绍Kvrocks到GeminiDB Redis的迁移方案。使用开源工具kvrocks2redis进行Kvrocks到GeminiDB Redis的迁移,在此基础上,从GeminiDB Redis源码层面对Kvrocks的namespace功能进行适配。 Pika到GeminiDB Redis的迁移 本实践主要介绍Pika到GeminiDB Redis的迁移方案。pika-port伪装成Pika的从节点运行,通过主从复制的方式进行数据迁移。Pika主节点通过比较pika-port和自己的binlog偏移量判断做全量迁移还是增量迁移。如果需要做全量迁移,Pika主节点会将全量数据快照发送给pika-port,pika-port将解析后的快照数据发送给GeminiDB Redis。全量迁移结束后进入增量迁移,pika-port将增量数据解析后以redis命令的形式发送给GeminiDB Redis。 SSDB到GeminiDB Redis的迁移 本实践主要介绍SSDB到GeminiDB Redis的迁移方案。ssdb-port作为源端SSDB数据库的主节点的从节点(replica)运行,通过主从复制的方式进行数据迁移。将获取到的数据解析、转换为Redis支持的格式,并发送到配置文件中指定的Redis实例。全量同步完成后,SSDB中新增的数据也会同步到Redis实例中。 LevelDB到GeminiDB Redis的迁移 本实践主要介绍LevelDB到GeminiDB Redis的迁移方案。使用自研迁移工具leveldb-port,和LevelDB部署在相同机器上,准备好配置文件,启动迁移即可自动完成全量与增量的迁移。 RocksDB到GeminiDB Redis的迁移 本实践主要介绍RocksDB到GeminiDB Redis的迁移方案。使用自研迁移工具rocksdb-port,和RocksDB部署在相同机器上,准备好配置文件,启动迁移即可自动完成全量与增量的迁移。 AWS ElasticCache for Redis数据库到GeminiDB Redis的迁移 本实践主要介绍AWS ElasticCache for Redis到GeminiDB Redis的迁移方案。AWS ElasticCache for Redis通过备份导出RDB文件后,通过Redis-Shake迁移工具的数据恢复(restore)将数据迁移到GeminiDB Redis。 数据备份 管理自动备份 介绍如何在数据库实例的备份时段中创建数据库实例的自动备份,系统根据您指定的备份保留期保存数据库实例的自动备份。 管理手动备份 介绍如何为数据库实例手动备份数据,用户可以通过手动备份恢复数据,从而保证数据可靠性。 数据恢复 恢复备份到新实例 介绍如何使用已有的自动备份或手动备份恢复实例数据到新建实例,恢复后的数据与该备份生成时的实例数据一致。 日志管理 慢日志 GeminiDB Redis支持查看数据库级别的慢日志,执行时间的单位为ms。通过该日志,可查找出执行效率低的语句,以便优化。 父主题: 快速入门
  • GeminiDB Redis是否支持多DB GeminiDB Redis的多DB功能已于2022年3月底上线,此前创建的实例暂不支持该功能,也不支持通过升级开启该功能。 使用GeminiDB Redis多DB功能时,您需要关注以下约束与限制: DB数支持的范围为0~999。 不支持swapdb命令。 dbsize结果非实时刷新,flushdb后dbsize返回的结果不会立刻降为0,会在一段时间后变为0。 不支持在Lua脚本中使用select和flushdb命令。 不支持在事务中使用select和flushdb命令。 暂不支持move命令。 父主题: 数据库使用
  • 使用须知 添加节点会触发快速负载均衡,可能出现请求超时,影响仅为秒级。建议业务侧有自动重试机制。 实例状态为正常、恢复检查中时可以添加节点。 实例进行添加节点时,该实例不可被删除。 如果搭建双活关系,不允许在主实例和备实例同时进行添加节点、删除节点和规格变更操作。 添加节点可能导致当前磁盘容量不足以支撑实例运行,需要先扩容磁盘,再添加节点。不同规格实例支持的存储容量,请参考实例规格说明。 当实例的存储容量不足以支撑添加节点时,您可以先扩容存储容量,再添加节点。 当有节点处于关机状态时,不能添加节点。 添加节点目前只支持集群版实例。
  • 运维规范 在日常运维工作中需关注以下运维规范,预防潜在风险并掌握关键应急方案。 表2 GeminiDB Redis运维规范 编号 运维规范 说明 1 确保您的华为云账号绑定的电话号码、电子邮箱等联系方式有效,以便及时收到服务相关通知信息。 华为云服务会在变更、升级、故障通知等必要场景通过网站、邮箱、短信、站内信等方式向您送达通知信息,请确保账号绑定的联系方式有效。 2 订阅重要告警 订阅例如大Key访问、存储容量高、连接数使用率高、CPU使用率高等告警,从而在数据库实例出现风险时提早发现并及时处理。 推荐告警配置请参考设置告警规则。 3 使用负载均衡地址访问时,需要配置访问控制管理,而不是安全组。 负载均衡地址不支持安全组,创建完成后请配置IP访问控制,如未配置白名单,所有与VPC互通的IP地址均可访问实例。具体操作请参考设置负载均衡地址黑白名单。 4 配置实例自动扩容 GeminiDB Redis支持自动扩容,可以有效避免数据量突增问题。建议参见存储空间自动扩容开启自动扩容。 5 保持负载处于健康水位 如业务数据量长期高于80%,建议及时扩容。 如业务流量超过实例QPS基准,或CPU利用率长期高于80%,建议及时升级规格或增加节点,避免过载影响业务访问。 在业务流量、连接数等指标突增导致实例算力资源超载的紧急场景,应通过水平添加节点快速提升集群算力。垂直升配CPU规格为滚动模式,耗时较长,不建议用于紧急场景。 6 重命名高危命令 对于高危命令(如flushall、keys),建议您禁用或重命名,以增强实例的安全性。具体操作请参考文档命令重命名。 7 定期进行大key在线诊断 大Key访问是Redis使用中的常见问题。建议在控制台定期查看实例的大Key诊断报告。具体操作请参考大Key诊断。 9 割接结束后执行dbsize dbsize可以保证最终一致性,例如,在割接场景,无过期key,数据导入完成后的的数分钟执行,可得到准确值,确保数据导入前后的一致。
  • 开发规范 在开发业务程序时需重点关注以下开发规范,避免因使用方式不当影响业务稳定。 表1 GeminiDB Redis开发规范 编号 开发规范 说明 1 业务程序需具备合理的自动重连机制。 在规格变更、补丁升级、HA倒换、网络链路抖动或丢包等场景中,业务程序与数据库实例的连接可能出现短暂中断。业务程序应当支持自动重连。 说明: 尽量避免使用Lettuce客户端,因为该客户端在请求多次超时后,不再发起自动重连。建议使用更稳定的Jedis客户端替换Lettuce客户端。 2 业务程序需使用连接池并配置足够连接数。 为避免并发激增时程序获取不到连接,建议业务程序使用连接池,并配置合理的连接池参数。客户端的连接池推荐配置请参考客户端连接池参数配置。 3 针对部分重要操作,业务程序需要具备合理的命令重试机制。 在连接中断或请求超时等场景,业务程序请求可能会短时内执行失败。因此,针对部分重要操作需要设计业务容错机制,使用合理的命令重试间隔和次数,确保重要数据写入或修改成功。 4 使用正确的高可用连接地址,避免单点故障场景影响业务。 业务程序内网连接数据库时,应使用负载均衡地址,实现高可用。应避免将业务程序直连到某个单独的计算节点。 说明: 针对公网访问数据库的场景,同样应避免将业务程序直连到某个单独的计算节点,请参考通过弹性负载均衡绑定弹性公网IP连接实例使用外置ELB进行配置。 5 使用连接池,避免使用单连接以及大量短连接。 由于单连接有高可用风险,而短连接性能差且会消耗大量数据库CPU和网络资源,容易造成瓶颈,因此建议业务程序使用主流SDK的连接池连接GeminiDB Redis实例。 6 当实例中Key数量大于1000个时,禁止执行Keys命令 Keys命令是典型的高危命令,会一次性获取整个实例中的全部数据内容并返回给客户端。当实例中Key数量较多时,执行Keys命令会引起请求阻塞或实例状态异常。 7 避免元素Value过大,避免单Key包含的元素数量过多。 根据最佳实践,建议String类型Key的Value小于10KB,Hash/List/Zset/Set等类型Key中包含元素数小于5000,且单个元素Value小于1KB。 说明: 与社区Redis一样,GeminiDB Redis对大Key存储并不做严格约束,因此需要用户根据规范合理开发业务程序。 8 避免单个命令中一次性操作过多元素或产生过大的网络收发包。 建议MSET/MGET等批量操作Key命令中同时操作的Key数量小于1000。 建议HMSET、HGETALL、LRANGE、ZADD、ZRANGE等同时操作Key中多元素的命令同时操作元素数量小于1000。 由于社区Redis语法中ZREMRANGEBYSCORE命令不提供limit参数,无法控制单次删除的元素数量,建议使用ZRANGEBYSCORE (带limit)+ZREM的先查后删方式替代。 说明: 与社区Redis一样,GeminiDB Redis对大Key访问并不做严格约束,因此需要用户根据规范合理开发业务程序。 9 合理打散Key分布,避免出现热点Key或热点hashtag瓶颈。 对单个Key或具有同hashtag的一组Key的高频访问依赖会产生热Key问题,容易引发计算资源倾斜,请求排队,响应变慢等瓶颈问题。热Key的产生往往来自业务设计对Key的拆分程度不足,需要业务拆分优化。 说明: 反面案例: 对全局超大排行榜高频集中访问。 全实例中仅保存几个Hash Key,每个Key用于存储一整张表格的信息量。 商品库存业务中,全实例Key仅使用少量hashtag分桶,导致热点hashtag查询排队。 10 单次Pipeline中打包命令数量建议小于100条。 使用Pipeline时应遵循“单次少量,分多次”原则。 根据使用经验,并非Pipeline打包数量越大性能越好,不合理的Pipeline用法将可能导致实例CPU、带宽等资源瓶颈,甚至引起请求阻塞。 说明: 与社区Redis相比,GeminiDB Redis对Pipeline的使用并不做严格约束,因此需要用户根据规范合理开发业务程序。 11 避免在Lua脚本中引入高耗时代码。 使用Lua脚本时应遵循轻量化原则,避免引入执行命令次数过多、长时间sleep、大的循环语句等不合理用法。 12 避免在事务中打包过多命令。 使用事务时应遵循轻量化原则,避免单次事务中打包过多命令或复杂度过高的命令。执行的事务中包含命令过多会引起请求阻塞或实例状态异常。 13 避免在不同数据类型下使用相同的Key名称。 社区Redis强制禁止在不同数据类型下使用相同的Key名称。虽然GeminiDB Redis对此不做强制约束,但开发时应当避免此类用法,保持程序清晰和易维护。
  • 迁移场景 表1 迁移场景 序号 源端 目标端 迁移方案 1 阿里云Redis/Tair GeminiDB Redis 阿里云数据库Redis/Tair到GeminiDB Redis的迁移 2 腾讯云Redis GeminiDB Redis 腾讯云Redis到GeminiDB Redis的迁移 3 自建Redis/Codis GeminiDB Redis 自建Redis到GeminiDB Redis的迁移 4 RDB GeminiDB Redis RDB文件恢复到GeminiDB Redis(推荐) 5 自建Kvrocks GeminiDB Redis Kvrocks到GeminiDB Redis的迁移 6 自建Pika GeminiDB Redis Pika到GeminiDB Redis的迁移 7 自建SSDB GeminiDB Redis SSDB到GeminiDB Redis的迁移 8 自建LevelDB GeminiDB Redis LevelDB到GeminiDB Redis的迁移 9 自建RocksDB GeminiDB Redis RocksDB到GeminiDB Redis的迁移 10 AWS ElasticCache for Redis GeminiDB Redis AWS ElasticCache for Redis数据库到GeminiDB Redis的迁移
  • 迁移工具 DRS服务:华为云数据复制服务DRS(Data Replication Service)提供数据库零停机的迁移上云体验,支持全量数据迁移和增量数据迁移,为您提供安全稳定高可靠的迁移链路,详情请参考迁移方案概览。 Redis-Shake工具:Redis-Shake是一款开源迁移工具,支持全量扫描(rump)、数据恢复(restore)、增量同步(sync)等迁移方式,灵活方便。将工具下载到一台ECS上即可用命令行形式方便迁移。
  • 使用须知 删除操作无法恢复,请谨慎操作。 删除节点时,您可以联系客服,选择1s到5min的节点连接时间(节点连接时间适用于所有节点),断开长连接。 如果搭建双活关系,不允许在主实例和备实例同时进行添加节点、删除节点和规格变更操作。 开启操作保护的用户,在进行敏感操作时,通过进行二次认证再次确认您的身份,进一步提高账号安全性,有效保护您安全使用云产品。关于如何开启操作保护,具体请参考《统一身份认证服务用户指南》的内容。 添加节点目前只支持集群版实例。
  • 存储容量满设置只读 为保护GeminiDB Redis实例的正常运行,在存储空间即将被写满的时候,数据库会被设置成只读状态,该状态下只支持数据的读取,不支持写入和更新,可以通过扩容存储容量来解除该状态,重新获得写入和更新的能力。 表1 磁盘满只读说明 存储容量 说明 小于600GB 存储容量使用率达到97%时,实例状态被设置为只读。 存储容量使用率下降到85%,实例自动解除只读状态。 大于或等于600GB 存储容量剩余空间小于18GB,实例状态被设置为只读。 存储容量剩余空间大于或等于90GB,实例自动解除只读状态。
  • 使用须知 存储容量变更目前既支持扩容,也支持缩容。 GeminiDB Redis存储容量使用率超过95%时,实例会进入只读模式,此时实例只支持读取和删除数据,不支持写入新数据。为了避免影响业务访问,建议当存储容量使用率超过80%时,及时进行存储扩容。 缩容场景下,待变更到的磁盘容量必须大于已用量的125%,向上取整。 容量变更无需重启实例,在此期间,服务不中断,不影响您正常使用数据库。 存储详情支持在“实例管理”页面显示,您可以联系客服进行开通。
  • 测试模型 workload模型 表2 测试模型 测试模型编号 测试模型 读多写少场景 workload-read-mostly 95% read, 5% update 读写均衡场景 workload-read-write-combination 50% update, 50% read 读改写均衡场景 workload-read-modify-write 50% read, 50% readmodifywrite 读更新写混合场景 workload-mixed-operational-analytical 65% read, 25% update, 10% insert 写多读少场景 workload-insert-mostly 90% insert, 10% read 数据模型 fieldlength=100, fieldcount=10 预置数据量 本次性能测试中,针对每种规格的实例,测试了如下预置数据量的性能。 预置数据具体如下表所示: 表3 预置数据量 编号 规格 预置数据量 cluster1 4U16GB 50GB cluster2 8U32GB 100GB cluster3 16U64GB 200GB cluster4 32U128GB 400GB
  • 测试环境 区域:华北-北京四 可用区:可用区1+可用区2+可用区3(跨3个可用区部署) 弹性云服务器(Elastic Cloud Server,简称ECS):规格选择h3.4xlarge.2,16U32GB,操作系统镜像使用CentOS 7.5 64位版本。 被测试实例的配置:每个实例均包含3个节点。 被测试实例的规格:覆盖以下规格类型,详见表1 实例规格。 表1 实例规格 编号 规格 cluster1 4U16GB cluster2 8U32GB cluster3 16U64GB cluster4 32U128GB
  • 测试数据 不同测试模型下,不同规格且预置相当数据量,测试的OPS*数据(表格中黑色字体),详见表1 测试数据中加粗内容。 表1 测试数据 节点规格 4U16GB 8U32GB 16U64GB 32U128GB 客户端并发数 32 64 128 256 预置数据量 50GB 100GB 200GB 400GB 读多写少场景 workload-read-mostly 15627 44612 90713 169037 读写均衡场景 workload-read-write-combination 19565 46240 95065 158793 读改写均衡场景 workload-read-modify-write 11768 29488 59332 96964 读更新写混合场景 workload-mixed-operational-analytical 17534 40214 80661 137616 写多读少场景 workload-insert-mostly 23830 44548 67290 111540 OPS:Operation Per Second,数据库每秒执行的操作数。 测试模型编号:测试模型编号对应的测试模型,请参见表2 测试模型。 父主题: 性能白皮书