云数据库 GeminiDB
云数据库 GeminiDB
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
-
GeminiDB Redis接口
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 通过IAM授予使用GeminiDB Redis的权限
- 购买GeminiDB Redis实例
- 实例连接及管理
-
数据迁移
- Redis数据迁移方案概览
- 使用DRS服务将GeminiDB Redis迁移到Redis(推荐)
- 阿里云数据库Redis/Tair到GeminiDB Redis的迁移
- 使用DRS服务将自建Redis或者Redis集群迁移到GeminiDB Redis(推荐)
- 通过Redis-Shake迁移工具将自建Redis迁移到GeminiDB Redis
- 使用Redis-Shake工具将RDB文件/AOF文件 导入到GeminiDB Redis
- 使用数据导入功能将RDB文件恢复到GeminiDB Redis(推荐)
- Kvrocks到GeminiDB Redis的迁移
- Pika到GeminiDB Redis的迁移
- SSDB到GeminiDB Redis的迁移
- LevelDB到GeminiDB Redis的迁移
- RocksDB到GeminiDB Redis的迁移
- AWS ElasticCache for Redis数据库到GeminiDB Redis的迁移
- 迁移后Redis数据一致性校验
- 实例管理
- 变更实例
- 数据备份
- 数据恢复
- 诊断分析
- 账号与安全
- 参数管理
- 日志与审计
- 查看监控指标与配置告警
- GeminiDB Redis标签管理
- GeminiDB Redis用户资源配额
- 内存加速
- 开发参考
- 最佳实践
- 性能白皮书
-
常见问题
-
产品咨询
- GeminiDB Redis和开源Redis、其他开源Redis云服务有什么区别?
- 和开源Redis相比,GeminiDB Redis性能如何?
- GeminiDB Redis兼容Redis哪些版本,兼容哪些命令,客户端连接是否需要修改
- 自建Redis是否可以搬迁至GeminiDB Redis,需要注意什么
- 什么是GeminiDB Redis实例可用性
- GeminiDB Redis实例总容量是总内存吗,内存和容量之间是什么联系
- 购买GeminiDB Redis实例时,如何选择合适的节点规格和节点数量?
- 购买x GB的GeminiDB Redis的实例,优选主备还是集群?
- GeminiDB Redis持久化机制是怎样的,会丢数据吗
- GeminiDB Redis是否支持布隆过滤器等modules
- 计费相关
-
数据库使用
- scan指定match参数,数据中确实存在匹配的key,为什么返回的是空
- 业务侧原本做了数据分片,切换到GeminiDB Redis后如何处理这部分逻辑
- GeminiDB Redis接口是否支持keys命令的模糊查询
- GeminiDB Redis是否支持多DB
- 对于scan类的操作,GeminiDB Redis接口与开源Redis 5.0的返回值顺序为什么有差异
- 对于scan类的操作,返回的 cursor 为什么数字很大,与开源Redis不一样?
- 针对某些不合法命令,GeminiDB Redis接口与开源Redis 5.0的报错信息为什么有差异
- 如何处理报错:CROSSSLOT Keys in request don't hash to the same slot
- GeminiDB Redis单次事务推荐包含的命令条数
- GeminiDB Redis集群版实例中,哪些命令需要使用hashtag
- 如何处理报错“ERR unknown command sentinel"
- 对于阻塞命令,GeminiDB Redis接口(主备实例)与开源Redis的返回值为什么可能有差异
- GeminiDB Redis存储扩容需要多久,对业务有影响吗?
- GeminiDB Redis多个节点同时扩容需要多长时间,对业务影响如何?
- GeminiDB Redis规格变更包含的在线变更和离线变更有什么区别,通常需要多长时间,对业务有哪些影响?
- GeminiDB Redis版本补丁升级包含的在线升级和离线升级有什么区别,通常需要多长时间,对业务有哪些影响?
- GeminiDB Redis备份文件是否可以下载到本地,是否支持线下恢复数据
- GeminiDB Redis数据备份工作机制是怎样的,对业务有哪些影响?
- 购买GeminiDB Redis 1U*2节点特惠型实例后,业务访问量比较少,但CPU占用率比较高,是什么原因?
- GeminiDB Redis监控面板上key数量下降又恢复至正常数量是什么原因?
- GeminiDB Redis节点CPU偶发冲高,可能是哪些原因
- key数量统计是什么机制?迁移完成后,GeminiDB监控中key数量不准,还在持续增长,是什么原因?
- 数据库连接
- 备份与恢复
- 区域和可用区
-
数据迁移
- 报错ERR the worker queue is full, and the request cannot be excecuted
- 报错ERR the request queue of io thread is full, and the request cannot be excecuted
- 报错 read error, please check source redis log or network
- 报错 slaveping_thread.cc-ThreadMain-90: error: Ping master error
- 同步状态正向迁移速度太慢
- 同步状态正向迁移速度太快,报错:ERR server reply timeout, some responses may lose, but requests have been executed
- 4.0、5.0以及6.2版本的自建Redis能迁移至GeminiDB Redis吗?
- 自建Redis主备、集群实例如何迁移到GeminiDB Redis?
- 为什么阿里云Redis、腾讯云Redis等云服务不能使用DRS进行数据迁移?
- 自建主备Redis,迁移到GeminiDB Redis集群,需要考虑哪些因素?
- 迁移完成后数据量变少了,100GB的数据迁移到GeminiDB Redis只有20-30GB,数据是不是没迁移完?
- 内存加速
- 资源冻结/释放/删除/退订
-
产品咨询
-
GeminiDB Influx接口
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 通过IAM授予使用GeminiDB Influx的权限
- 购买GeminiDB Influx实例
- 实例连接及管理
- 数据迁移
- 数据转Parquet格式并导出至OBS设置
- 实例生命周期管理
- 变更实例
- 数据库命令
- 冷热分离
- 证书管理
- 数据备份
- 数据恢复
- 参数管理
- 日志与审计
- 查看监控指标与配置告警
- GeminiDB Influx标签管理
- GeminiDB Influx用户资源配额
- 最佳实践
- 性能白皮书
-
常见问题
-
产品咨询
- 使用GeminiDB Influx接口时要注意什么
- 什么是GeminiDB Influx实例可用性
- GeminiDB Influx中有没有支持多列转多行的函数
- GeminiDB Influx最大能支持到多少PB的数据
- GeminiDB Influx是否支持Grafana访问
- 如何使用GeminiDB Influx的hint功能
- 如何处理报错"select *" query without time range is not allowed
- 如何处理报错:ERR: max-select-series limit exceeded
- 如何处理报错: "delete is forbidden"
- 如何处理报错: "THE TOTAL NUMBER OF DBs EXCEEDS THE LIMIT 16"
- 如何处理报错: "THE TOTAL NUMBER OF RPs EXCEEDS THE LIMIT 16"
- 计费相关
- 数据库连接
- 备份与恢复
- 区域和可用区
- 资源冻结/释放/删除/退订
-
产品咨询
-
GeminiDB Cassandra接口
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 通过IAM授予使用GeminiDB Cassandra的权限
- 购买GeminiDB Cassandra实例
- 实例连接及管理
- 数据迁移
- 实例生命周期管理
- 变更实例
- 同城容灾
- 异地双活
- 数据备份
- 数据恢复
- 参数管理
- 日志与审计
- 查看监控指标与配置告警
- 企业项目
- GeminiDB Cassandra标签管理
- GeminiDB Cassandra用户资源配额
- 最佳实践
- 性能白皮书
- 常见问题
- GeminiDB (兼容DynamoDB API)实例
- HBase协议兼容版实例
- GeminiDB兼容DynamoDB接口
- GeminiDB Mongo接口
- 技术白皮书
- SDK参考
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 快速入门
- API v3.1(推荐)
-
API v3(推荐)
- 查询API版本
- 接口版本和规格
-
实例管理
- 创建实例
- 删除实例
- 查询实例列表和详情
- 扩容实例存储容量
- 扩容实例的节点数量
- 缩容实例的节点数量
- 获取节点会话列表
- 查询实例节点会话统计信息
- 关闭实例节点会话
- 查询实例可变更规格
- 变更实例规格
- 修改实例的管理员密码
- 修改实例名称
- 变更实例安全组
- 数据库补丁升级
- 批量数据库补丁升级
- 创建冷数据存储
- 扩容冷数据存储
- 绑定/解绑弹性公网IP
- 切换实例SSL开关
- 重启实例或者节点
- 设置磁盘自动扩容策略
- 修改数据库端口
- 判断弱密码
- 修改副本集跨网段访问配置
- 删除扩容失败的节点
- 查询创建实例或扩容节点时需要的IP数量
- 查询磁盘自动扩容策略
- 变更实例存储容量
- 查询高危命令
- 修改高危命令
- 查询Redis实例的热key
- 设置Redis禁用命令
- 查询Redis禁用命令
- 删除Redis禁用命令
- 设置实例可维护时间段
- Redis主备切换
- 支持节点的开关机
- 查询GeminiDB Redis实例的大key
- 获取GeminiDB Redis的免密配置
- 支持修改GeminiDB Redis的免密配置
- 查询内存加速映射列表和详情
- 创建内存加速规则
- 解除内存加速映射
- 创建内存加速映射
- 修改内存加速规则
- 查询内存加速规则列表和详情
- 删除内存加速规则
- 开启/关闭实例数据导出
- 开启/关闭秒级监控
- 查询秒级监控配置
- 连接管理
- 备份与恢复
- 参数模板管理
- 管理数据库和账号
- 标签管理
- 日志管理
- 配额管理
- 容灾管理
- 任务管理
- 企业项目管理
- 实例负载均衡管理
- 历史API
- 权限策略和授权项
- 附录
- 视频帮助
- 通用参考
链接复制成功!
购买并连接GeminiDB兼容DynamoDB接口实例
本章节以Linux系统为例,介绍从购买到连接GeminiDB兼容DynamoDB接口实例的操作步骤和基础语法。
步骤一:购买GeminiDB兼容DynamoDB接口实例
- 登录管理控制台。
- 在服务列表中选择“数据库 > 云数据库 GeminiDB”。
- 在“实例管理”页面,单击“购买数据库实例”,进入“服务选型”页面。
- 在“购买数据库实例”页面,选择计费模式,填写并选择实例相关信息后,单击“立即购买”。
图1 基本信息图2 设置密码
- 查看购买成功的GeminiDB兼容DynamoDB接口实例。
图3 购买成功
步骤二:购买ECS
- 登录管理控制台。
- 在服务列表中选择“计算 > 弹性云服务器 ECS”,进入云服务器控制台,单击“购买弹性云服务器”。
- 配置基础信息后,单击“下一步:网络配置”。ECS与待连接的GeminiDB兼容DynamoDB接口实例的区域及可用区一致。ECS与待连接的GeminiDB兼容DynamoDB接口实例的区域、可用区、VPC和安全组一致。
图4 基础配置图5 选择规格图6 选择镜像
- 配置网络信息后,单击“下一步:高级配置”。ECS与待连接的GeminiDB兼容DynamoDB接口实例的VPC和安全组一致。
- 如果安全组规则允许弹性云服务器云主机访问,即可连接实例。
- 如果安全组规则不允许弹性云服务器云主机访问,需要在实例安全组添加一条“入”的访问规则。
图7 网络配置图8 选择弹性公网IP - 配置密码等信息后,单击“下一步:确认配置”。
图9 高级配置
- 确认配置信息后,单击“立即购买”。
图10 确认配置
- 查看购买成功的ECS。
步骤三:连接GeminiDB兼容DynamoDB接口实例
- 单击实例“基本信息”左侧导航中的“连接管理”,查看GeminiDB兼容DynamoDB接口实例的内网IP地址、绑定的弹性公网IP地址。
图11 查看IP地址
- 将下面代码示例中的IP替换为步骤1查到的IP。
Java样例如下:
package com.huawei.dbs.test; import com.huawei.dbs.RequestHandler; import com.amazonaws.SDKGlobalConfiguration; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.document.DynamoDB; import com.amazonaws.services.dynamodbv2.document.TableCollection; import java.net.URI; public class V1Demo { public static AWSCredentialsProvider myCredentials = new AWSStaticCredentialsProvider( new BasicAWSCredentials("your_ak", "your_sk")); public static String ip = "***.***.***.***"; public static void main(String[] args) { disableCertificateChecks(); AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard() .withRegion("region-a") .withRequestHandlers(new RequestHandler(URI.create("http://" + ip + "8000"))) .withCredentials(myCredentials) .build(); DynamoDB dynamoDB = new DynamoDB(client); TableCollection res = dynamoDB.listTables(); System.out.println(res); } }
步骤四:使用HTTPS方式连接实例(可选)
前提条件:
- 目标实例必须与弹性云服务器在同一个虚拟私有云和子网内才能访问。
- 弹性云服务器必须处于目标实例所属安全组允许访问的范围内,详情请参见配置节点安全组规则。
- GeminiDB实例开启SSL的功能,详情参见开启SSL,并下载证书。以Java应用为例,导入证书命令为:
keytool -importcert -alias hw -file ca.cert -keystore truststore.jks -storepass password
1. 出于业界兼容考虑,开启SSL后仍然可以使用HTTP的方式访问。在高安全性要求的场景下,客户可以通过修改配置项关闭HTTP方式访问,详情您可以在管理控制台右上角,选择“工单 > 新建工单”联系客服进行咨询。
2. HTTPS暂不支持弹性IP访问。
添加 Maven 依赖。在 pom.xml 中添加 AWS SDK for Java 2.x 相关的依赖。
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>dynamodb</artifactId>
<version>2.x.x</version>
</dependency>
</dependencies>
通过 DynamoDbClient 使用 HTTPS 连接GeminiDB兼容DynamoDB接口。
Java样例如下:
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.model.*;
public class SourceDemo {
// AK/SK凭证可以自动从环境变量home/.aws/credentials 文件获取
// 若 home/.aws/credentials 不存在,则需要手动指定AK/SK凭证;若 home/.aws/credentials 存在,则无需指定AK/SK凭证
public static AWSCredentialsProvider myCredentials = new AWSStaticCredentialsProvider(
new BasicAWSCredentials("your_ak", "your_sk"));
public static void main(String[] args) {
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("https://127.0.0.1:8000", "region_a"))
.withCredentials(myCredentials)
.build();
System.out.println(client.listTables());
CreateTableRequest request = new CreateTableRequest()
.withTableName("test_001")
.withProvisionedThroughput(new ProvisionedThroughput(1000L, 1000L))
.withKeySchema(
new KeySchemaElement("id", KeyType.HASH)
)
.withAttributeDefinitions(
new AttributeDefinition("id", ScalarAttributeType.N)
);
System.out.println(client.createTable(request));
}
}
由于GeminiDB兼容DynamoDB接口完全兼容DynamoDB接口,故最常用的操作请参考DynamoDB官方文档。
父主题: 最佳实践